Claude Code ActionをBedrockで動かす
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しましょう。
次に、秘密鍵をリポジトリのシークレット変数として追加します。
対象リポジトリの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を追加しましょう。
以下の情報で作成します。
- プロバイダーのタイプ:
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アカウントIDYOUR_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つになります。
最後に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にコメントが追加されます。
しばらくすると以下のように修正内容とともにブランチが作成されます。
また、Create PRリンクをクリックすればPR作成画面になります。
View jobをクリックするとjobのログがみれます。
実際に何をやったかわかるのもいい感じです。
Summary
今回はClaude Code ActionをBedrock経由で使ってみました。
少々セットアップは必要ですが、コード修正もしっかりやってくれました。
まだベータ版ですが、いまのうちからいろいろと試してみようかと思います。