Claude Code ActionをBedrockで動かす

Claude Code ActionをBedrockで動かす

Clock Icon2025.05.29

Introduction

Anthropicが開発したCLIベースのエージェント型コーディングツールであるClaude Codeが、2025/05/22に一般公開されました

これとともにClaude Code Actionもbetaでリリースされています。
これはClaude CodeをGitHub Actionsのワークフローに統合するためのアクションです。これを使用することで、GitHub 上でコードの生成やレビューをGithubからAIに依頼することができます。
Devinみたいな感じ)

このアクションはGithubのコメント内のフレーズ(通常は@claude)によって起動し、
リクエストに応じてClaude Codeを実行します。
素晴らしいことにAmazon Bedrock、Google Vertex AIなど、複数の認証方法をサポートしています。

今回はGithubのリポジトリでClaude Code ActionをAmazon Bedrock経由で使ってみます。

Setup

claude codeとghをインストールしておきましょう。

#インストール. upgradeは → claude update
% npm install -g @anthropic-ai/claude-code

% claude --version
1.0.3 (Claude Code)

% brew install gh

ここにBedrock経由でClaude Code Actionを実行する手順があるので、これを参考に進めます。

Setup

ここにあるように、Anthropic APIが使える状態であればclaudeコマンド実行後に/install-github-appをすればよいのですが、

Bedrockの場合はここにある手順でセットアップします。

Bedrockが使えるAWSアカウントが必要なので、それがあることを前提とします。
また、対象のGithubリポジトリのAdmin権限も持っている必要があります。

カスタムGitHubアプリの作成

Bedrock経由での利用では、まずGitHubアプリを手動でリポジトリにインストールする必要があります。
ここでカスタムGithubアプリを作成しましょう。
GitHub App名(一意の名前)、ホームページURL(組織のウェブサイトまたはリポジトリURL)を入力し、
Webhooks:「Active」のチェックを外します。
また、以下の権限を選択して「Create GitHub App」をクリックします。

  • Contents: Read & Write
  • Issues: Read & Write
  • Pull requests: Read & Write

Github作成後、「Generate a private key」をクリックして.pemファイルを保存しておきます。
ここでApp ID(7桁の数値)もわかるので覚えておきましょう。

Githubアプリをリポジトリにインストール

ここからさきほど作成したアプリを選択し、
左サイドバーの「Install App」をクリックします。
Claude Code Actionsを使用したいリポジトリを選択してInstallしましょう。

cca-bedrock-1.png

次に、秘密鍵をリポジトリのシークレット変数として追加します。
対象リポジトリのsettingsからSecrets and variables → Actions に移動し、
先程の.pemファイルの内容をAPP_PRIVATE_KEYという名前で、
シークレット変数(Repository secrets)を作成してください。

さらに、App IDをシークレットとして追加します。
APP_IDという名前で、さきほどのApp ID(7桁の数値)を設定した
シークレット変数を作成します。

クラウドプロバイダー認証&IAMロールの設定

次に、クラウドプロバイダー認証設定とIAMロール設定をします。
AWS Management ConsoleにログインしてIAMを開きます。
アクセス管理 → IDプロバイダー → プロバイダーを追加を進み、
Identity Providerを追加しましょう。

cca-bedrock-4.png

以下の情報で作成します。

  • プロバイダーのタイプ: OpenID Connect
  • プロバイダーのURL: https://token.actions.githubusercontent.com
  • 対象者: sts.amazonaws.com

プロバイダーを追加をクリックして作成しましょう。

次はGitHub Actions用のIAMロールを作成します。
IAM画面からアクセス管理 → ロール → ロールを作成をクリックし、
以下のロールを作成します。

  • 信頼されたエンティティタイプ: ウェブアイデンティティ
  • アイデンティティプロバイダー: token.actions.githubusercontent.com
  • Audience: sts.amazonaws.com
  • GitHub組織: 適当なURLでOK

「次へ」をクリックして権限ポリシー追加。

  • 検索ボックスで AmazonBedrockFullAccess を検索してチェック

「次へ」をクリックしてロール詳細設定。

  • ロール名: GitHubActions-Bedrock-Role(適当な名前)

