gpt4 book ai didi

node.js - 通过 aws codebuild 为 nodejs lambda 创建 zip 文件的问题

转载 作者:搜寻专家 更新时间:2023-10-31 22:23:27 26 4
gpt4 key购买 nike

我想通过 aws codebuild 过程为我的 nodejs lambda 创建一个 zip 工件 - 这样 lambda 函数就可以在 S3 中使用这个 zip 文件作为源,并且我们有一个部署“证明”用于在 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对于 nodejs,lambda 不能使用它,它应该在根 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

最佳答案

不幸的是,丢弃路径在这种情况下不起作用。最好的选择是将必要的文件作为构建逻辑 (buildspec.yml) 的一部分复制到一个新文件夹,并在工件部分指定该文件夹。这是一个示例构建规范文件

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

关于node.js - 通过 aws codebuild 为 nodejs lambda 创建 zip 文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44853819/

26 4 0
文章推荐: node.js - 使用环回在url中获取参数的远程方法
文章推荐: html - 是否使用 li 比 DIV 的页面性能更好?
文章推荐: html - 如何制作基于
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com