
AWSアカウントで作成されたリソースを発見します。
これは、アカウント内で作成されたすべての AWSリソース を発見しようとするツールです。AWSには多くのプロダクト(別名サービス)があり、新しいものは常に追加され、既存のものは新機能で拡張されています。このエコシステムにより、ユーザーはさまざまなサービスを組み合わせて、カスタマイズされたクラウド体験を構築できます。大規模にサービスを即座に立ち上げられる能力には、管理容易性のコストが伴います。使用中のリソースについてAWSアカウントを監査することが、すぐに難しくなる可能性があります。これは課金目的だけでなく、セキュリティにとっても重要です。休眠リソースや不明なリソースは、セキュリティ設定の弱点が生じやすくなります。さらに、予期しない依存関係を持つリソースは、可用性、アクセス制御、認可の問題を引き起こします。
このツールは botocore を使用して AWSサービス と、それらが実行される リージョン を発見します。また、サービスAPIの呼び出しにも使用されます。呼び出されるAPIは、リソースを一覧表示または記述するためのものです。結果はJSON形式で標準出力に出力できます。また、複数のファイルに書き込むこともできます:
まず、Python2.7をインストールします。
進捗を表示するための小さなGUIがあり、標準のPython Tkinter モジュールを使用します。ただし、Tcl/Tkの基盤となるネイティブライブラリコードのインストールには追加の手順が必要な場合があります。次に、
pip install -r requirements.txt
Pythonインストーラーを使用して Tkinter/Tcl/Tk をインストールします。
OSのパッケージマネージャーを使用します:
sudo apt-get install python-tk
スクリプトはパラメータなしで実行できます。シェル環境、インスタンスメタデータ、設定ファイル、認証情報ファイルの順にAWS認証情報を検索します。コマンドラインで、認証情報を含むCSVファイルを指定することもできます。AWS管理ポリシー ViewOnlyAccess のような権限を持つユーザーが必要です。運試しをしたいなら、ツールの出力を jq のようなJSONパーサーにパイプするだけでも構いません。
各リージョンの各サービスに対して呼び出すオペレーションに制限を設けない場合、ツールの完了には長い時間(数十分)がかかる可能性があります。サービスとリージョンによるフィルタリングはコマンドラインで行え、サービスオペレーションによるフィルタリングは設定ファイルを介して行えます。事前設定済みの ファイル が作成され、リポジトリにチェックインされています。これはデフォルトで使用されます。
コマンドライン出力のほかに、React の シングルページアプリケーション でローカルに結果を表示できます。Webサーバーは不要です。ブラウザで HTMLファイル を開き、求められたら生成されたJSONファイルを選択するだけです。
このアプリは jsTree を使用して、データを階層的なツリー構造で表示します。検索機能もあります。
注: APIを呼び出す際、例外を発生させた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

