AWS Config の高度なクエリの制限付きエラーを集約リソースまたはアカウントリソースで解決したいと考えています。
解決策
高度なクエリのユースケースでは、以下の回避策を使用します。
**注:**高度なクエリを使用するには、SelectResourceConfig と SelectAggregateResourceConfig の API の権限が必要です。詳細については、「SQL クエリエディタを使用したクエリ (コンソール)」を参照してください。
Amazon EC2 インスタンスオペレーティングシステムのバージョン
高度なクエリでは、すべての AWS リージョンで Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを実行しているすべてのオペレーティングシステムのリストを取得することはできません。OS を確認するには、「EC2 Linux インスタンスが使用している 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'
)
ネストされた配列クエリ
高度なクエリはネストされた配列クエリをサポートしていません。詳細については、「制限事項」を参照してください。
-
回避策として、次のようなカスタムクエリを使用できます。
SELECT configuration.targetResourceId,
configuration.targetResourceType,
configuration.complianceType,
configuration.configRuleList
WHERE
configuration.complianceType = 'NON_COMPLIANT'
AND configuration.configRuleList.configRuleName = 'required-tags'
-
次に、指示に従って出力を JSON としてエクスポートします。
その後、コマンドラインの JSON プロセッサ jq を使用して、ネストされた配列をフィルタリングおよびクエリできます。詳細と jq のダウンロードについては、「 JSON 出力形式」を参照してください。
関連情報
AWS Config が高度なクエリを保存する機能をリリース
AWS リソースの現在の設定状態をクエリする