集約されたリソースまたはアカウントリソースを使用して、AWS Config アドバンストクエリの制限があるエラーを解決するにはどうすればよいですか?
解決方法
アドバンストクエリを使用するユースケースでは、次の回避策を使用します。
注: アドバンストクエリを使用するには、SelectResourceConfig および SelectAggregateResourceConfig API のアクセス許可が必要です。詳細については、「SQL エディタ (コンソール) を使用したクエリ」をご参照ください。
Amazon EC2 インスタンスのオペレーティングシステムのバージョン
アドバンストクエリでは、すべての AWS リージョンで Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで実行されているすべてのオペレーティングシステムのリストを取得できません。OS を確認するには、「EC2 インスタンスが使用している OS プラットフォームまたはバージョンを確認するにはどうすればよいですか?」をご参照ください。
削除されたリソースを照会する
削除されたリソースに対してアドバンストクエリを使用することはできません。削除されたリソースを検索するには、「AWS Config によって検出されたリソースの検索」をご参照ください。
Amazon S3 クエリ
パブリックアクセスがブロックされている場合、アドバンストクエリでは、Amazon Simple Storage Service (Amazon S3) バケットの結果を取得できません。これは、AWS Config リソースタイプ AWS::S3::AccountPublicAccessBlock が、Amazon S3 ブロックパブリックアクセスがアカウントレベルで有効になっている場合にのみ結果を返すためです。次のようなクエリを使用して、SQL クエリを使用して S3 バケットの名前と属性を返すことができます。
SELECT
resourceId,
resourceType,
configuration,
supplementaryConfiguration
WHERE
resourceType = 'AWS::S3::Bucket'
SQL Null 値
アドバンストクエリでは、SQL の Null 値はサポートされていません。明示的に値を含める必要があります。
次のような SQL BETWEEN 演算子の使用に関連付けられたパブリック IP アドレスを持つ Amazon EC2 インスタンスのリストを取得できます。
SELECT
accountId,
resourceId,
configuration.publicDnsName,
configuration.publicIpAddress
WHERE
resourceType = 'AWS::EC2::Instance'
AND (
configuration.publicIpAddress BETWEEN '0.0.0.0'
AND '255.255.255.255'
OR configuration.ipv6Addresses BETWEEN '0:0:0:0:0:0:0:0'
AND 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff'
)
ネストされた配列クエリ
アドバンストクエリは、ネストされた配列クエリをサポートしていません。詳細については、「アドバンストクエリの制限」をご参照ください。
1. 回避策として、次のようなカスタムクエリを使用できます。
SELECT
configuration.targetResourceId,
configuration.targetResourceType,
configuration.complianceType,
configuration.configRuleList
WHERE
configuration.complianceType = 'NON_COMPLIANT'
AND configuration.configRuleList.configRuleName = 'required-tags'
2. 次に、指示に従って、出力を JSON としてエクスポートします。
その後、コマンドラインの JSON プロセッサ jq を使用して、ネストされた配列をフィルタリングおよびクエリできます。詳細および jq をダウンロードする方法については、「JSON 出力形式」をご参照ください。
関連情報
AWS Config がアドバンストクエリを保存する機能の提供を開始
AWS リソースの現在の設定状態のクエリ