はじめに
去年のre:Inventで発表された、Amazon Q Developerですが、先月リソースについてチャットする機能がGAされました。
本機能を使うことで、チャットからAWSアカウントのリソース一覧を取得できたりなど、色々と使い道がありそうです。
※AWSブログより掲載
前提条件
本機能を利用するためには、次の前提条件を満たす必要があります。
権限付与
チャットするユーザーに次の権限が必要です。
- q:SendMessage
- q:StartConversation
- q:GetConversation
- q:ListConversations
- q:PassRequest
- 質問するリソースの表示に必要なアクセス許可(例えば、S3バケットを一覧表示する場合、s3:ListAllMyBucketsが必要です。)
クロスリージョン同意
Amazon Qはバージニア北部からリソースにアクセスするため、同意が必要です。
同意をするには、Amazon Qのチャットを開いた状態で、設定ボタン(右上の歯車マーク)を押し、「I consent to cross-Region calls」にチェックを入れて、「Apply」をクリックしましょう。
ちなみに、同意せずにリソースについて質問すると、クロスリージョン同意を促すチャットが返ってきます。
制限
本機能は無料で利用することができますが、リソースに関する回答取得は、25件のクエリ/月の制限があります。
EC2インスタンスの一覧を取得してみる
公式ドキュメントにチャット例が載っていますので、素直にこの形で質問をしてみます。基本的に、リソースの一覧を取得する場合は、対象のリソースとリージョンを指定することでリソースの情報を取得してくれるようです。
※公式ドキュメントより掲載
「List my EC2 instances in ap-northeast-1」と質問をしてみると、正しい回答が返ってきました。
更に、特定インスタンスの詳細について聞いてみましょう。「Please tell me detail of the {Instance Id}」と質問をしてみます。すると、次の情報が返ってきました。
- インスタンスタイプ
- イメージID
- セキュリティグループ
- サブネットID
- アタッチされているボリューム
- アタッチされているIAMロール
- インスタンスの状態
※対象のEC2は削除しているが、サブネットとIAMロールは利用しているためマスキング
簡単に対象リソースの概要を知りたいときに使えそうですね。
使われていないEBSボリュームと作成者を特定する
続いては、使われていない(=アタッチされていない)EBSボリュームと作成者を特定できるか試してみます。私の所属している部門では、AWSアカウントを検証環境として使うことが多いのですが、度々アタッチされていないボリュームが放置されているので、これができるとめちゃくちゃ便利です。
最初に、DemoNoAttachという名前でアタッチされていないEBSボリュームを作っておきます。
これで準備万端です。満を持して、Amazon Qにチャットしていきます。最初は、List my EBS volume with no Instance in ap-northeast-1とチャットしてみます。
あれ、うまくいかない。。。作ってすぐのリソースは反映されないかな?と思いましたが、何度試してもダメでした。
次に、「List my unattached EBS volume in ap-northeast-1」とチャットしてみます。
するとちゃんと結果が返ってきました。やはり、指示の仕方が大切なようです。
ここから、対象ボリュームの作成者を質問するだけだと思ったのですが、めちゃくちゃ苦戦します。色々な質問をしてみますが、中々目当ての回答が返ってきません。
次のようなチャットを試してみましたが、全滅。。。
- Who create {Volume Id}
- Please tell me who create {Volume Id}
- Please tell me the userName of {Volume Id}
- Please tell me user name that created the EBS volume {Volume Id}
- Please tell me the detail of {Volume Id}
- please findout who create {Volume Id} in ap-northeast-1
ちなみに、EC2インスタンスだと「Please tell me who create {Instance Id}」で作成者を特定できたので、恐らくAPIの仕様によるものだと推測します。(スクリーンショットは取り忘れた)
なので、方向を変えてCloud Trailのイベントから情報を取得してみることに。色々錯誤していき、中々惜しいラインまでいきます。
View JSONの中身を確認すると、CreateVolumeのイベントは取ってこれているので、後ちょっとのはず。Cloud Trailのイベントを取ってこれているので、AWS CLIのコマンドに近い形でフィルターを指示すればいけるか?と思い試してみると...
いけました!!
少し複雑ですが、このようにチャットすると特定ができるようです。
list cloud trail resources with "EventName": "CreateVolume" and query 'Events[?Resources[?ResourceName=={Volume Id}]] in ap-northeast-1
さいごに
本機能は無料なので、使いこなせるとかなり普段の作業が捗りそうです。今後も色々な使い方を模索していきたいと思います。