AWS SAM - 'Encountered unsupported property CodeUri' 部署打包模板时出错

AWS SAM - 'Encountered unsupported property CodeUri' error when deploying packaged template

将 CloudFormation 模板迁移到 AWS SAM 方法后,部署使用 aws cloudformation package 创建的模板时,在 CloudFormation 中出现错误

Encountered unsupported property CodeUri

模板中包含的所有 Lambda 函数。

经查,很明显打包后的模板没有去掉CodeUri 属性,AWS::Lambda::Function类型不支持CodeUri 属性,尽管适当的资源作为打包过程的一部分上传到 S3(因此打包工作)。

AWS SAM 不删除 CodeUri 的原因是资源类型不正确 - 它应该是 AWS::Serverless::Function 而不是 AWS::Lambda::Function.

此更改后,CodeUri 已从打包模板中删除。

您只需使用 CodeS3BucketS3Key 键以正确的格式设置函数文件的路径:

Function:
  Type: 'AWS::Lambda::Function'
  Properties
    //other properties
    Code:
      S3Bucket: bucketName
      S3Key: myFunction.jar

文档:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-code

在我的例子中,我正在使用现有资源(导入资源)创建一个堆栈,并且 AWS::Serverless::Function 类型及其 CodeUri 不受支持。