Создайте список экземпляров EC2 в каждом регионе, используя python - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь перебрать все регионы в каждой из наших учетных записей AWS и создать список экземпляров ec2 в каждом регионе.

Я использую этот цикл:

import boto3
aws_account = input("Enter the name of the AWS account you'll be working in: ")
session = boto3.Session(profile_name=aws_account)
ec2 = session.client("ec2")
aws_regions = ec2.describe_regions()
for region in aws_regions['Regions']:
    region_name = region['RegionName']
    print("Searching in region: ", region_name)

Но каждый раз в цикле я всегда получаю список экземпляров в моем регионе по умолчанию, который называется Вирджиния (us-east-1), повторяется снова и снова.

Что меня смущает, так это то, что нет никакого фильтра региона, который я мог бы применить к функции description_instances () в boto3.

Как я могу пройтись по регионам и получить список экземпляров ТОЛЬКО из этого региона?

1 Ответ

2 голосов
/ 12 марта 2019

При создании объекта клиента. Он связан только с одним регионом.

ec2 = session.client("ec2")

Это задокументировано здесь в Boto3,

region_name (строка) - название региона, связанного с клиент. Клиент связан с одним регионом.

Именно поэтому ваш цикл будет печатать только us-east-1 (по умолчанию), связанный с этой учетной записью.

Кроме того, поскольку все время оно будет ассоциироваться с одним регионом, нет смысла предоставлять фильтр для описывающих экземпляров.

Чтобы решить вашу проблему, я полагаю, что вы должны выполнять циклы в сеансах и клиентах (по одному для каждого региона)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...