在Python中打印所有匹配的JSON字典

时间:2016-08-26 16:34:31

标签: python json amazon-web-services amazon-ec2 boto3

我目前正在使用AWS Boto3来尝试获取所有当前正在运行的EC2实例的列表。我正处于能够使用describe_instances列出我所有实例的地步,但我正在试图弄清楚如何提取所有实例ID,以便我可以打印它们并将它们用于脚本的另一部分。最终,我有一个脚本可以旋转所有实例,接下来我想要一个将它们全部撕下来的脚本。

JSON Tree轰鸣声。

要选择一个特定的,我必须这样做,

instance_id = response['Reservations'][0]['Instances'][0]['InstanceId']

但我希望能够选择所有实例,无论我有多少实例,所以尝试[0] [1]等是不可行的,所以不确定我怎么说我想要每一个命令中的InstanceId。

{
    u'Reservations': [
        {
            u'Groups': [

            ],
            u'Instances': [
                {
                    u'AmiLaunchIndex': 0,
                    u'Architecture': 'i386',
                    u'EbsOptimized': False,
                    u'Hypervisor': 'xen',
                    u'InstanceId': 'i-6fb4ad61',
                }
            ],
            u'OwnerId': '',
            u'ReservationId': ''
        },
        {
            u'Groups': [

            ],
            u'Instances': [
                {
                    u'AmiLaunchIndex': 0,
                    u'Architecture': 'i386',
                    u'EbsOptimized': False,
                    u'Hypervisor': 'xen',
                    u'InstanceId': 'i-afe3faa1',
                }
            ],
            u'OwnerId': '',
            u'ReservationId': ''
        }
    ],
    'ResponseMetadata': {
        'HTTPHeaders': {
            'content-type': 'text/xml;charset=UTF-8',
            'date': 'Thu, 25Aug201623: 44: 09GMT',
            'server': 'AmazonEC2',
            'transfer-encoding': 'chunked',
            'vary': 'Accept-Encoding'
        },
        'HTTPStatusCode': 200,
        'RequestId': ''
    }
}

这是我用来获取实例ID的命令。

launch_instance = ec2.create_instances(ImageId="xxxxxx", MinCount=1, MaxCount=1,SecurityGroupIds=["sg-xxxxxxx"],InstanceType='m3.medium', SubnetId='subnet-xxxxx')


response = ec2client.describe_instances(
    InstanceIds=[
        launch_instance[0].id],
)

instance_id = response['Reservations'][0]['Instances'][0]['InstanceId']

print instance_id

输出是i-6fb4ad61

2 个答案:

答案 0 :(得分:2)

你可以通过以下方式实现:

>>> instance_ids = [instance['InstanceId'] for reservations in response['Reservations'] for instance in reservations['Instances']]
>>> instance_ids
['i-6fb4ad61', 'i-afe3faa1']

您的JSON结构保存为response

答案 1 :(得分:2)

试试这个

/auth/facebook