AWS CloudFormation - 创建使用层的层版本和函数

AWS CloudFormation - 创建使用层的层版本和函数

我有一个 Cloudformation 模板,目前大致如下所示。

Resources:
  MyLayer:
    Type: AWS::Lambda::LayerVersion
    Properties:
      CompatibleRuntimes:
        - nodejs12.x
        - nodejs10.x
      Content: ../layers/nodejs/
      LayerName: myLayer
      ### etc...
  MyLambda:
    Type: AWS::Lambda::Function
    DependsOn: MyLayer
    Properties:
      Code: lambdas/my-lambda.js
      Description: A lambda that makes use of MyLayer
      FunctionName: myLambda
      Handler: my-lambda.handler
      Layers: !Ref CommonLayer
      ### etc... 

这里的核心思想是我想创建一个新的 LayerVersion,并让 Lambda 在每次部署时更新到这个最新的 LayerVersion。我无法将 MyLayer 的 Arn 插入到 MyLambda 的 Layer 属性中。以下是我尝试过的方法:

  1. 我看到的 !Ref CommonLayer 根据此返回 ArnCloudFormation 备忘单。在创建 MyLambda 时创建堆栈时出现故障(输出显示 MyLayer 已成功创建),提示:“属性 Layers 的值必须是字符串列表类型”

  2. !GetAtt CommonLayer.Arn 但是该函数不支持 Layers/返回值没有 Arn 字段。

这是 YAML 语法类型问题吗?还是我的目标是创建一个 Layer,然后创建一个依赖于该 Layer 的 Lambda,这在一个 Cloudformation 模板中不可能实现?谢谢!

答案1

属性 Layers 的值必须是字符串列表类型

图层必须是列表。您必须更换:

  MyLambda:
    Properties:
      Layers: !Ref CommonLayer

有了这个:

  MyLambda:
    Properties:
      Layers:
      - !Ref CommonLayer

希望有帮助:)

相关内容