在 AWS CodePipeline for NodeJS 应用程序中部署阶段失败
Posted
技术标签:
【中文标题】在 AWS CodePipeline for NodeJS 应用程序中部署阶段失败【英文标题】:Deploy stage failing in AWS CodePipeline for NodeJS app 【发布时间】:2021-08-07 23:52:14 【问题描述】:这是我第一次使用 AWS CodePipeline(实际上是 CI/CD),我在将 NodeJS/Express 应用程序部署到 Elastic Beanstalk 时遇到了问题。
我设置了一个包含三个步骤的管道:
-
来自我的 GitHub 存储库
使用 CodeBuild 构建
部署到 ElasticBeanstalk
我的 Source 和 Build 阶段已成功完成,但部署步骤失败并显示以下消息:
操作失败,因为工件或 Amazon S3 存储桶 找不到。工件桶名称: codepipeline-us-east-1-[long-string-of-numbers]。验证这 桶存在。如果存在,检查生命周期策略,然后尝试 发布更改。
我已验证 S3 存储桶存在,并且上面没有生命周期策略。
我还检查了附加到正在使用的服务角色的策略,它具有完整的 S3 访问权限。
部署阶段具有以下设置:
操作名称:部署 动作提供者:Elastic Beanstalk 地区:美国东部(弗吉尼亚北部) 输入工件:BuildArtifact 应用程序名称和环境名称是我的 Elastic Beanstalk 设置的适当值 变量命名空间:DeployVariables我已确认构建阶段的输出工件名称是“BuildArtifact”,它与我的部署阶段的输入工件匹配。
管道中最初没有构建步骤,并且之前使用的是不同的 S3 存储桶:elasticbeanstalk-us-east-1-[long-string-of-numbers],不确定这是否是一个因素与否。
知道如何让这个部署工作吗?
【问题讨论】:
【参考方案1】:我想我明白了。
我意识到我没有在 CodeBuild 中设置工件。为了解决,我去了CodeBuild,进入我的BuildProject,从“Edit”菜单中选择“Artifacts”,并填写了相应的数据。
然后,在我的 nodejs 项目的 buildspec.yaml 中,我添加了以下内容: 文物: 文件: - '**/*'
【讨论】:
以上是关于在 AWS CodePipeline for NodeJS 应用程序中部署阶段失败的主要内容,如果未能解决你的问题,请参考以下文章
使用 AWS CDK 在 AWS Codepipeline 中部署 Python Lambda 函数
AWS CodeBuild + CodePipeline:“找不到匹配的工件路径”
AWS CodePipeline - 使用现有 Dockerrun.aws.json 部署到 Elastic Beanstalk