AWS:CodeDeploy for Lambda 无法读取应用程序规范

use*_*825 1 aws-lambda aws-codepipeline aws-codebuild

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

我完全陷入了部署步骤的问题,无法弄清楚可能出了什么问题。

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

BundleType must be either YAML or JSON

这是我的应用程序规范...

version: 0.0
Resources:
  - my-function:
      Type: AWS::Lambda::Function
      Properties:
        Name: "my-function"
Run Code Online (Sandbox Code Playgroud)

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

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

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

sha*_*aws 7

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

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

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