Как получить все ресурсы 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, прежде чем опробовать их в коде.

Другие вопросы по тегам