- 公開日
- 最終更新日
【CodeCatalyst】Amazon QにIssueを割り当ててコード生成
この記事を共有する
目次
はじめに
サービスGの森です。
普段ソースコード管理としてAmazon CodeCatalystを使用する事がありますが、
まだ使ってない機能もたくさんあります。
今回はAmazon CodeCatalystでAmazon Qに対してIssueを割り当てて、コードの生成をしてもらいたいと思います。
生成するコードは、VPCとサブネットを定義するシンプルなCloudFormationテンプレートとします。
やってみた
1. 生成AI機能の有効化
1. CodeCatalystのスペースに移動して、[Setting]タブをクリックします

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

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: 無効

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

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

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

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.ApproveとMergeを実行します ※ちなみにプルリクエストの説明文も生成されています

4. 生成されたテンプレートからスタックをデプロイ
1. デプロイできました!

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

この記事は私が書きました
森 翔吾
記事一覧最近はコンテナ・サーバレスを学習しています。 よろしくお願いします。