Amazon web services Cloudformation:同时使用Fn::Join和Fn:GetAtt
我试图在Amazon web services Cloudformation:同时使用Fn::Join和Fn:GetAtt,amazon-web-services,aws-lambda,amazon-cloudformation,Amazon Web Services,Aws Lambda,Amazon Cloudformation,我试图在Type:AWS::Lambda::EventSourceMapping的一个属性中定义值 下面是我的代码片段(最新尝试): 但是,我的云形成堆栈无法部署,出现以下错误: “StatusReason”:“模板错误:每个Fn::Join对象都需要两个参数,(1)字符串分隔符,(2)要连接的字符串列表或返回要连接的字符串列表(如Fn::GetAZs)的函数。” 我已经尝试了几个括号的变化,但不断得到相同的错误。我在语法中遗漏了什么 另外,我在yaml文件中定义了这一点,我的第一个问题是La
Type:AWS::Lambda::EventSourceMapping的一个属性中定义值
下面是我的代码片段(最新尝试):
但是,我的云形成堆栈无法部署,出现以下错误:
“StatusReason”:“模板错误:每个Fn::Join对象都需要两个参数,(1)字符串分隔符,(2)要连接的字符串列表或返回要连接的字符串列表(如Fn::GetAZs)的函数。”
我已经尝试了几个括号的变化,但不断得到相同的错误。我在语法中遗漏了什么
另外,我在yaml文件中定义了这一点,我的第一个问题是LambdaName是否引用了可以与GetAtt一起使用以提供ARN的内容。否则,它可能只是一个格式问题。我不确定AWS CFN是否能够读取用于包装Fn::GetAtt
的嵌入式花括号
也许其中一个会更好用
FunctionName:
Fn::Join:
- ':'
- - Fn::GetAtt:
- LambdaName
- Arn
- "live"
或
LambdaSourceMapping:
类型:AWS::Lambda::EventSourceMapping
特性:
启用:“真”
EventSourceArn:或
函数名:
Fn::加入:
- ':'
--Fn::GetAtt:
-羔羊名
-阿恩
-“活着”
LambdaName
只是一个占位符。它实际上引用了lambda。我相信我在第二个备选方案中就尝试过了,但之前对我来说没有效果。无论如何,使用第二种替代方法使用您的语法是有效的。谢谢太棒了,很高兴能帮上忙
FunctionName:
Fn::Join:
- ':'
- - Fn::GetAtt:
- LambdaName
- Arn
- "live"
FunctionName: !Join [':', [!GetAtt LambdaName.Arn, 'live]]
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'