boto3:如何获取CloudFormation堆栈实例的IP地址?

Tra*_*ear 3 boto amazon-web-services aws-cloudformation boto3

我需要发现 AWS CloudFormation 堆栈中每个主机的私有 IP 地址。

CloudFormation API(请参阅http://boto3.readthedocs.io/en/latest/reference/services/cloudformation.html)似乎没有任何直接支持提取给定堆栈ID的节点。有可能吗?

hel*_*loV 5

是的,这是可能的,但并不简单。

  1. 获取您的帐户/个人资料中的堆栈列表
  2. 循环遍历列表并创建堆栈名称列表
  3. 获取每个堆栈(名称)的堆栈资源(describe_stack_resources)
  4. 找到资源 ['LogicalResourceId'] == 'Ec2Instance' 的资源
  5. 从该资源获取 inst_id
  6. 获得 inst_id 后,您可以使用 boto3.resource('ec2') 获取其属性,包括 private_ip

我已经对此进行了编码并定期使用它。如果调用过于频繁,AWS 可能会限制您的 CF 调用。