Есть ли способ вывести список всех ресурсов в AWS? Для всех регионов, все ресурсы .. Например, перечислить все экземпляры EC2, все VPC, все API в API Gateway и т. Д. Я хотел бы перечислить все ресурсы для моей учетной записи, так как мне трудно найти, какие ресурсы я могу отказаться сейчас.

Lakin Lu

Ответов: 22

Ответы (22)

Изменить: этот ответ устарел и неверен. Есть несколько способов перечислить ресурсы AWS (редактор тегов AWS и т. Д.). Проверять другие ответы для более подробной информации.


Каждый сервис AWS (например, Amazon EC2, Amazon S3) имеет собственный набор вызовов API. Кроме того, каждая Регион независима.

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

Возможно, вы захотите активировать AWS Config:

AWS Config предоставляет подробный обзор конфигурации ресурсов AWS в вашей учетной записи AWS. Это включает в себя то, как ресурсы связаны друг с другом и как они были настроены в прошлом, чтобы вы могли видеть, как конфигурации и отношения меняются с течением времени.

Однако AWS Config собирает информацию только о ресурсах, связанных с EC2 / VPC, а не обо всей информации в вашей учетной записи AWS.

Вы можете запускать расширенные запросы через AWS Config (и из интерфейса командной строки для Config), в котором будут перечислены все ресурсы. Если вы определите агрегатор, который охватывает все причины (и, возможно, несколько учетных записей), вы можете получить очень полное представление. . . Просто "ВЫБРАТЬ *"

Другой вариант - использовать этот сценарий, который выполняет «aws configservice list -formed-resources --resource-type» для каждого ресурса

for i in  AWS::EC2::CustomerGateway AWS::EC2::EIP AWS::EC2::Host AWS::EC2::Instance AWS::EC2::InternetGateway AWS::EC2::NetworkAcl AWS::EC2::NetworkInterface AWS::EC2::RouteTable AWS::EC2::SecurityGroup AWS::EC2::Subnet AWS::CloudTrail::Trail AWS::EC2::Volume AWS::EC2::VPC AWS::EC2::VPNConnection AWS::EC2::VPNGateway AWS::IAM::Group AWS::IAM::Policy AWS::IAM::Role AWS::IAM::User AWS::ACM::Certificate AWS::RDS::DBInstance AWS::RDS::DBSubnetGroup AWS::RDS::DBSecurityGroup AWS::RDS::DBSnapshot AWS::RDS::EventSubscription AWS::ElasticLoadBalancingV2::LoadBalancer AWS::S3::Bucket AWS::SSM::ManagedInstanceInventory AWS::Redshift::Cluster AWS::Redshift::ClusterSnapshot AWS::Redshift::ClusterParameterGroup AWS::Redshift::ClusterSecurityGroup  AWS::Redshift::ClusterSubnetGroup AWS::Redshift::EventSubscription AWS::CloudWatch::Alarm AWS::CloudFormation::Stack AWS::DynamoDB::Table AWS::AutoScaling::AutoScalingGroup AWS::AutoScaling::LaunchConfiguration AWS::AutoScaling::ScalingPolicy AWS::AutoScaling::ScheduledAction AWS::CodeBuild::Project AWS::WAF::RateBasedRule AWS::WAF::Rule AWS::WAF::WebACL AWS::WAFRegional::RateBasedRule AWS::WAFRegional::Rule AWS::WAFRegional::WebACL AWS::CloudFront::Distribution  AWS::CloudFront::StreamingDistribution AWS::WAF::RuleGroup AWS::WAFRegional::RuleGroup AWS::Lambda::Function AWS::ElasticBeanstalk::Application AWS::ElasticBeanstalk::ApplicationVersion AWS::ElasticBeanstalk::Environment AWS::ElasticLoadBalancing::LoadBalancer AWS::XRay::EncryptionConfig AWS::SSM::AssociationCompliance AWS::SSM::PatchCompliance AWS::Shield::Protection AWS::ShieldRegional::Protection AWS::Config::ResourceCompliance AWS::CodePipeline::Pipeline; do aws configservice list-discovered-resources --resource-type $i; done

Я бы выбрал для этого «редактор тегов» в «группах ресурсов», как предлагает Ашвини.

