如何在 cloudformation yml 中获取最新的 lambda 版本?

Bir*_*sky 8 amazon-web-services amazon-cloudfront aws-cloudformation serverless-framework

我正在尝试在 cloudformation 中为 cloudfront 分布引用边缘 lambda

我现在拥有的是:

          LambdaFunctionARN:
            Fn::GetAtt: [BasicAuthLambdaFunction,Arn]
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

发生错误:GGGCloudFrontDistribution - 函数 ARN 必须引用特定的函数版本。(ARN 必须以版本号结尾。)

那么..是否有某种技术可以引用该功能的最新版本?

kic*_*hik 8

您不能使用最新版本。您必须使用特定版本,因为您链接的文档指出:

您必须指定函数版本的 ARN;您不能指定 Lambda 别名或 $LATEST。

如果您在模板中创建 Lambda 函数,您还可以创建一个版本并使用它。

  BasicAuthLambdaFunctionVersion: 
    Type: "AWS::Lambda::Version"
    Properties:
      FunctionName:
        Ref: BasicAuthLambdaFunction
# ...
      LambdaFunctionARN:
        Fn::GetAtt: [BasicAuthLambdaFunctionVersion,Arn]
Run Code Online (Sandbox Code Playgroud)

请注意,在更新堆栈时,Lambda 函数代码更改时不会创建新版本。您必须通过更改BasicAuthLambdaFunctionVersiontoBasicAuthLambdaFunctionVersion2或其他名称来手动创建和使用新版本。要自动执行此操作,您可以在使用模板之前使用脚本对其进行编辑。

如果您使用的是无服务器框架,请查看:

https://github.com/silvermine/serverless-plugin-cloudfront-lambda-edge https://github.com/serverless/serverless/issues/3944

  • 我不得不添加 .. LambdaFunctionARN: !Join [':', [!GetAtt LambdaEdge.Arn, !GetAtt LambdaEdgeVersion.Version]] (3认同)