5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ZOZOAdvent Calendar 2024

Day 8

CloudFormationの変更内容をBedrockに要約してもらう

Last updated at Posted at 2024-12-07

はじめに

近年生成AIが開発の中でも活用されているケースが多くなってきました。
今回はAWSが提供するBedrockを使って、GitHubで管理しているCloudFormationの変更内容の要約をPull Requestに記載するワークフローを実現したいと思います。

対応方法

ここから実際の手順を紹介します。

Bedrockを有効化

まずはAWSアカウントでBedrockのモデルを有効化します。
今回はそれぞれ以下のモデルをAWSコンソールから有効化します。

  • Light Model: Claude 3.5 Haiku(anthropic.claude-3-5-haiku-20241022-v1:0)
  • Heavy Model: Claude 3.5 Sonnet v2(anthropic.claude-3-5-sonnet-20241022-v2:0)

GitHub Actionsから実行できるIAMロールを作成

次にGitHubリポジトリからBedrockのモデルを実行できる(bedrock:InvokeModel)IAMロールを作成します。
CloudFormationテンプレートを記載していますのでぜひ参考にしてください。

AWSTemplateFormatVersion: '2010-09-09'
Description: 'PR Summary by Bedrock'
Parameters:
  GitHubOrganizationName:
    Type: 'String'
    Description: 'GitHub Organization Name'
  GitHubRepositoryName:
    Type: 'String'
    Description: 'GitHub Repository Name'
Resources:
  IAMRole:
    Type: 'AWS::IAM::Role'
    Properties:
      RoleName: 'pr-summary-by-bedrock-role'
      AssumeRolePolicyDocument:
        Statement:
          - Effect: 'Allow'
            Action: 'sts:AssumeRoleWithWebIdentity'
            Principal:
              Federated: !Sub 'arn:${AWS::Partition}:iam::${AWS::AccountId}:oidc-provider/token.actions.githubusercontent.com'
            Condition:
              StringLike:
                token.actions.githubusercontent.com:sub: !Sub 'repo:${GitHubOrganizationName}/${GitHubRepositoryName}:*'
      Policies:
        - PolicyName: 'pr-summary-by-bedrock-policy'
          PolicyDocument:
            Statement:
              - Action:
                  - 'bedrock:InvokeModel'
                Effect: 'Allow'
                Resource: '*'

GitHub Actionsのワークフローを追加

次は該当のGitHubリポジトリにGitHub Actionsのワークフローを追加します。
今回は公開されている tmokmss/bedrock-pr-reviewer を利用します。
その際、defaultではyamlファイルは除外されているため、個別での設定が必要となります。
各自のプロジェクトに合わせてpath_filtersの変更をお願いします。

name: PR Summary by Bedrock

permissions:
  id-token: write
  contents: read
  pull-requests: write

on:
  pull_request:
  pull_request_review_comment:
    types: [created]

concurrency:
  group:
    ${{ github.repository }}-${{ github.event.number || github.head_ref ||
    github.sha }}-${{ github.workflow }}-${{ github.event_name ==
    'pull_request_review_comment' && 'pr_comment' || 'pr' }}
  cancel-in-progress: ${{ github.event_name != 'pull_request_review_comment' }}

env:
  AWS_IAM_ROLE_ARN: arn:aws:iam::123456789012:role/pr-summary-by-bedrock-role
  AWS_REGION: ap-northeast-1
  CODE_REVIEW_LIGHT_MODEL: anthropic.claude-3-5-haiku-20241022-v1:0
  CODE_REVIEW_HEAVY_MODEL: anthropic.claude-3-5-sonnet-20241022-v2:0

jobs:
  review:
    runs-on: ubuntu-latest
    if: >-
      ${{
        github.event_name != 'pull_request_review_comment' || github.event.comment.in_reply_to_id != null
      }}
    steps:
      - name: configure aws credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ env.AWS_IAM_ROLE_ARN }}
          aws-region: ${{ env.AWS_REGION }}
      - name: PR review
        uses: tmokmss/bedrock-pr-reviewer@main
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          debug: false
          review_simple_changes: false
          review_comment_lgtm: false
          language: ja-JP
          disable_review: true
          disable_release_notes: false
          bedrock_light_model: ${{ env.CODE_REVIEW_LIGHT_MODEL }}
          bedrock_heavy_model: ${{ env.CODE_REVIEW_HEAVY_MODEL }}
          path_filters: |
            !**/dist/**
            !**/*.tfstate
            !**/package-lock.json

動作確認

実際にPull Requestをあげると以下のようなリリースノートがDescription欄に自記載されていることを確認します。
Screenshot 2024-12-04 21.16.03.png

おわりに

以上、今回はAmazon Bedrockを使ってCloudFormationの変更内容の要約をPull Requestに記載する仕組みをご紹介しました。
Bedrockでの変更内容の要約検討されている方の参考になれば幸いです。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?