
Обнаруживайте ресурсы, созданные в учетной записи AWS.
Это инструмент, который пытается обнаружить все ресурсы AWS, созданные в аккаунте. У AWS много продуктов (также называемых сервисами), постоянно добавляются новые, а существующие расширяются новыми функциями. Экосистема позволяет пользователям комбинировать множество различных сервисов для создания индивидуального облачного окружения. Возможность мгновенно разворачивать сервисы в масштабе имеет свою цену с точки зрения управляемости. Проверка аккаунта AWS на предмет используемых ресурсов может быстро стать затруднительной. Это важно не только для выставления счетов, но и для безопасности. Неиспользуемые и неизвестные ресурсы более подвержены слабостям конфигурации безопасности. Кроме того, ресурсы с неожиданными зависимостями создают проблемы доступности, контроля доступа и авторизации.
Он использует botocore для обнаружения сервисов AWS и регионов, в которых они работают. Он также используется для вызова сервисных API. Вызываются те API, которые должны перечислять или описывать ресурсы. Результаты могут быть выведены в stdout в формате JSON. Они также могут быть записаны в несколько файлов:
Сначала установите Python2.7.
Существует небольшой GUI для отображения прогресса, использующий стандартный модуль Python Tkinter. Однако базовая нативная библиотека Tcl/Tk может потребовать дополнительных действий по установке. Затем,
pip install -r requirements.txt
Используйте установщик Python для установки Tkinter/Tcl/Tk.
Используйте менеджер пакетов вашей ОС:
sudo apt-get install python-tk
Вы можете запустить скрипт без каких-либо параметров. Он будет искать ваши учётные данные AWS в окружении оболочки, метаданных экземпляра, конфигурационном файле, а затем в файле учётных данных. Вы также можете указать CSV-файл с вашими учётными данными в командной строке. Вам понадобится пользователь с разрешениями, аналогичными управляемой политике AWS ViewOnlyAccess. Если вы чувствуете себя везунчиком, можете просто передать вывод инструмента в JSON-парсер, например jq.
Инструмент может выполняться долго (десятки минут), если не ограничивать, какие операции вызывать для каждого сервиса в каждом регионе. Фильтрацию по сервису и региону можно выполнить в командной строке, а фильтрацию по операциям сервиса — через конфигурационный файл. В репозиторий был добавлен предварительно настроенный файл. Он будет использоваться по умолчанию.
Помимо вывода в командной строке, вы можете просматривать результаты локально в React одностраничном приложении. Веб-сервер не нужен. Просто откройте HTML-файл в браузере и при появлении запроса выберите созданный JSON-файл.
Приложение использует jsTree для отображения данных в иерархической древовидной структуре. Также есть функция поиска.
ПРИМЕЧАНИЕ: При вызове API те, которые вызывают исключение, не используются повторно независимо от региона. Известные причины исключений:
$ python aws_inventory.py
$ python aws_inventory.py --list-svcs
acm
apigateway
application-autoscaling
appstream
autoscaling
batch
budgets
clouddirectory
cloudformation
cloudfront
.
.
.
$ python aws_inventory.py --list-operations
[shield]
DescribeSubscription
ListAttacks
ListProtections
[datapipeline]
ListPipelines
[firehose]
ListDeliveryStreams
.
.
.
[glacier]
# NONE
[stepfunctions]
ListActivities
ListStateMachines
Total operations to invoke: 4045
$ python aws_inventory.py --debug --dry-run

