簡體   English   中英

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

[英]Print all matching JSON dictionaries in Python

我目前正在使用AWS Boto3嘗試獲取所有當前正在運行的EC2實例的列表。 我現在可以使用describe_instances列出所有實例,但是我試圖找出如何提取所有實例ID的方法,以便我可以打印它們並將它們用於腳本的另一部分。 最終,我有一個腳本可以啟動所有實例,接下來,我需要一個可以將它們全部拆除的腳本。

JSON樹波紋管。

要選擇一個特定的,我必須這樣做,

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

但是我希望能夠選擇所有實例,而不管我有多少實例,因此嘗試執行[0] [1]等是不可行的,因此不確定我將如何說我想要每個實例ID。在命令中。

{
    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

您可以通過以下方式實現:

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

JSON結構保存為response

嘗試這個

instance_ids = []
for reservations in response['Reservations']:
    for instance in reservations['Instances']:
        instance_ids.append(instance['InstanceId'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM