【速報】AWS re:Invent2023 Amazon Q プレビュー版が公開されました!

    【速報】AWS re:Invent2023 Amazon Q プレビュー版が公開されました!

    目次

      はじめに

      こんにちは、AWS Jr. Championの宮島です。
      現地時間の11/27から開催されているAWS re:Inventに参加しています。

      11/28(火)に実施された、AWS CEOのAdam Selipskyが実施するKeynoteにて、AWSが提供する新たなサービスであるAmazon Qが公開されました。 
      Amazon Q (Preview)のAWS公式ページ

      Q_stage


      こちらは、今流行っているGenerative AI関連のサービスとなりますが、以下のような特徴を持っています。

      • 開発者やITプロフェッショナルをサポート
        • 一機能であるAmazon Q Code Transformationを使うことで、例えばJavaアプリケーションの古いバージョン(8や11)から、17へのアップグレードに対応したコードを再作成してくれます。
      • 質問に対するリファレンスの提供
        • 質問への回答を行う際、Qは回答に付随して信用できる情報のソースを提供します。
      • 既存AWSコンソールとの統合
        • EC2インスタンスを選択する画面で、Qに最適なインスタンスタイプ/サイズを提案してもらうことができます。
        • サービスのエラーを取得し、その原因と解決方法を回答してもらうことができます。

      使ってみる

      上記の機能は既にAWSコンソールから触ることができるので、実際に試してみます。

       

      EC2インスタンスタイプ/サイズの提案

      いつもの見慣れたEC2構築時のコンソールに見慣れない文字列があります。これがQに聞いてみるオプションになります。

      q-error-a

       

      上記のオプションをクリックすると、アドバイスを求めるために必要な情報を入力する画面になります。

      今回は何も変更せずに実施しましたが、ワークロードの選択肢も多彩で要望に応じて選択することができます。(ML、Database、ERPなどの選択肢があります。)

       

      q-error-b

       

      提供した要望をもとに、Qが自動的にプロンプトへ変換してくれます。
      通常、このプロンプトへの返答として推奨されるインスタンスを教えてくれるのですが、Qへのリクエストが混みあっているのか、回答は得られませんでした。
      簡単にできるので、後日ご自身で試してみてください。

       

      q-error-c

       

      サービスのエラーの解決

      この機能は現在EC2, ECS, S3, Lambdaで利用可能なようです。
      今回はLambdaでエラーを発生させて、解決方法を聞いてみます。
      意図的にS3へのアクセス権しかないIAMロールを割り当てて、EC2の一覧を取得しようとしてみます。

       

      q-error-1

       
      import json
      import boto3
      def lambda_handler(event, context):
          ec2 = boto3.client('ec2')
          response = ec2.describe_instances()
      for reservation in response['Reservations']:
              for instance in reservation['Instances']:
                  print(f"インスタンスID: {instance['InstanceId']}")
                  print(f"インスタンスタイプ: {instance['InstanceType']}")
                  print(f"状態: {instance['State']['Name']}")
                  print(f"起動時刻: {instance['LaunchTime']}")
                  print("--------")

          return {
              'statusCode': 200,
              'body': json.dumps('Success')
          }

      上記は使用したコードですが、内容はシンプルにe2-describe_instancesを叩いているだけです。
      当然ですが、エラーが出ます。ただしいつもと違い、エラーの横にTroubleshoot with Amazon Qの文字があります。

       

      202311_aws_re_invent2023-11-30_02

       

      クリックすると、このように原因を分析してくれます。APIをコールするのに必要な権限が足りないんじゃないかと教えてくれていますね。

      q-error-3

       

      さらにHelp me resolveをクリックしてみると、解決の手順まで含めて教えてくれました。
      今回は比較的シンプルな、かつAWSに起因するエラーだったため正しく解決してくれました。コードの誤りによるエラーにどこまで対応できるのか、これから検証が必要になりそうです。

       

      q-error-4

       

      まとめ

      いかがでしたでしょうか。11/28に公開されたばかりの新サービスのためまだまだ粗も見えますが、これからが非常に楽しみなサービスでした。
      実はAmazon Qの真価はコンソールからのアクセスではなく、IDE連携や、ドキュメントを学習させたビジネス利用ではないかと思っていますので、引き続き検証を進めていきます。

      これから自分でも試そうという方は、以下の点に注意してください。

      1. Amazon Qは今のところ日本語を打ち込んでも全く取り合って貰えません。近いうちに対応するのではないかと思うので、こまめに情報をチェックすると良いかと思います。
      2. 通常のコンソールでの機能はtokyo(ap-northeast-1)でも使用できますが、今回紹介したEC2インスタンスのアドバイスや、エラーのトラブルシュート機能は一部リージョンのみ対応となります。
        特にトラブルシュートはオレゴンのみとなり、バージニアで検証していると利用できません。

      参考

      Amazon Q brings generative AI-powered assistance to IT pros and developers (preview)