我正在尝试在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文件中定义
答案 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'