ENGINEER BLOG ENGINEER BLOG
  • 公開日
  • 最終更新日

Amazon Q Developerでトラブルシューティングしてみる

この記事を共有する

目次

はじめに

こんにちは!パーソル&サーバーワークスのEndoです。
少し時間が経ってしてしまいましたが、2025年6月 に更新された Amazon Q Developer のチャットを利用したトラブルシューティング機能がとても便利だと感じたので、自分でも確認してみたいと思い本記事を執筆しました。

前提

Amazon Q は re:Invent 2023 で生成AIアシスタントサービスとして発表され、2024年5月に Amazon Q 製品である Amazon Q Business および Amazon Q Developer がそれぞれ一般公開されました。
今回は、その中でも Amazon Q Developerについてご紹介したいと思います。

Amazon Q Developer

Amazon Q Developer とは、Amazon Bedrock 上に構築された会話アシスタントです。
機能の詳細については、Amazon Q - 生成 AI アシスタント から引用してご紹介します。

Amazon Q Developer は、ソフトウェアの構築、運用、変換を行うための最も有能な生成 AI 搭載アシスタントで、データと AI/ML を管理するための高度な機能を備えています。Amazon Q Developer はコーディングにとどまらず、コーディング、テスト、デプロイから、トラブルシューティング、セキュリティスキャンと修正の実行、アプリケーションのモダナイゼーション、AWS リソースの最適化、データエンジニアリングパイプラインの作成まで、デベロッパーと IT プロフェッショナルのすべてのタスクを支援します。 AWS アーキテクチャ、 AWS リソース、などの質問に対する回答や、統合開発環境 (IDE) を使用することでソフトウェア開発を支援します。

料金体系について

Amazon Q Developer の料金は、無料利用枠Proの2種類となっています。Proはユーザー単位でのサブスクリプションとなります。
無料利用枠では高度な機能への 1 か月あたりのアクセス回数の制限がありますが、Proでは高度な機能の制限が緩和されるのに加え、カスタマイズなどが可能です。
詳細については Amazon Q Developer の料金 をご参照ください。

トラブルシューティング

実際にトラブルシューティングできるか確認してみます。今回は無料利用枠で検証します!
トラブルシューティング用に、Amazon S3 にファイルが PUT されたらイベント通知機能で Amazon SNS で通知するアーキテクチャを構築しました。

AmazonQ_Architecture.png

構築時のCloudFormationテンプレートは以下を展開してご参照ください。
※トラブルシューティング用のため、敢えて一部パラメータを設定していません。

ここを押すと展開します

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  ### SNS Ropic
  SNSTopic:
    Type: AWS::SNS::Topic
    Properties:
      TopicName: s3-event-notification
  SNSSubscription:
    Type: AWS::SNS::Subscription
    Properties:
      Protocol: email
      Endpoint: XXXXXXXXX@XXXXXXXXX.co.jp
      TopicArn: !Ref SNSTopic
  ### Lambda Role
  LambdaExecutionRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: s3-event-notification-role
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action: sts:AssumeRole
      Policies:
        - PolicyName: lambda-logging-and-sns
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - logs:CreateLogGroup
                  - logs:CreateLogStream
                  - logs:PutLogEvents
                Resource: '*'
  ### Lambda
  S3TriggerFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: s3-event-trigger-function
      Handler: index.lambda_handler
      Role: !GetAtt LambdaExecutionRole.Arn
      Runtime: python3.12
      Timeout: 10
      Code:
        ZipFile: !Sub |
          import json
          import boto3
          import logging
          # Configure logging
          logger = logging.getLogger()
          logger.setLevel(logging.INFO)
          def lambda_handler(event, context):
              logger.info("Lambda function started")
              logger.info(f"Event: {json.dumps(event)}")
              try:
                  # Get the S3 bucket and key from the event
                  bucket = event['Records'][0]['s3']['bucket']['name']
                  key = event['Records'][0]['s3']['object']['key']
                  logger.info(f"Processing S3 object: {bucket}/{key}")
                  # Create SNS client
                  sns = boto3.client('sns')
                  # Prepare message
                  message = f"New object uploaded to S3 bucket: {bucket}/{key}"
                  subject = "S3 Object Upload Notification"
                  logger.info("Attempting to publish to SNS")
                  # Publish to SNS topic
                  response = sns.publish(
                      TopicArn='arn:aws:sns:ap-northeast-1:XXXXXXXXX:s3-event-notification',
                      Message=message,
                      Subject=subject
                  )
                  logger.info(f"SNS publish response: {response}")
                  return {
                      'statusCode': 200,
                      'body': json.dumps('Notification sent successfully!')
                  }
              except Exception as e:
                  logger.error(f"Error: {str(e)}")
                  raise e
  ### S3 Bucket
  S3Bucket:
    Type: AWS::S3::Bucket
    DependsOn: LambdaInvokePermission
    Properties:
      BucketName: XXXXXXXXX
      BucketEncryption:
        ServerSideEncryptionConfiguration:
          - ServerSideEncryptionByDefault:
              SSEAlgorithm: AES256
      NotificationConfiguration:
        LambdaConfigurations:
          - Event: s3:ObjectCreated:Put
            Function: !GetAtt S3TriggerFunction.Arn
  ### LambdaPermission
  LambdaInvokePermission:
    Type: AWS::Lambda::Permission
    Properties:
      FunctionName: !Ref S3TriggerFunction
      Action: lambda:InvokeFunction
      Principal: s3.amazonaws.com

リソース構築後、Amazon S3 バケットに test_1.txtをアップロード (PUT) しましたが、メールは送信されませんでした。
amazonq_ts-1.png

Amazon Q Developer へ原因を聞いてみたいと思います。
2025年7月現在、マネジメントコンソールのチャットでは英語のみ対応しているようです。
 ⇒2025年7月31日のアップデートで日本語も対応しました!

問い合わせ内容

問い合わせ内容には 実際のリソース情報からメールが送信されない原因を調査をしてほしい旨を問い合わせました。
amazonq_ts-2.png

回答内容

以下の流れで回答が生成されました。 ※回答の生成には少し時間がかかります。

  • 指定したリソース情報の取得および調査

指定したリソースの権限や状態などを取得します。
amazonq_ts-3.png

  • 原因箇所の特定および解決方法

Lambda関数にアタッチしているIAMロールにSNS Publishを実行する許可ポリシーが含まれていませんでした。 追加するポリシーの内容も教えてくれました。 amazonq_ts-4.png

IAMポリシーに SNS publish を追加して S3 バケットに test_2.txtをアップロードしてみます。 amazonq_ts-5.png amazonq_ts-6.png

メールが送信されました!!
amazonq_ts-7.png

おわりに

今回の検証では AWS Lambda と IAM 、そして Amazon SNS リソース間のトラブルシューティングをマネジメントコンソール上で行いました。
特に別途ツールをインストールすることなく、無料でこのような機能が利用できるので、効率的に使っていきたいと思います!
この記事がどなたかのお役に立てましたら幸いです。

参考情報

New and improved Amazon Q Developer experience in the AWS Management Console and chat applications

この記事は私が書きました

S.Endo

記事一覧

コーヒーを飲みながら仕事をしています

S.Endo

この記事を共有する

クラウドのご相談

CONTACT

クラウド導入や運用でお悩みの方は、お気軽にご相談ください。
専門家がサポートします。

サービス資料ダウンロード

DOWNLOAD

ビジネスをクラウドで加速させる準備はできていますか?
今すぐサービス資料をダウンロードして、詳細をご確認ください。