我想通过 aws codebuild 过程为我的 nodejs lambda 创建一个 zip 工件 - 以便 lambda 函数可以将此 zip 文件用作 S3 中的源,并且我们有一个部署“证明”,用于在 codebuild 中使用 git commit id 进行管理
我在 github-repo 中的文件结构是
folder1
- myfile.js
- otherfile.js
folder2
- otherfiles.js
package.json
现在对于nodejs lambda项目,我想要没有zip文件夹的zip文件(对于lambda中的nodejs项目,我们需要它)所以zip应该直接包含以下文件
- myfile.js
- node_module ==> folder from codebuild via npm install command
问题:
1) S3 中的输出 zip 包含在文件夹中,即 .zip->rootfolder->myfile.js 而不是我们需要 .zip->myfiles.js 这对 lambda 不可用,因为对于 nodejs 它应该在根 zip 中有文件而不是在里面它们(文件夹内没有相对路径)
2) 路径 - 如您所见,myfile.js 位于文件夹内他们两个 - 我可以只为 myfile.js 而不是为 node_module 文件夹设置丢弃路径吗?我当前的 yaml 文件:
artifacts:
files:
- folder/myfile.js
- node_modules/**/*
discard-paths: yes
如果有人可以为此提供解决方案,那就太好了?
如果解决方案不包含更改 github-repo 文件夹结构,那就太好了,我也想在该 repo 中对其他文件重复此操作,以创建其他 lambda 函数。
编辑:
我在下面使用了 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