0

看起来不可能让 Codedeploy 在带有 CodeBuild 的 CodePipeline 项目中工作。

首先,我设置了一个具有 3 个阶段的管道:Source、Build 和 Deploy,前 2 个阶段运行良好,但第 3 个阶段(CodeDeploy)抛出此错误: 在此处输入图像描述

CodeBuild 将输出项目推送到 .zip 文件中的 s3,CodeDeploy 不支持这种方式。

为此,我尝试在 CodeBuild 和 CodeDeploy 之间设置一个 Lambda 函数,如下所示:(Source -> CodeBuild -> Invoke Lambda -> CodeDeploy),Lambda 函数将 appspec.yml 文件上传到 s3 并调用 putJobSuccessResult,但我仍然得到同样的错误。

4

1 回答 1

0

BundleType 必须是 YAML 或 JSON

目前尚不支持使用 CodePipeline 和 CodeDeploy 作为部署提供程序部署 Lambda 的已知限制。

这是因为 CodePipeline 将始终压缩包/工件,而 CodeDeploy 需要一个 YAML/JSON 文件作为 Lambda 函数部署的源(appspec.yaml 文件)。

为了解决此限制,您有两种选择:

  1. 在您的 CodeBuild Stage 内运行 AWS CLI 命令以更新/部署您的 lambda 函数

或者

  1. 使用 CodeBuild 打包您的 lambda 函数代码并将工件推送到 CloudFormation 阶段,该阶段将更新或创建您的 Lambda 函数资源。您应该在 [1] 中找到参考文档,这些文档对于获取有关打包 SAM 应用程序的必要信息很有用。

参考:

[1] SAM 包装 - https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-deploying.html#serverless-sam-cli-using-package-and-deploy

于 2020-01-16T10:56:49.010 回答