信頼ポリシーを以下のように記述してロールを作成しましょう。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::<YOUR_ACCOUNT_ID>:oidc-provider/token.actions.githubusercontent.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
        },
        "StringLike": {
          "token.actions.githubusercontent.com:sub": "repo:<YOUR_GITHUB_USERNAME>/<YOUR_REPO_NAME>:*"
        }
      }
    }
  ]
}

YOUR_ACCOUNT_ID、YOUR_GITHUB_USERNAME、YOUR_REPO_NAMEは
自分の環境に置き換えてください。

  • YOUR_ACCOUNT_ID: AWSアカウントID
  • YOUR_GITHUB_USERNAME: GitHubユーザー名または組織名
  • YOUR_REPO_NAME: 対象のリポジトリ名

ロールを作成したら、ARNを覚えておきましょう。

arn:aws:iam::YOUR_ACCOUNT_ID:role/GitHubActions-Bedrock-Role

GitHub Actions設定

Githubの対象リポジトリで、さきほど作成したロールのARNをシークレット変数に追加します。
(settings → Secrets and variables → Actions)
AWS_ROLE_TO_ASSUMEという名前の変数に、さきほどのロールARNを設定します。

これで設定したシークレット変数は↓のように3つになります。

cca-bedrock-3.png

最後にGitHub Actionsワークフローファイルの作成します。
対象リポジトリの.github/workflowsに
以下の内容でymlを作成しましょう。

このワークフローでは、GitHub上でPRやIssue、コメントが作成された際に、
Claudeを呼び出してコード生成などを行います。

name: Claude Code Action

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

on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
  issues:
    types: [opened, assigned]

jobs:
  claude-pr:
    if: |
      (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))
    runs-on: ubuntu-latest
    env:
      AWS_REGION: us-east-1
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Generate GitHub App token
        id: app-token
        uses: actions/create-github-app-token@v2
        with:
          app-id: ${{ secrets.APP_ID }}
          private-key: ${{ secrets.APP_PRIVATE_KEY }}

      - name: Configure AWS Credentials (OIDC)
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
          aws-region: us-east-1

      - uses: anthropics/claude-code-action@beta
        with:
          model: "arn:aws:bedrock:us-east-1:<AWSアカウントID>:inference-profile/us.anthropic.claude-sonnet-4-20250514-v1:0"
          use_bedrock: "true"
          github_token: ${{ steps.app-token.outputs.token }}
          trigger_phrase: "@claude"
          timeout_minutes: "60"

トリガー設定は↓で、

  • IssueやPRのコメントが新規作成されたとき
  • Issueが新規作成・アサインされたとき

にワークフローがemitされます。

on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
  issues:
    types: [opened, assigned]

以下では、Claudeを呼び出す条件設定です。
コメントやIssue本文に @claude というフレーズが含まれている場合のみ、
Claudeによる処理が実行されます。

if: |
  (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
  (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
  (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))

以下の記述で
GitHub Action(anthropics/claude-code-action@beta)を利用し、
ClaudeをAmazon Bedrock経由で呼び出しています。

  • github_token : GitHub App経由で発行したトークンを利用
  • trigger_phrase : トリガーとなるフレーズ(@claude)を指定

※使用するモデルはAWSコンソールでリクエストしておいてください

- uses: anthropics/claude-code-action@beta
  with:
    model: "arn:aws:bedrock:us-east-1:<AWSアカウントID>:inference-profile/us.anthropic.claude-sonnet-4-20250514-v1:0"
    use_bedrock: "true"
    github_token: ${{ steps.app-token.outputs.token }}
    trigger_phrase: "@claude"
    timeout_minutes: "60"

なお、custom_instructionsオプションを使えば
Claudeにプロジェクト独自の指示を与えることができるとのことです。

実際に対象リポジトリにissueを作成し、@claudeで指示を与えてみました。
するとワークフローが動き出し、以下のようにissueにコメントが追加されます。

cca-bedrock-2.png

しばらくすると以下のように修正内容とともにブランチが作成されます。
また、Create PRリンクをクリックすればPR作成画面になります。

cca-bedrock-5.png

View jobをクリックするとjobのログがみれます。
実際に何をやったかわかるのもいい感じです。

Summary

今回はClaude Code ActionをBedrock経由で使ってみました。
少々セットアップは必要ですが、コード修正もしっかりやってくれました。
まだベータ版ですが、いまのうちからいろいろと試してみようかと思います。

References

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.