[アップデート]AWS Configの高度なクエリが自然言語で生成可能になりました!(プレビュー)#AWSreInvent

2023.11.27

はじめに

CX事業本部の佐藤智樹です。今回はAWS Configの高度なクエリが自然言語によるクエリ作成をサポートしたのでご紹介します。 今までは、Configに対してSQLクエリを実行することでリソース状況の取得などが可能でした。

SQLクエリでの問い合わせのため抽象的な自然言語での問い合わせなど、ある程度記法を把握していなければ検索できませんでした。今回のアップデートで「特定のSecurityGroupが設定されているEC2はどれ?」というような抽象的な質問にも対応できます。

既存のクエリの書き方などは以下の記事にまとまっています。

本稿では、実際に自然言語から生成された高度なクエリの例や適当な自然言語で動作確認を行い、返ってきた内容やクエリ結果を記載します。

本機能は現在プレビュー中です。記事の記載内容の動作から変更される可能性があります。

アップデート記事

※現在対応しているリージョンは、バージニア北部、オレゴンのみです。

やってみた

Configの高度なクエリから動作を確認してみます。

Configの自然言語クエリ例を確認

自然言語で独自の質問をする前に、いくつか例が表示されています。これを選択してみます。

赤枠左のような自然言語を入力すると、赤枠下のようなクエリが生成され、自然言語での検索が間接的に実現できることが分かります。

DDBのテーブルを作成後、実際にクエリを流して動作確認したのですが、アクティブなテーブルの存在は確認できませんでした。

サンプルを何パターン化試したのですが、リソースの変更が即反映されないためサンプルクエリによる抽出はできませんでした。今後反映された際記事を更新してみます。

独自の例で確認

今度は、自分が自然言語で書いた内容でクエリを生成してみます。試しに「List all active S3 Bucket」と入力してみます。すると以下のようなクエリが生成されました。

SELECT
  resourceId,
  resourceName,
  resourceCreationTime
WHERE
  resourceType = 'AWS::S3::Bucket'
  AND configurationItemStatus = 'ResourceDiscovered'

上記のクエリを使って検索してみます。すると動作確認しているus-east-1上で作成されたS3 Bucketが確認できました。

基本は英語でしか対応していないような記述だったのですが、試しに日本語で「S3 Bucketを数えて」と聞いてみると以下のようなクエリが返ってきます。

SELECT
  resourceType,
  COUNT(*)
WHERE
  resourceType = 'AWS::S3::Bucket'
GROUP BY
  resourceType

実際に実行するとリージョン内のバケットの数が正しく計測されていました。

所感

Configに記録されるリソース状態に対して独自の調査などを行いたい際に、クエリを0から構築する手間が少なくなるので良いアップデートかと感じました。まだプレビューなので、いくつか想定していない動きの部分もありました。独自の調査を行うことがある方は是非使ってみて下さい。