AWS Config advanced queyのスキーマ定義の記載場所と使い方をまとめる

AWS Config advanced queyで指定できるスキーマ定義 (カラム名/propertiesの一覧) がある場所と使い方をメモします。

はじめに

おはよう。@bioerrorlogです。

AWS Config advanced queyは、AWS上のリソース状況をクエリベースで簡単に調べられる便利なサービスです。

クエリのテンプレートも豊富に用意されていて、例えば「ステータスが'ACTIVE'のDynamoDBテーブル」を調べるクエリがすぐに実行できたりします(下図)。

f:id:BioErrorLog:20210904113349p:plain


用意されたクエリテンプレートをそのまま使うならこれでよいのですが、自分でクエリを書きたいとなるとスキーマ定義(カラム定義/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のブログからリンクを辿って初めて見つけたものです。 (本当はドキュメントのどこかに記載があるのかもしれませんが、私は見つけられませんでした...)

どなたかの参考になれば幸いです。

[関連記事]

www.bioerrorlog.work

www.bioerrorlog.work

www.bioerrorlog.work

参考

GitHub - awslabs/aws-config-resource-schema: AWS Config resource schema define the properties and types of AWS Config resource configuration items (CIs). Resource CI schema are used by developers when performing advanced resource queries and when processing CI data.

Querying the Current Configuration State of AWS Resources - AWS Config

Query your resource configuration state using the advanced query feature of AWS Config | AWS Management & Governance Blog