こんにちは、AWS Jr. Championの宮島です。
現地時間の11/27から開催されているAWS re:Inventに参加しています。
11/28(火)に実施された、AWS CEOのAdam Selipskyが実施するKeynoteにて、AWSが提供する新たなサービスであるAmazon Qが公開されました。
Amazon Q (Preview)のAWS公式ページ
こちらは、今流行っているGenerative AI関連のサービスとなりますが、以下のような特徴を持っています。
上記の機能は既にAWSコンソールから触ることができるので、実際に試してみます。
いつもの見慣れたEC2構築時のコンソールに見慣れない文字列があります。これがQに聞いてみるオプションになります。
上記のオプションをクリックすると、アドバイスを求めるために必要な情報を入力する画面になります。
今回は何も変更せずに実施しましたが、ワークロードの選択肢も多彩で要望に応じて選択することができます。(ML、Database、ERPなどの選択肢があります。)
提供した要望をもとに、Qが自動的にプロンプトへ変換してくれます。
通常、このプロンプトへの返答として推奨されるインスタンスを教えてくれるのですが、Qへのリクエストが混みあっているのか、回答は得られませんでした。
簡単にできるので、後日ご自身で試してみてください。
この機能は現在EC2, ECS, S3, Lambdaで利用可能なようです。
今回はLambdaでエラーを発生させて、解決方法を聞いてみます。
意図的にS3へのアクセス権しかないIAMロールを割り当てて、EC2の一覧を取得しようとしてみます。
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
の文字があります。
クリックすると、このように原因を分析してくれます。APIをコールするのに必要な権限が足りないんじゃないかと教えてくれていますね。
さらにHelp me resolve
をクリックしてみると、解決の手順まで含めて教えてくれました。
今回は比較的シンプルな、かつAWSに起因するエラーだったため正しく解決してくれました。コードの誤りによるエラーにどこまで対応できるのか、これから検証が必要になりそうです。
いかがでしたでしょうか。11/28に公開されたばかりの新サービスのためまだまだ粗も見えますが、これからが非常に楽しみなサービスでした。
実はAmazon Qの真価はコンソールからのアクセスではなく、IDE連携や、ドキュメントを学習させたビジネス利用ではないかと思っていますので、引き続き検証を進めていきます。
これから自分でも試そうという方は、以下の点に注意してください。
Amazon Q brings generative AI-powered assistance to IT pros and developers (preview)