2017-06-30 11 views
1

私のnodejsラムダのaws codebuildプロセスにzipアーティファクトを作成したい - ラムダ関数がこのzipファイルをS3のソースとして使用できるように、 gitのと管理のためのGitHubのレポでcodebuildに問題を作成するノードを介してzipファイルを作成するlambda

私のファイル構造をIDをコミット私はジップでフォルダずにzipファイルをしたいラムダプロジェクト(私たちはラムダでnodejsプロジェクトのためにあることを必要とするが、nodejsのために今

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

です)ので、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 

答えて

3

残念ながら捨て-パスは、この場合には動作しないでしょう。最適なオプションは、ビルドロジック(buildspec.yml)の一部として必要なファイルを新しいフォルダにコピーし、そのフォルダを成果物セクションに指定することです。ここにサンプルのビルドスペックファイル

post_build: 
    commands: 
     - mkdir build-output 
     - cp -R folder/myfile.js node_modules/ build-output 
artifacts: 
    files: 
    - build-output/**/* 
+0

ありがとう、私は別の方向に考えていた! –

関連する問題