首页 > 解决方案 > Cloudformation:同时使用 Fn::Join 和 Fn:GetAtt

问题描述

我正在尝试在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."

我已经尝试了几种使用括号的变体,但是不断收到相同的错误。我在语法中缺少什么?

PS我在一个yaml文件中定义这个

标签: amazon-web-servicesaws-lambdaamazon-cloudformation

解决方案


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

也许其中之一会更好?

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

或者

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

推荐阅读