簡體   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