AWS Config advanced queyで指定できるスキーマ定義 (カラム名/propertiesの一覧) がある場所と、使い方をまとめます。
はじめに
こんにちは、@bioerrorlogです。
AWS Config advanced queyは、AWS上のリソース状況をクエリベースで簡単に調べられる便利なサービスです。
クエリのテンプレートも豊富に用意されていて、例えば「ステータスが'ACTIVE'のDynamoDBテーブル」を調べるクエリがすぐに実行できたりします(下図)。
用意されたクエリテンプレートをそのまま使うならこれでよいのですが、自分でクエリを書きたいとなるとスキーマ定義(カラム定義/properties)を知る必要があります。
が、ドキュメント等を漁ってもこのスキーマ定義が見当たりませんでした。
今回はこのAWS Config advanced queyで使えるスキーマ定義の場所と使い方をメモします。
AWS Config advanced queyのスキーマ定義はどこにあるのか
場所
AWSのGitHubリポジトリにありました。 github.com
└── config ├── properties │ ├── AWS.properties.json │ └── resource-types │ ├── AWS::ACM::Certificate.properties.json │ ├── AWS::AutoScaling::AutoScalingGroup.properties.json ... ...
リソースごとのスキーマ定義はresource-types
配下に、全てのリソースのスキーマ定義がマージされたものがAWS.properties.json
に記載されています。
各jsonファイルxxx.properties.json
にはスキーマ定義(カラム名とデータ型)が記載されています。
{ "...": "...", "sample.property.name": "string", "...": "...", }
使用例
AWS::S3::Bucketのスキーマ定義をもとに、リージョンap-northeast-1
、タグOwner=user-1
のバケット名(resourceId
)一覧を取得するクエリ例を示します。
・AWS::S3::Bucketのスキーマ定義:
{ "...": "...", "awsRegion": "string", "...": "...", "resourceId": "string", "...": "...", "resourceType": "string", "...": "...", "tags.tag": "string", "...": "...", }
・クエリ:
SELECT resourceId WHERE resourceType = 'AWS::S3::Bucket' AND awsRegion = 'ap-northeast-1' AND tags.tag = 'Owner=user-1'
上記のクエリをAWS Config advanced queyで実行すると、該当のバケット名一覧が取得できます。
おわりに
以上、AWS Config advanced queyで指定できるスキーマ定義の記載場所と使い方をまとめました。
スキーマ定義の記載場所はドキュメントからは見つけることが出来ず、AWSのブログからリンクを辿って初めて見つけたものです。 (本当はドキュメントのどこかに記載があるのかもしれませんが、私は見つけられませんでした...)
どなたかの参考になれば幸いです。
[関連記事]
参考
Querying the Current Configuration State of AWS Resources - AWS Config