не получить все aws экземпляров с использованием python boto3 - проблема с резервированием - PullRequest
0 голосов
/ 28 мая 2020

Я написал сценарий python -boto3, чтобы получить список всех aws экземпляров из учетной записи и региона.

сценарий работает нормально, но не предоставляет все экземпляры.

например, если n экземпляров имеют одинаковый номер резервирования, тогда получается только один экземпляр в разделе «Резервирование».

пожалуйста, посмотрите на приведенный ниже скрипт, пожалуйста, помогите мне, как мне получить список всех aws экземпляров независимо от номера резервирования .

rg = 'us-west-2'
config = Config(
    retries = dict(
        max_attempts = 100
    )
)
ec = boto3.client('ec2', config=config, region_name=rg)

def get_tags():
    tag_list = []
    resp =  ec.describe_instances()['Reservations']
    #resp =  ec.describe_instances()
    #print(resp)
    tag_result = [['Name','InstanceId','State','t1:product','t1:environment-type','t1:environment-name']]
    for ec2 in resp:
    #for ec2 in resp["Reservation"]:
        #print(InstanceId)
        tag_list = []

1 Ответ

0 голосов
/ 28 мая 2020

Глядя на ваш код, не очевидно, что вы пытаетесь сделать, но вот код, который проходит через все экземпляры и показывает их теги:

import boto3

ec2_client = boto3.client('ec2')

response = ec2_client.describe_instances()

for reservation in response['Reservations']:
    for instance in reservation['Instances']:
        print(instance['InstanceId'])
        for tag in instance['Tags']:
            print(tag['Key'], tag['Value'])

Вот эквивалентный код с использованием boto3 метод ресурса:

import boto3

ec2_resource = boto3.resource('ec2')

for instance in ec2_resource.instances.all():
    print(instance.id)
    for tag in instance.tags:
        print(tag['Key'], tag['Value'])

Обратите внимание, что InstanceId и State являются доступными каталогами на объекте экземпляров. Это не теги.

...