0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon Qでリソースについてチャットする機能がめちゃくちゃ便利だった

Posted at

はじめに

去年のre:Inventで発表された、Amazon Q Developerですが、先月リソースについてチャットする機能がGAされました。

本機能を使うことで、チャットからAWSアカウントのリソース一覧を取得できたりなど、色々と使い道がありそうです。
image.png
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」をクリックしましょう。
image.png

Amazon QのAPIコール履歴は、バージニア北部のCloud Trailに記録されます。
image.png

ちなみに、同意せずにリソースについて質問すると、クロスリージョン同意を促すチャットが返ってきます。
image.png

制限

本機能は無料で利用することができますが、リソースに関する回答取得は、25件のクエリ/月の制限があります。

EC2インスタンスの一覧を取得してみる

公式ドキュメントにチャット例が載っていますので、素直にこの形で質問をしてみます。基本的に、リソースの一覧を取得する場合は、対象のリソースとリージョンを指定することでリソースの情報を取得してくれるようです。
image.png
公式ドキュメントより掲載

「List my EC2 instances in ap-northeast-1」と質問をしてみると、正しい回答が返ってきました。

image.png

更に、特定インスタンスの詳細について聞いてみましょう。「Please tell me detail of the {Instance Id}」と質問をしてみます。すると、次の情報が返ってきました。

  • インスタンスタイプ
  • イメージID
  • セキュリティグループ
  • サブネットID
  • アタッチされているボリューム
  • アタッチされているIAMロール
  • インスタンスの状態
    image.png
    ※対象のEC2は削除しているが、サブネットとIAMロールは利用しているためマスキング

簡単に対象リソースの概要を知りたいときに使えそうですね。

権限のないリソースについてチャットをした場合、必要な権限が不足していることを教えてくれます。本機能はとても便利ですが、しっかりと権限管理していく必要がありそうです。
image.png

使われていないEBSボリュームと作成者を特定する

続いては、使われていない(=アタッチされていない)EBSボリュームと作成者を特定できるか試してみます。私の所属している部門では、AWSアカウントを検証環境として使うことが多いのですが、度々アタッチされていないボリュームが放置されているので、これができるとめちゃくちゃ便利です。

最初に、DemoNoAttachという名前でアタッチされていないEBSボリュームを作っておきます。
image.png

これで準備万端です。満を持して、Amazon Qにチャットしていきます。最初は、List my EBS volume with no Instance in ap-northeast-1とチャットしてみます。
image.png

あれ、うまくいかない。。。作ってすぐのリソースは反映されないかな?と思いましたが、何度試してもダメでした。

次に、「List my unattached EBS volume in ap-northeast-1」とチャットしてみます。

image.png

するとちゃんと結果が返ってきました。やはり、指示の仕方が大切なようです。

ここから、対象ボリュームの作成者を質問するだけだと思ったのですが、めちゃくちゃ苦戦します。色々な質問をしてみますが、中々目当ての回答が返ってきません。
image.png

次のようなチャットを試してみましたが、全滅。。。

  • 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のイベントから情報を取得してみることに。色々錯誤していき、中々惜しいラインまでいきます。
image.png

View JSONの中身を確認すると、CreateVolumeのイベントは取ってこれているので、後ちょっとのはず。Cloud Trailのイベントを取ってこれているので、AWS CLIのコマンドに近い形でフィルターを指示すればいけるか?と思い試してみると...
image.png

いけました!!
少し複雑ですが、このようにチャットすると特定ができるようです。

list cloud trail resources with "EventName": "CreateVolume" and query 'Events[?Resources[?ResourceName=={Volume Id}]] in ap-northeast-1

さいごに

本機能は無料なので、使いこなせるとかなり普段の作業が捗りそうです。今後も色々な使い方を模索していきたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?