AWS CLI を利用して、AWS Config の記録される対象リソースタイプをリージョン毎で確認する方法を教えてください

2022.08.04

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

困っていた内容

各リージョンで使用する AWS サービスが異なっています。
そのような背景があり、AWS Config では記録するリソースタイプの選択がリージョン毎に異なっています。
「このリージョンでサポートされているすべてのリソースを記録します」「特定のリソースタイプを記録する」のどちらかを選択)

各リージョンのマネジメントコンソール上で記録される対象リソースタイプのチェック作業をすると、時間も掛かり確認ミスがあるのではと不安になります。

以下は確認方法の例

上記について、作業が簡単になり確認ミスが無いようにする良い方法はないでしょうか。

どう対応すればいいの?

AWS CLI 2.7.20 Command Reference には、AWS Config の記録される対象リソースタイプを確認するAWS CLI コマンドについて記載がございます。

Returns the details for the specified configuration recorders. If the configuration recorder is not specified, this action returns the details for all configuration recorders associated with the account.

Command Reference を参考に、記録されている対象リソースタイプを確認するには、AWS CLI で "aws configservice describe-configuration-recorders" コマンドを利用すれば解消できるかと思います。

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

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

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

xxxxx@zzzzz:/mnt/c/Users/xxxxxxx.yyyyyyy$ regionAry=(us-west-1 us-west-2 us-east-1 us-east-2 ca-central-1 eu-west-1 eu-central-1 eu-west-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 ap-northeast-2 ap-south-1 sa-east-1)
n ${xxxxx@zzzzz:/mnt/c/Users/12345.67890$ for item in ${regionAry[@]}; do
>      echo "=== $item ==="
    aws >      aws configservice describe-configuration-recorders   --region ${item}
one> done
=== us-west-1 ===
{
    "ConfigurationRecorders": [
        {
            "name": "default",
            "roleARN": "arn:aws:iam::0987654321:role/cm-config-role-all-regions",
            "recordingGroup": {
                "allSupported": false,
                "includeGlobalResourceTypes": false,
                "resourceTypes": [
                    "AWS::EC2::CustomerGateway",
                    "AWS::EC2::EIP",
                    "AWS::EC2::Host",
                    "AWS::EC2::InternetGateway",
                    "AWS::EC2::NetworkAcl",
                    "AWS::EC2::RouteTable",
                    "AWS::EC2::SecurityGroup",
                    "AWS::EC2::Subnet",
                    "AWS::CloudTrail::Trail",
                    "AWS::EC2::VPC",
                    "AWS::EC2::VPNConnection",
                    "AWS::EC2::VPNGateway",
                    "AWS::IAM::Group",
                    "AWS::IAM::Policy",
                    "AWS::IAM::Role",
                    "AWS::IAM::User",
                    "AWS::ACM::Certificate",
                    "AWS::RDS::DBInstance",
                    "AWS::RDS::DBSubnetGroup",
                    "AWS::RDS::DBSecurityGroup",
                    "AWS::RDS::EventSubscription",
                    "AWS::ElasticLoadBalancingV2::LoadBalancer",
                    "AWS::S3::Bucket",
                    "AWS::Redshift::Cluster",
                    "AWS::Redshift::ClusterParameterGroup",
                    "AWS::Redshift::ClusterSecurityGroup",
                    "AWS::Redshift::ClusterSubnetGroup",
                    "AWS::Redshift::EventSubscription",
                    "AWS::CloudWatch::Alarm",
                    "AWS::CloudFormation::Stack"
                ]
            }
        }
    ]
}
=== us-west-2 ===
{
    "ConfigurationRecorders": [
        {
            "name": "default",
            "roleARN": "arn:aws:iam::0987654321:role/cm-config-role-all-regions",
            "recordingGroup": {
                "allSupported": false,
                "includeGlobalResourceTypes": false,
                "resourceTypes": [
                    "AWS::EC2::Instance",
                    "AWS::RDS::DBClusterSnapshot",
                    "AWS::RDS::DBInstance",
                    "AWS::RDS::DBSnapshot",
                    "AWS::SSM::ManagedInstanceInventory",
                    "AWS::RDS::DBCluster"
                ]
            }
        }
    ]
}
=== us-east-1 ===
{
    "ConfigurationRecorders": [
        {
            "name": "default",
            "roleARN": "arn:aws:iam::0987654321:role/cm-config-role-all-regions",
            "recordingGroup": {
                "allSupported": true,
                "includeGlobalResourceTypes": true,
                "resourceTypes": []
            }
        }
    ]
}
=== us-east-2 ===
{
    "ConfigurationRecorders": [
        {
            "name": "default",
            "roleARN": "arn:aws:iam::0987654321:role/cm-config-role-all-regions",
            "recordingGroup": {
                "allSupported": false,
                "includeGlobalResourceTypes": false,
                "resourceTypes": [
                    "AWS::EC2::CustomerGateway",
                    "AWS::EC2::EIP",
                    "AWS::EC2::Host",
                    "AWS::EC2::InternetGateway",
                    "AWS::EC2::NetworkAcl",
                    "AWS::EC2::RouteTable",
                    "AWS::EC2::SecurityGroup",
                    "AWS::EC2::Subnet",
                    "AWS::CloudTrail::Trail",
                    "AWS::EC2::VPC",
                    "AWS::EC2::VPNConnection",
                    "AWS::EC2::VPNGateway",
                    "AWS::IAM::Group",
                    "AWS::IAM::Policy",
                    "AWS::IAM::Role",
                    "AWS::IAM::User",
                    "AWS::ACM::Certificate",
                    "AWS::RDS::DBInstance",
                    "AWS::RDS::DBSubnetGroup",
                    "AWS::RDS::DBSecurityGroup",
                    "AWS::RDS::EventSubscription",
                    "AWS::ElasticLoadBalancingV2::LoadBalancer",
                    "AWS::S3::Bucket",
                    "AWS::Redshift::Cluster",
                    "AWS::Redshift::ClusterParameterGroup",
                    "AWS::Redshift::ClusterSecurityGroup",
                    "AWS::Redshift::ClusterSubnetGroup",
                    "AWS::Redshift::EventSubscription",
                    "AWS::CloudWatch::Alarm",
                    "AWS::CloudFormation::Stack"
                ]
            }
        }
    ]
}

上記の AWS CLI コマンド実行結果を基に、AWS Config で記録される対象のリソースタイプをリージョン毎で確認可能なのでお試しください。
なお、「AWS CLI を使用して、AWS Config が有効化されているリージョンを確認する方法」についてはこちら を参考にしてください。

補足

us-east-1 では記録するリソースタイプが「このリージョンでサポートされているすべてのリソースを記録します」を選択されており、グローバルリソース (AWS IAM リソースなど) を含めるにチェックが入っているので、"allSupported""includeGlobalResourceTypes" 共に true と表示されています。
この場合は対象のリソースタイプは表示されません。

参考資料