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)。请参阅此推荐方法的教程:
我正在尝试设置 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)。请参阅此推荐方法的教程: