AWS:Lambda 的 CodeDeploy 无法读取 appspec

AWS: CodeDeploy for Lambda can't read appspec

我正在尝试设置 CodePipeline 来管理一个非常简单的 Lambda 函数的部署。

我完全被部署步骤的问题困住了,无法弄清楚哪里出了问题。

当管道尝试 运行 CodeDeploy 操作时,失败并显示错误...

BundleType must be either YAML or JSON

这是我的应用规格...

version: 0.0
Resources:
  - my-function:
      Type: AWS::Lambda::Function
      Properties:
        Name: "my-function"

我的管道没有构建步骤,因为它只是一个简单的 js 文件,没有依赖项,因此不需要构建。

我尝试添加一个部署到 S3 的操作,我可以确认发送到 s3 的 zip 文件包含 appspec.yml 和 index.js,并且它们都在根.

我见过的大多数示例都使用构建规范,但我不确定为什么需要这个,或者如果我有一个它会做什么。

您的设置没有问题,您不能在 CodePipeline 操作中使用 CodeDeploy 来部署 Lambda 函数,这是服务的一个缺点。

原因是因为 CodeDeploy 需要 JSON 或 YAML appspec 文件用于 Lambda 部署,但目前 CodePipeline 支持 ZIP 作为捆绑类型,因此会引发错误。

要解决此问题,客户在 CodePipeline 中部署 Lambda 是通过 CloudFormation 部署操作(确切地说是 SAM)。请参阅此推荐方法的教程: