
Entdecken Sie Ressourcen, die in einem AWS-Konto erstellt wurden.
Dieses Tool versucht, alle AWS-Ressourcen zu entdecken, die in einem Account erstellt wurden. AWS hat viele Produkte (auch bekannt als Dienste), wobei ständig neue hinzukommen und bestehende um neue Funktionen erweitert werden. Das Ökosystem ermöglicht es Benutzern, viele verschiedene Dienste zu einem individuellen Cloud-Erlebnis zusammenzusetzen. Die Möglichkeit, Dienste sofort in großem Umfang zu starten, hat ihren Preis in Bezug auf die Verwaltbarkeit. Es kann schnell schwierig werden, einen AWS-Account im Hinblick auf die verwendeten Ressourcen zu prüfen. Das ist nicht nur für Abrechnungszwecke wichtig, sondern auch für die Sicherheit. Ungenutzte und unbekannte Ressourcen sind anfälliger für Schwachstellen in der Sicherheitskonfiguration. Darüber hinaus können Ressourcen mit unerwarteten Abhängigkeiten Probleme bei Verfügbarkeit, Zugriffskontrolle und Autorisierung verursachen.
Es verwendet botocore, um AWS-Dienste und die Regionen zu ermitteln, in denen sie ausgeführt werden. Es wird auch zum Aufrufen der Service-APIs verwendet. Die aufgerufenen APIs sind diejenigen, die Ressourcen auflisten oder beschreiben sollen. Die Ergebnisse können im JSON-Format auf stdout ausgegeben werden. Sie können auch auf mehrere Dateien verteilt geschrieben werden:
Installieren Sie zuerst Python2.7.
Es gibt eine kleine GUI zur Anzeige des Fortschritts, die das standardmäßige Python-Modul Tkinter verwendet. Der zugrunde liegende native Bibliothekscode für Tcl/Tk muss jedoch möglicherweise in zusätzlichen Schritten installiert werden. Danach:
pip install -r requirements.txt
Verwenden Sie den Python-Installer, um Tkinter/Tcl/Tk zu installieren.
Verwenden Sie den Paketmanager Ihres Betriebssystems:
sudo apt-get install python-tk
Sie können das Skript ohne Parameter ausführen. Es sucht nach Ihren AWS-Zugangsdaten in Ihrer Shell-Umgebung, den Instanzmetadaten, der Konfigurationsdatei und dann in der Datei mit den Anmeldeinformationen. Sie können auch eine CSV-Datei mit Ihren Zugangsdaten in der Befehlszeile angeben. Sie benötigen einen Benutzer, der über Berechtigungen ähnlich der AWS-verwalteten Richtlinie ViewOnlyAccess verfügt. Wenn Sie sich abenteuerlustig fühlen, können Sie die Ausgabe des Tools einfach an einen JSON-Parser wie jq weiterleiten.
Das Tool kann sehr lange dauern (mehrere Dutzend Minuten), wenn keine Einschränkungen festgelegt werden, welche Operationen für jeden Dienst in jeder Region aufgerufen werden sollen. Die Filterung nach Dienst und Region kann über die Befehlszeile erfolgen, während die Filterung nach Dienstoperation über eine Konfigurationsdatei erfolgen kann. Eine vorkonfigurierte Datei wurde erstellt und in das Repository eingecheckt. Sie wird standardmäßig verwendet.
Neben der Befehlszeilenausgabe können Sie die Ergebnisse lokal in einer React-Single-Page-App anzeigen. Es ist kein Webserver erforderlich. Öffnen Sie einfach die HTML-Datei in einem Browser und wählen Sie die erzeugte JSON-Datei aus, wenn Sie dazu aufgefordert werden.
Die App verwendet jsTree, um die Daten in einer hierarchischen, baumartigen Struktur darzustellen. Es gibt außerdem eine Suchfunktion.
HINWEIS: Beim Aufrufen von APIs werden diejenigen, die eine Ausnahme auslösen, unabhängig von der Region nicht erneut verwendet. Bekannte Ursachen für Ausnahmen sind:
$ 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

