我想将一个cloudformation堆栈的导出输出用作另一堆栈中的lambda的环境变量。
场景:
"${AWS::StackName}-myQueueUrl"
Type: AWS::Lambda::Function
Properties:
Environment:
Variables:
QUEUE_URL:
- Fn::ImportValue:
Fn::Sub: "${QueueStackParameter}-myQueueUrl"
但是这不可能,因为环境变量只能是字符串。
如何将一个cloudformation堆栈的导出输出用作另一堆栈中的lambda的环境变量,而又不会cloudformation抱怨env vars必须是字符串?
更新
当这样编写时,它确实起作用:
QUEUE_URL: !Join
- ''
- - "Fn::ImportValue":
"Fn::Sub": "${QueueStackParameter}-myQueueUrl"
但是,当使用普通的ImportValue
语法时,它不起作用:
QUEUE_URL:
- Fn::ImportValue:
Fn::Sub: "${QueueStackParameter}-myQueueUrl"
CloudFormation然后返回以下状态原因:
Value of property Variables must be an object with String (or simple type) properties
答案 0 :(得分:1)
一个替代想法是使用AWS Systems Manager参数存储在两个堆栈之间共享数据。在fib(1,0).
fib(2,1).
fib(X,Y):-X1 is X-1,fib(X1,Y1),X2 is X-2,fib(X2,Y2),Y is Y1+Y2.
中,添加一个带有可预测路径的QueueStack
,例如AWS::SSM::Parameter
:
/QueueStack/URL
然后,在您的Type: AWS::SSM::Parameter
Properties:
Type: String
Name: /QueueStack/URL
Value:
Ref: "MyQueue"
LambdaStack
中,您可以执行以下操作来引用它:
QUEUE_URL
这是此主题https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html
的参考链接答案 1 :(得分:0)
这不是一个数组,因此前面不应包含破折号。 当您这样编写时,它将起作用:
Type: AWS::Lambda::Function
Properties:
Environment:
Variables:
QUEUE_URL:
Fn::ImportValue:
Fn::Sub: "${QueueStackParameter}-myQueueUrl"