gpt4 book ai didi

amazon-web-services - 使用一个堆栈的输出作为具有 SAM 或 Cloudformation 的其他堆栈中 lambda 的环境变量

转载 作者:行者123 更新时间:2023-12-04 10:57:13 26 4
gpt4 key购买 nike

我想使用一个 cloudformation 堆栈的导出输出作为另一堆栈中 lambda 的环境变量。

场景:

  • Stack1:QueueStack - 包含 sqs 队列“myQueue”。堆栈导出queueUrl 的输出:"${AWS::StackName}-myQueueUrl"
  • Stack2:LambdaStack - 包含将某些内容放入此队列的 lambda 函数。 lambda 函数有一个 env。变量“QUEUE_URL”应包含队列的 url。我想动态使用QueueStack输出的Url。类似这样的东西:
   Type: AWS::Lambda::Function
Properties:
Environment:
Variables:
QUEUE_URL:
- Fn::ImportValue:
Fn::Sub: "${QueueStackParameter}-myQueueUrl"

但是这是不可能的,因为环境变量只能是字符串。

如何使用一个 cloudformation 堆栈的导出输出作为另一堆栈中 lambda 的环境变量,而 cloudformation 不会提示环境变量必须是字符串?

更新

当这样写时,它确实有效:

  QUEUE_URL: !Join
- ''
- - "Fn::ImportValue":
"Fn::Sub": "${QueueStackParameter}-myQueueUrl"

但是,当使用正常的 ImportValue 语法时,它不起作用:

  QUEUE_URL:
- Fn::ImportValue:
Fn::Sub: "${QueueStackParameter}-myQueueUrl"

CloudFormation 然后返回以下状态原因:属性变量的值必须是具有字符串(或简单类型)属性的对象

最佳答案

另一种想法是使用 AWS Systems Manager Parameter Store 在两个堆栈之间共享数据。在 QueueStack 中,添加一个以可预测路径命名的 AWS::SSM::Parameter,例如/QueueStack/URL:

Type: AWS::SSM::Parameter
Properties:
Type: String
Name: /QueueStack/URL
Value:
Ref: "MyQueue"

然后,在您的 LambdaStack 中的 QUEUE_URL 中,您可以执行以下操作来引用它:

   Type: AWS::Lambda::Function
Properties:
Environment:
Variables:
QUEUE_URL: '{{resolve:ssm:/QueueStack/URL:1}}'

这是有关此主题的引用链接 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html

关于amazon-web-services - 使用一个堆栈的输出作为具有 SAM 或 Cloudformation 的其他堆栈中 lambda 的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59100262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com