繁体   English   中英

如何在 AWS Lambda 中加载 AWS Cloudformation 的 Output?

[英]How Can I Load The Output of AWS Cloudformation In AWS Lambda?

嗨,我有一个 cloudformation 堆栈,它创建了几个 ec2 实例。 我计划在这些 ec2 实例中使用 aws lambda 到 ssh 来管理它们。

我需要为我的aws lambda function 提供这些ec2 实例的ip 地址。 我需要删除堆栈并重新运行以进行测试。 因此,每次我重新运行 cloudformation 堆栈时,实例的 ip 地址都不同。 我无法将这些 ip 地址硬编码或设置为我的 aws lambda function 的环境变量。

堆栈的名称将相同。 我将cloudformation堆栈设置为output每个ec2实例的ip地址。 因此,我想我可以使用堆栈名称作为参考,让我的 aws lambda function 访问和加载它的 output 来实现这个目标。

我发现了一个类似的帖子: AWS lambda read parameter or outputs from CloudFormation这么说。

但他只描述了“授予您的 Lambda function cloudformation:DescribeStacks 权限以读取您的 CloudFormation 堆栈的输出并在运行时在您的代码中加载此 output”。

有人可以为我提供有关如何加载 aws lambda 的更具体步骤吗? 我找不到任何关于此的 aws 文档,所以有人可以帮助我吗?

非常感谢!

您将使用DescribeStacks() ,它将返回所有堆栈的列表。 例如,如果使用 Python 它将是describe_stacks()

返回信息中包含每个堆栈的Outputs列表。 您可以从那里获得您想要的信息。

它会是这样的:

import boto3

cf_client = boto3.client('cloudformation')

response = cf_client.describe_stacks(StackName='foo')

for output in response['Stacks'][0]['Outputs']:
    print(output['OutputKey'], output['OutputValue'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM