7

aws codebuild プロセスを通じて nodejs ラムダの zip アーティファクトを作成したい - ラムダ関数がこの zip ファイルを S3 のソースとして使用できるようにし、codebuild で git コミット ID を使用して管理するための展開「証明」を用意します。

github-repo の私のファイル構造は

folder1
   - myfile.js
   - otherfile.js
folder2
   - otherfiles.js
package.json

今nodejsラムダプロジェクトの場合、zip内のフォルダーなしでzipファイルが必要です(ラムダ内のnodejsプロジェクトに必要です)ので、zipには次のファイルが直接含まれている必要があります

- myfile.js
- node_module ==> folder from codebuild via npm install command 

問題:

1) S3 の出力 zip は、.zip->rootfolder->myfile.js というフォルダーに含まれています。.zip->myfiles.js を必要とするのではなく、これはラムダでは使用できません。nodejs の場合、内部ではなくルート zip にファイルが必要です。それら(フォルダー内の相対パスなし)

2) パス - ご覧のとおり、myfile.js はフォルダー内にあります。相対パスを省略したいのですが、パスの破棄を試みましたが、破棄パスが適用されるため、すべての node_module ファイルがフォルダーではなくフォルダー内にあるという問題があります。両方 - node_module フォルダーではなく、myfile.js に対してのみ破棄パスを設定できますか?? 私の現在のyamlファイル:

artifacts:
  files:
    - folder/myfile.js
    - node_modules/**/*
  discard-paths: yes 

誰かがこれに対する解決策を提供できれば素晴らしいでしょうか?

ソリューションに github-repo フォルダー構造の変更が含まれていない場合は素晴らしいと思います。他のラムダ関数を作成するために、そのリポジトリ内の他のファイルについてもこれを繰り返したいと思います。

編集:

以下のyamlファイルを使用しましたが、@awsnitinの回答の後、すべてが正常に機能しています

version: 0.2

phases:
  build:
    commands:
      - echo Build started on `date`
      - npm install
  post_build:
    commands:
      - echo Running post_build commands
      - mkdir build-output
      - cp -R folder1/myfile.js build-output
      - mkdir -p build-output/node_modules
      - cp -R node_modules/* build-output/node_modules
      - cd build-output/
      - zip -qr build-output.zip ./*
      - mv build-output.zip ../
      - echo Build completed on `date`
artifacts:
  files:
    - build-output.zip
4

2 に答える 2