AWS CLI を使用して、AWS Config が有効化されているリージョンを確認する方法を教えてください

2022.08.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

AWS Config を利用して AWS リソースの設定をモニタリングおよび記録してます。
しかし、AWS Config のベストプラクティス である全リージョンを有効化せず運用上やむを得ず、「有効化されているリージョン」「有効化されていないリージョン」があります。

マネジメントコンソール上で有効化するべき対象リージョンを定期的にリージョン毎、確認作業を実施していますが時間も掛かり、確認ミスがあるのではと常に懸念しています。

上記について何か良い簡単な確認方法はないでしょうか。

どう対応すればいいの?

AWS Config については以下の記載がございます。

AWS Config では、設定レコーダーを使用してリソースの設定変更を検出し、これらの変更を設定項目として取り込みます。AWS Config でリソースの設定を追跡する前に、設定レコーダーを作成する必要があります。
設定レコーダーを起動すると、AWS Config はアカウント内のすべての AWS リソースを点検します。

公式ドキュメント には、AWS Config の設定レコーダーを AWS CLI で確認する方法について以下の記載がございます。

AWS Config が記録を開始したことを確認する describe-configuration-recorder-status コマンドを使用して、アカウント内のサポートされている AWS リソースの設定の記録が AWS Config で開始されたことを確認します。
記録された設定は、指定した配信チャネルに配信されます。

true フィールドの値 recording は、設定レコーダーがすべてのリソースの設定を記録し始めたことを示します。AWS Config は時刻を UTC で記録します。出力は Unix timestamp として表示されます。

以上より、配信レコーダーの設定有無を確認するため、AWS CLI で "aws configservice describe-configuration-recorder-status" コマンドを利用すれば問題を解消できるかと思います。

実行コマンドの例
リージョンの指定については、こちらを参考に 適宜修正してコマンドを実行してください。

regionAry=(us-east-2 us-east-1 us-west-1 us-west-2 af-south-1 ap-east-1 ap-south-1 ap-northeast-3 ap-northeast-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 ca-central-1 cn-north-1 cn-northwest-1 eu-central-1 eu-west-1 eu-west-2 eu-south-1 eu-west-3 eu-north-1 me-south-1 sa-east-1)
for item in ${regionAry[@]}; do
     echo "=== $item ==="
     aws configservice describe-configuration-recorder-status  --region ${item}
done

AWS CLI コマンド実行結果(抜粋)

xxxxx@zzzzz:/mnt/c/Users/xxxxxxx.yyyyyyy$ regionAry=(us-east-2 us-east-1 us-west-1 us-west-2 af-south-1 ap-east-1 ap-south-1 ap-northeast-3 ap-northeast-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 ca-central-1 cn-north-1 cn-northwest-1 eu-central-1 eu-west-1 eu-west-2 eu-south-1 eu-west-3 eu-north-1 me-south-1 sa-east-1)
{rexxxxxxx@zzzzz:/mnt/c/Users/xxxxxxx.yyyyyyy$ for item in ${regionAry[@]}; do
cho "=>      echo "=== $item ==="
  aws>      aws configservice describe-configuration-recorder-status  --region ${item}
> done
=== us-east-2 ===
{
    "ConfigurationRecordersStatus": [
        {
            "name": "default",
            "lastStartTime": "2017-09-28T11:20:53.117000+09:00",
            "recording": true,
            "lastStatus": "SUCCESS",
            "lastStatusChangeTime": "2022-07-29T17:21:05.286000+09:00"
        }
    ]
}
=== us-east-1 ===
{
    "ConfigurationRecordersStatus": [
        {
            "name": "default",
            "lastStartTime": "2017-09-28T11:20:41.608000+09:00",
            "recording": true,
            "lastStatus": "SUCCESS",
            "lastStatusChangeTime": "2022-07-29T18:20:53.689000+09:00"
        }
    ]
}
=== us-west-1 ===
{
    "ConfigurationRecordersStatus": [
        {
            "name": "default",
            "lastStartTime": "2017-09-28T11:21:04.102000+09:00",
            "recording": true,
            "lastStatus": "SUCCESS",
            "lastStatusChangeTime": "2022-07-29T16:21:17.012000+09:00"
        }
    ]
}
=== us-west-2 ===
{
    "ConfigurationRecordersStatus": [
        {
            "name": "default",
            "lastStartTime": "2021-04-17T01:14:58.911000+09:00",
            "lastStopTime": "2021-04-30T17:41:36.630000+09:00",
            "recording": false,
            "lastStatus": "SUCCESS",
            "lastStatusChangeTime": "2021-04-30T16:41:37.918000+09:00"
        }
    ]
}

上記実行結果を基に、各リージョンの "recording" : "true" or "false" を確認することで、AWS Config 有効化の判断可能なのでお試しください。

なお、「AWS CLI を利用して、AWS Config の記録される対象リソースタイプをリージョン毎で確認する方法」についてはこちら を参考にしてください。

参考資料