Вы можете легко перечислить все ресурсы во всех регионах без какой-либо настройки и т. Д.
И хотя это включает все VPC по умолчанию + группы безопасности и т. Д. (Так что вы получите ~ 140 элементов, даже если ваша учетная запись пуста), вы все равно можете довольно легко отфильтровать это, либо в редакторе тегов, либо экспортировать в CSV и фильтровать в Например, Excel.

Вот хорошая статья, в которой перечислены инструменты для перечисления ресурсов в облаке AWS. https://link.medium.com/tZbs8eLyohb

Среди них CloudYali https://www.cloudyali.io - недавно запущенный сервис. Он показывает все облачные ресурсы из разных учетных записей, регионов, как из настоящего, так и из прошлого, доступные в одном центральном месте.

Инструменты, предоставляемые AWS, бесполезны, потому что они не являются исчерпывающими.

В моем собственном поиске решения этой проблемы и получения списка всех моих ресурсов AWS я обнаружил следующее: https://github.com/JohannesEbke/aws_list_all

Я еще не тестировал, но выглядит нормально.

Я знаю, что это старый вопрос, но я тоже хотел бы помочь.

На самом деле у нас есть AWS Config, которые помогают нам искать все ресурсы в нашем облаке. Вы также можете выполнять SQL-запросы.

Я действительно призываю всех вас узнать об этом замечательном сервисе.

Да.

У меня была та же проблема, я пытался выяснить, что именно происходит в моей учетной записи AWS.

В конце концов, я написал AWSRetriver, настольный инструмент для вывода списка ресурсов AWS во всех регионах.

Это простой и понятный инструмент, который перечисляет все ... (надеюсь) AWS Resources

Попробуйте это

Только для ec2:

from skew import scan

    arn = scan('arn:aws:ec2:us-west-2:123456789012:instance/i-12345678')
    for resource in arn:
        print(resource.data)

Для всех ресурсов:

arn = scan('arn:aws:*:*:<>:instance*')
for resource in arn:
    print(resource.data)

Ссылка: https://github.com/scopely-devops/skew

Да. Используйте редактор тегов .

Установите «Регионы» на «Все регионы», «Типы ресурсов» на «Все поддерживаемые типы ресурсов» и затем нажмите «Поиск ресурсов».

The AWS Billing Management Console will give you a Month-to-Date Spend by Service rundown.

РЕДАКТИРОВАТЬ: этот ответ устарел. Проверьте другие ответы.

