Cloudformation:一起使用Fn :: Join和Fn:GetAtt

时间:2019-12-16 03:58:50

标签: amazon-web-services aws-lambda amazon-cloudformation

我正在尝试在Type: AWS::Lambda::EventSourceMapping的属性之一中定义值 以下是我的代码段(最新尝试):

FunctionName: #trigger the echo function previously defined
        "Fn::Join": [":", [{"Fn::GetAtt" : ["LambdaName", "Arn"]}, "live" ]]

我的云形成堆栈无法部署,并出现以下错误:

"StatusReason": "Template error: every Fn::Join object requires two parameters, (1) a string delimiter and (2) a list of strings to be joined or a function that returns a list of strings (such as Fn::GetAZs) to be joined."

我尝试了使用括号的几种变体,但是仍然遇到相同的错误。我在语法中缺少什么?

P.S。我在yaml文件中定义

2 个答案:

答案 0 :(得分:1)

我的第一个问题是LambdaName是否引用可以与GetAtt一起使用以提供ARN的内容。否则,可能只是格式问题。我不确定AWS CFN是否可以读取用于包裹Fn::GetAtt的嵌入式大括号。

也许其中之一会更好?

FunctionName:
  Fn::Join:
    - ':'
    - - Fn::GetAtt:
          - LambdaName
          - Arn
      - "live"

FunctionName: !Join [':', [!GetAtt LambdaName.Arn, 'live]]

答案 1 :(得分:0)

LambdaSourceMapping:
  Type: AWS::Lambda::EventSourceMapping
  Properties:
    Enabled: 'true'
    EventSourceArn: <SQS ARN> or <Kinesis ARN> or <DynamoDb ARN>
    FunctionName:
      Fn::Join:
      - ':'
      - - Fn::GetAtt:
          - LambdaName
          - Arn
        - 'live'