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

[CodeCatalyst]Amazon QにIssueを割り当ててコード生成

この記事を共有する

目次

はじめに

サービスGの森です。

普段ソースコード管理としてAmazon CodeCatalystを使用する事がありますが、
まだ使ってない機能もたくさんあります。

今回はAmazon CodeCatalystでAmazon Qに対してIssueを割り当てて、コードの生成をしてもらいたいと思います。
生成するコードは、VPCとサブネットを定義するシンプルなCloudFormationテンプレートとします。

やってみた

1. 生成AI機能の有効化

1. CodeCatalystのスペースに移動して、[Setting]タブをクリックします

codecatalyst_setting.png

2. ナビゲーションペインから[Generative AI]をクリックします
3. [Projects in this space can access generative AI features(このスペースのプロジェクトが生成AI機能にアクセスできる)]を有効化します

codecatalyst_ai_yukoka.png

2. Amazon QにIssueを割り当て

1. CodeCatalystのナビゲーションペインからIssuesをクリックします
2. 以下のIssueを発行します
  • タイトル: VPC・サブネット用のCloudFormationテンプレートの作成
  • Description:
1.  VPCを含むAWS CloudFormationテンプレートをYAML形式で作成してください。
2.  以下の仕様を持つVPC用のCloudFormationテンプレートを作成してください:
    *   CIDR: 10.0.0.0/16
    *   3つのパブリックサブネット
  • Status: To Do
  • Priority: Medium
  • Tasks: 未設定
  • Labels: 未設定
  • Assignees: Amazon Q
  • Choose a source repository for Amazon Q to work in.:
    • Source repository: ※対象のリポジトリ
    • Require Amazon Q to stop after each step and await review of its work: 有効
    • Allow Amazon Q to modify workflow files: 無効
    • Allow Amazon Q to suggest creating tasks: 無効

codecatalyst_issue.png

3. Issueの確認

1. 作成したIsuueは、ボード上でTodoからIn Progressに遷移しています
2. Issueをクリックすると以下のフローを作成しており、ユーザーの返答待ちになっています
1. 前提条件を評価する
2. リポジトリを読む
3. 背景を生成する
4. アプローチを生成する
5. コードを生成する
6. プルリクエストを作成する

codecatalyst_issue_wait.png

3. 画面をスクロールすると、アプローチと作業を続行してよいかの承認を求められるので、Proceedをクリックして作業を続行させます

codecatalyst_proceed.png

4. しばらくするとプルリクエストの作成まで完了しました

codecatalyst_create_pull_request.png

3. プルリクエストの承認とマージ

1. プルリクエストでは以下のコードが生成されています
AWSTemplateFormatVersion: '2010-09-09'
Description: VPC with 3 public subnets
Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      EnableDnsHostnames: true
      EnableDnsSupport: true
      InstanceTenancy: default
      Tags:
        - Key: Name
          Value: MyVPC
  PublicSubnet1:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      AvailabilityZone: us-east-1a
      CidrBlock: 10.0.1.0/24
      MapPublicIpOnLaunch: true
      Tags:
        - Key: Name
          Value: Public Subnet 1
  PublicSubnet2:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      AvailabilityZone: us-east-1b
      CidrBlock: 10.0.2.0/24
      MapPublicIpOnLaunch: true
      Tags:
        - Key: Name
          Value: Public Subnet 2
  PublicSubnet3:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      AvailabilityZone: us-east-1c
      CidrBlock: 10.0.3.0/24
      MapPublicIpOnLaunch: true
      Tags:
        - Key: Name
          Value: Public Subnet 3
Outputs:
  VpcId:
    Description: VPC ID
    Value: !Ref VPC
    Export:
      Name: !Sub "${AWS::StackName}-VpcId"
  PublicSubnets:
    Description: Public Subnets
    Value: !Join [",", [!Ref PublicSubnet1, !Ref PublicSubnet2, !Ref PublicSubnet3]]
    Export:
      Name: !Sub "${AWS::StackName}-PublicSubnets"
2.ApproveMergeを実行します ※ちなみにプルリクエストの説明文も生成されています

codecatalyst_descr.png

4. 生成されたテンプレートからスタックをデプロイ

1. デプロイできました!

codecatalyst_cfn_stack.png

おわりに

  • Issueのアサインはデフォルトで月に5件までしか登録できません。Amazon Q Developerをサブスクリプションする事で30件に増やせました。1日1件までという事ですかね。

codecatalyst_profile.png

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

森 翔吾

記事一覧

最近はコンテナ・サーバレスを学習しています。 よろしくお願いします。

森 翔吾

この記事を共有する

クラウドのご相談

CONTACT

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

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

DOWNLOAD

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