Как получить все ресурсы aws во всех регионах в лямбда-функции с помощью boto3 lib
Я пытаюсь регистрировать все мои ресурсы aws во всех регионах (с несколькими учетными записями), используя boto3 lib.
Я обнаружил, что конфигурация aws полезна.
Я уже создал агрегатор
ConfigurationAggregator:
Type: 'AWS::Config::ConfigurationAggregator'
Properties:
AccountAggregationSources:
- AccountIds: !Ref AccountIds
AllAwsRegions: !Ref AllAwsRegions
ConfigurationAggregatorName: MyAggregator
И я просмотрел документы boto3 lib для конфигурации aws https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/config.html
Но для этого требуются различные ОБЯЗАТЕЛЬНЫЕ параметры, такие как идентификатор ресурса, идентификатор учетной записи региона, тип ресурса.
Это самый простой API-интерфейс boto3, в котором мне не нужно передавать ничего, кроме имени агрегатора, а взамен я получаю список всех и всяческих ресурсов aws во всех регионах.
Меня не беспокоит, соответствует ли ресурс требованиям или нет, я просто хочу регистрировать каждый ресурс за один раз.
2 ответа
Решение заключалось в том, чтобы создать агрегатор с несколькими акк / несколькими регионами и использовать это имя агрегатора в функции агрегирования ниже.
nextToken = ""
res = []
while (nextToken != None):
data = client.list_aggregate_discovered_resources(ConfigurationAggregatorName=AWS_AGG_NAME, ResourceType=tp, Limit=AGG_LIMIT, NextToken=nextToken)
do_your_logic_with_resource(rc)
res = res + data['ResourceIdentifiers']
nextToken = data['NextToken'] if 'NextToken' in data else None
return res
Я думаю, что select_aggregate_resource_config - это то, что вам нужно. Примером запроса может быть:SELECT resourceId, resourceName, resourceType
. Вы можете поиграть с расширенными запросами в веб-консоли AWS, прежде чем опробовать их в коде.