使用Python Boto3从Cloudformation输出中获取KeyValue

3
我正在尝试使用Boto3从Cloudformation堆栈输出中打印出实例的私有IP地址。这应该是一个相当简单的过程。然而,我的代码就是无法工作。
describe_stacks响应的输出部分如下:
{'OutputKey': 'EC2IP', 'OutputValue': '192.168.10.10', 'Description': 'Web Server IP Address'},
{'OutputKey': 'ImageID', 'OutputValue': 'ami-0888888888888', 'Description': 'Web Server Image ID'}

我已经测试了下面的代码,它没有输出任何内容。
import boto3
cf_client = boto3.client('cloudformation')
stackname = 'test-instance-stack'

response = cf_client.describe_stacks(StackName=stackname)
outputs = response["Stacks"][0]["Outputs"]
   for output in outputs:
        keyName = output["OutputKey"]
        if keyName is "EC2IP":
            print(output["OutputValue"])

尽管我尝试

print(keyName)

它会打印出 EC2IPImageID。在这种情况下,keyName 应该匹配 EC2IP 并打印出 IP 地址。但是我却什么都没有收到...


这里是一个关于 ==is 的区别解释。**==** 运算符比较两个操作数的值并检查是否相等。而 is 运算符则检查两个操作数是否引用同一对象。 - Tomking Chen
1个回答

3

改为:

if keyName is "EC2IP":

使用:

if keyName == "EC2IP":

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接