AWS Config の新コンソールを使うと高度なクエリ機能のサンプルコードが 16→58 に増えて超絶便利になった

サンプルクエリが16個から58個に一気に増えましたよ!
2020.02.29

AWS Config には現在のリソース設定などを SQL で取得できる高度なクエリ機能(Advanced queries)があります。

これまで 16 のサンプルクエリが提供されていたのですが、AWS Config の管理コンソールを新しいバージョンに切り換えると一気に 58 まで増えて、超絶便利になりました!

今回は執筆時点で提供されているサンプルクエリをざざっとご紹介します。

新コンソールの切り替え

AWS Config の管理コンソールが旧バージョンの場合、以下のリンクをクリックして新バージョンに切り替えてください。

サンプルクエリ一覧

名前 説明
Count EC2 Instances タイプごとのEC2インスタンスのカウント
Count Non-compliant 準拠していないリソースのカウント
Count by compliant Config ルール遵守状況ごとのリソースのカウント
Active DynamoDB tables アクティブなDynamoDBテーブルをリスト
Availability zones for Load Balancer 特定ロードバランサのアベイラビリティゾーン一覧
DynamoDB tables with disabled SSE 暗号化が無効になっているDynamoDBテーブル一覧
Unused EBS 使用されていないEBS一覧
Elastic IPs by Network Interface 特定ENIに関連するEIP一覧
Elastic IPs by pool プール内のEIP一覧
Elastic IPs with private IP address 特定プライベートIPアドレスに紐づくEIP一覧
EC2 Instances within a VPC 特定VPCに所属するEC2一覧
EC2 Instances by type 特定インスタンスタイプのEC2一覧
EC2 Instances attached to Volume 特定のEBSに接続されているEC2一覧
Currently running EC2 Instances 現在実行中のEC2一覧
Currently stopped EC2 Instances 現在停止中のEC2一覧
EC2 Instances by Subnet 特定サブネット内のEC2一覧
EC2 Instances by Security Group 特定セキュリティグループのあるEC2一覧
EC2 Instances by Network Interface 特定ENIが含まれているEC2一覧
EC2 instances with a public DNS name 特定パブリックDNS名を持つEC2一覧
EC2 Instances with a private DNS name 特定プライベートDNS名を持つEC2一覧
EC2 Instances with monitoring state 拡張モニタリングが無効のEC2一覧
EC2 Instances by AMI 特定AMIを持つEC2一覧
EC2 Internet Gateway with state available 利用可能な状態にあるIGW一覧
EC2 NetworkInterfaces by EC2 Instance 特定インスタンスにアタッチされたENI一覧
EC2 NetworkInterfaces in-use 使用中のENI一覧
EC2 NetworkInterfaces by IP address 特定プライベートIPアドレスを持つENI一覧
Encrypted EC2 Volumes 暗号化されているEBS一覧
In-use EC2 volumes 使用中のEBS一覧
Not Encrypted EC2 Volumes 暗号化されていないEBS一覧
EC2 Volumes by type gp2タイプのEBS一覧
EC2 Volumes by size (GB) 特定のサイズを持つEBS一覧
IAM Policy by IAM User IAMユーザーにアタッチされているIAMポリシー一覧
IAM Users by creation date 特定期間に作成されたIAMユーザーの一覧
IAM User by IAM Policy 特定IAMポリシーがアタッチあれたIAMユーザーの一覧
EC2 Instances with User initiated state transition StateTransitionReasonが"User initiated"であるEC2一覧
Lambda Function using nodejs6 nodejs6 ランタイムを使用している Lambda 関数一覧
Load Balancers by Security Group 特定セキュリティグループに関連づけられているELB一覧
Load Balancers by Subnet 特定サブネットに所属するELB一覧
Load Balancers by VPC 特定VPCに所属するELB一覧
Publicly accessible RDS パブリックアクセス可能なRDS一覧
RDS DBInstances by Security Group 特定セキュリティグループに関連づけられているRDS一覧
Publicly accessible RDS DBInstances パブリックアクセス可能なRDS一覧
RDS DBInstances by backup (days) バックアップ保持期間が指定日未満のRDS一覧
RDS DBInstances by database engine 特定データベース・エンジンを持つRDS一覧
RDS DBInstances by DBInstanceClass 特定インスタンスタイプのRDS一覧
RDS DBInstances by storage type 特定ストレージタイプを持つRDS一覧
RDS DBInstances by StorageEncrypted 暗号化ストレージを持つRDS一覧
RDS with database engine 特定データベースエンジンの特定バージョンを実行しているRDS一覧
Non-compliant resources for Config rule 特定のConfig Ruleに準拠していないリソース一覧
Non-compliant resources 一つ以上のConfig Ruleに準拠していないリソース一覧
Security group sg-12345 特定セキュリティグループに関連するリソース一覧
Tagged with CostCenter 12345 特定タグが付いているリソース一覧
S3 buckets with no SSE 暗号化が無効になっているS3バケット一覧
Security group allowing traffic from port 特定ポートからのトラフィックを許可するセキュリティグループ一覧
Security group allowing traffic to port 特定ポートへのトラフィックを許可するセキュリティグループ一覧
Security group supporting protocol プロトコル"TCP"をサポートするセキュリティグループ一覧
Subnets for Load Balancer 特定ELBの所属するサブネット一覧
S3 Buckets by versioning state バージョニングが無効のS3バケット一覧

めっちゃ増えましたね!

シンプルなクエリも多いですが、AWS Config の場合、Aggregate 機能を使うことで複数のリージョン、複数のアカウントのリソースを取得できるので非常に便利です!

クエリを実行しても結果が得られない場合

該当するリソースがあるはずなのに、クエリ結果が得られない場合は、AWS Config の管理対象になっていない可能性が高いです。AWS Config 管理コンソールの Settings を開き、対象のリソースが Resource types to record に含まれているか確認してください。

含まれていない場合は、Edit から追加しましょう。

クエリをカスタマイズする際の注意

サンプルクエリをベースにクエリをカスタマイズすると、より便利に利用できるかと思います。

ただし、一般的な SQL 文と同じように書けない部分もありますのでご注意ください。例えば以下のような制限がございます。

  • キーワード FROMASJOINDISTINCTHAVINGALL はクエリではサポートされません
  • ワイルドカードはプロパティ値でのみサポートされており、プロパティキーではサポートされていません
    • ...WHERE someKey LIKE 'someValue%' はサポートされる
    • ...WHERE 'someKey%' LIKE 'someValue%' はサポートされない
  • サフィックスワイルドカードのみのサポートされる
    • ...LIKE 'AWS::EC2::%' はサポートされる
    • ...LIKE '%::EC2::Instance' はサポートされない
  • ワイルドカードの一致は、少なくとも3文字以上
    • ...LIKE 'abc%' はサポートされる
    • ...LIKE 'ab%' はサポートされない
  • GROUP BY には、単一のプロパティのみを含めることができる

その他、詳細は公式ドキュメントを参照ください。

さいごに

AWS Config の管理コンソールが新しくなっていたので、さわっていたところ「あれ?こんなにサンプルクエリ多かったっけ?」と思ったので記事にしてみました。

サンプルクエリが増えたことで、クエリの書き方など非常にイメージしやすくなったかと思います。

AWS Config の aggregator 機能を使うと、複数アカウント、複数リージョンの管理リソースに対しても Advanced queries で楽に欲しい情報が得られるかと思います。

以上!大阪オフィスの丸毛(@marumo1981)でした!