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

lea*_*hru 4 amazon-web-services aws-cloudformation aws-lambda

我试图在Type: AWS::Lambda::EventSourceMapping 下面的属性之一中定义值是我的片段(最新尝试):

FunctionName: #trigger the echo function previously defined
        "Fn::Join": [":", [{"Fn::GetAtt" : ["LambdaName", "Arn"]}, "live" ]]
Run Code Online (Sandbox Code Playgroud)

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

"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."

我已经尝试了几个带有括号的变体,但是一直出现相同的错误。我在语法中缺少什么?

PS我在yaml文件中定义这个

Dan*_*elC 6

我的第一个问题是 LambdaName 是否引用了可与 GetAtt 一起使用以提供 ARN 的内容。否则,它可能只是格式问题。我不确定 AWS CFN 是否可以读取您用来包装Fn::GetAtt.

也许其中之一会更好?

FunctionName:
  Fn::Join:
    - ':'
    - - Fn::GetAtt:
          - LambdaName
          - Arn
      - "live"
Run Code Online (Sandbox Code Playgroud)

或者

FunctionName: !Join [':', [!GetAtt LambdaName.Arn, 'live]]
Run Code Online (Sandbox Code Playgroud)