Нет,
Невозможно получить все ресурсы в вашей учетной записи за один раз. Каждый регион независим, и для некоторых сервисов, таких как IAM, понятие региона вообще не существует. Хотя для перечисления ресурсов и сервисов доступны вызовы API.
Например:

  • Чтобы получить список всех доступных регионов для вашей учетной записи:

    вывод, err: = client.DescribeRegions (& ec2.DescribeRegionsInput {})
    

  • Чтобы получить список пользователей, ролей или групп IAM, вы можете использовать:

    client.GetAccountAuthorizationDetails (& iam.GetAccountAuthorizationDetailsInput {})

    Более подробную информацию о вызовах API и их использовании можно найти по адресу: https://docs.aws.amazon.com/sdk-for-go/api/service/iam/

    Выше ссылка только для IAM. Точно так же вы можете найти API для всех других ресурсов и сервисов.

  • Я также ищу аналогичную функцию «перечислить все ресурсы» в AWS, но не могу найти ничего подходящего.

    «Группы ресурсов» не помогают, потому что они перечисляют только ресурсы, которые были помечены, и пользователь должен указать этот тег. Если вы пропустили пометку ресурса, он не появится в «Группы ресурсов».

    Пользовательский интерфейс «Создать группу ресурсов»

    Более подходящей функцией является «Группы ресурсов» -> «Редактор тегов», как уже упоминалось в предыдущем посте. Выберите регионы и типы ресурсов, чтобы просмотреть список ресурсов в редакторе тегов. Это служит цели, но не очень удобно, потому что мне нужно вводить регион и тип ресурса каждый раз, когда я хочу его использовать. Я все еще ищу простой в использовании интерфейс.

    Пользовательский интерфейс «Найти ресурс» в «Редакторе тегов»

    Здесь можно использовать запрос в консоли AWS Config. (Регион может измениться для вас) https://console.aws.amazon.com/config/home?region=us-east-1#/ resources / query

    запрос будет выглядеть так.

    SELECT
      resourceId,
      resourceName,
      resourceType,
      relationships
    WHERE
    relationships.resourceId = 'vpc-#######'
    

    Вы можете использовать Редактор тегов.

    1. Перейти в Консоль AWS
    2. В верхней панели навигации щелкните Группы ресурсов Раскрывающийся список
    3. Щелкните Редактор тегов AWS list all resources across all regions

    Здесь мы можем выбрать либо конкретный регион, в котором мы хотим искать, либо выбрать все регионы из раскрывающегося списка. Затем мы можем выбрать фактические ресурсы, которые мы хотим найти, или мы также можем щелкнуть по отдельным ресурсам.

    enter image description here

    Уже поздно, но ты должен взглянуть на это. Я не знаю CLI, но все же стоит просто выпустить небольшой сценарий оболочки, чтобы делать то, что вам нужно:

    https://pypi.org/project/aws-list-all/

    Это библиотека Python, которая своими словами:

    "Описание проекта Список всех ресурсов в аккаунте AWS, всех регионов, всех сервисов (*). Записывает файлы JSON для дальнейшей обработки.

    (*) Нет гарантий полноты. Если вас беспокоят расходы, используйте оповещения о выставлении счетов. "

    Используйте PacBot (Policy as Code Bot) - проект с открытым исходным кодом, который представляет собой платформу для непрерывного мониторинга соответствия, отчетности о соответствии и автоматизации безопасности для облако. PacBot обнаруживает все ресурсы во всех учетных записях и во всех регионах, а затем оценивает их соответствие этим политикам.

    Также доступны функции Omni Search, дающие возможность искать все обнаруженные ресурсы. Вы даже можете прекратить / удалять ресурсы через PacBot.

    Всенаправленный поиск

    Omni Search

    Страница результатов поиска с фильтрацией результатов

    Search Results Page With Results filtering

    Актив 360 / Страница сведений об активе

    Asset 360 / Asset Details Page

    Вот основные возможности PacBot:

    • Постоянная оценка соответствия.
    • Подробный отчет о соответствии.
    • Автоматическое исправление нарушений политики.
    • Omni Search - Возможность поиска по всем обнаруженным ресурсам.
    • Упрощенное отслеживание нарушений правил.
    • Портал самообслуживания.
    • Пользовательские политики и пользовательские действия для автоматического исправления.
    • Динамическая группировка объектов для просмотра соответствия.
    • Возможность создания нескольких доменов соответствия.
    • Управление исключениями.
    • Электронные дайджесты.
    • Поддерживает несколько учетных записей AWS.
    • Полностью автоматический установщик.
    • Настраиваемые информационные панели.
    • Поддержка OAuth2.
    • Интеграция с Azure AD для входа.
    • Ролевой контроль доступа.
    • Актив на 360 градусов.

    Другой инструмент с открытым исходным кодом для этого - Cloud Query. https://docs.cloudquery.io/

    Думаю, это поможет! Здесь вам нужно ввести название региона и настроить AWS CLI перед тем, как попробовать это.

    aws resourcegroupstaggingapi get-resources --region region_name
    

    Он перечислит все ресурсы в регионе в следующем формате.

    - ResourceARN: arn:aws:cloudformation:eu-west-1:5524534535:stack/auction-services-dev/*******************************
      Tags:
      - Key: STAGE
        Value: dev
    - ResourceARN: arn:aws:cloudformation:eu-west-1:********************
    Tags:
    -- More  --
    

    Да. Используйте редактор тегов.

    Установите «Регионы» на «Все регионы», «Типы ресурсов» на «Все поддерживаемые типы ресурсов» и затем нажмите «Поиск ресурсов».

    Для этого есть платформа управления облаком. Он позволяет пользователям управлять несколькими учетными записями AWS с единой панели управления, а также обеспечивает управление AWS Inventory. Бесплатно: https://cloudplexo.com.

    Amazon постоянно пытается улучшить пользовательский интерфейс. Однако есть и другие способы проверить ресурсы, которые вы используете в AWS. Я считаю, что эта новая приборная панель EC2 довольно крутая. Щелкнув ссылку, вы перейдете непосредственно к панели управления конкретным ресурсом.

    enter image description here

    2022 WebDevInsider