話題のClaude CodeやClaude Code Actionを利用するには、Claudeモデルを呼び出すためのAnthropic APIが必要です。
組織やチームで利用するためには個人アカウントで払い出したAPIキーは管理上よろしくないですし、かといってClaudeのTeamプランやEnterpriseプランを導入するのは難しい場合があるかもしれません。
ですが、AWSのAmazon BedrockやGoogle CloudのVertex AIをモデルプロバイダーとすることで、クラウド基盤をそのまま利用してセキュアにClaude CodeおよびClaude Code Actionを利用することが可能になります。
本記事ではVertex AIを使ってチームで運用しやすくするための手順を考案してみます。
詳細なユースケースは割愛します。
KAGのみのるんさん(@minorun365)のスライドがとても分かりやすいです。
予め自分がオーナー権限を持つGoogle Cloudプロジェクトが用意されているものとします。
Claude Code運用用のプロジェクトを一つ用意したほうが管理しやすいでしょう。
Claudeの呼び出しコストはまあまあお値段が張るので、予算アラートは必ず設定しておきましょう。
IAMを追加してVertex AIの権限を与える
利用したいユーザーにVertex AIの権限を与えます。
Google Cloudプロジェクトの管理者を決めて運用したほうがいいと思います。
Cloud Shellで下記のコマンドを実行します。
MEMBER_EMAIL=
PROJECT_ID=$(gcloud config get-value project)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member=user:$MEMBER_EMAIL \
--role=roles/aiplatform.user
権限があたったら利用者自身にClaude Codeをセットアップしてもらいます。
利用者がローカルでセットアップ
対象アドレスでのGoogle Cloudへのログイン。
gcloud auth application-default login
Claude Codeのインストール。
npm install -g @anthropic-ai/claude-code
環境変数の設定。
.zshrc
# Claude Code
export ANTHROPIC_MODEL='claude-opus-4@20250514'
export ANTHROPIC_SMALL_FAST_MODEL='claude-sonnet-4@20250514'
export CLAUDE_CODE_USE_VERTEX=1
export CLOUD_ML_REGION='us-east5'
export ANTHROPIC_VERTEX_PROJECT_ID=''
Claude Codeが起動したらOKです。
ターミナル以外にもVSCode拡張機能から使うこともできます。
また、認証をそのまま使ってClineを利用することもできます。
個人のローカル環境で動かしてAI駆動開発を実現できるのがClaude Codeでしたが、これをGitHub Actionsベースで動かせるClaude Code Actionがあります。
GitHubという開発プラットフォームを利用して、Claudeをまるでメンバーの1人のように参加させることができるのでよりチームでのAI駆動開発に適しています。
この分野はOpenAIのCodexやGoogleのJulesもありますが、GitHubとモデルプロバイダーで完結するのがClaude Code Actionの良いところです。
以下が設定手順例となります。
Google Cloudの設定
Workload Identityプールを作成する
GitHub ActionsとGoogle Cloudプロジェクトをフェデレーションしてアクセス権を付与するためにWorkload Identity連携を設定します。
- プール名(任意):
Claude Code Action Connector
- プールID(任意):
claude-code-action-connector
- プロバイダの選択:OpenID Connect(OIDC)
- プロバイダ名(任意):
GitHub Actions
- 発行元(URL):
https://token.actions.githubusercontent.com
- オーディエンス:デフォルトのオーディエンス
- 属性のマッピング
-
attribute.repository
:assertion.repository
-
google.repository
:assertion.repository
-
- 属性条件
assertion.repository.startsWith('/')
ここでは不正利用を防止するため組織のGitHub Organization名以外のリポジトリからアクセスできない設定をしています。
サービスアカウントを作成し、プールに接続する
GitHub Actionsが使うためのサービスアカウントを作成します。
開発プロジェクトごとに払い出す想定をしています。
具体的な作業としては、サービスアカウントを作成し以下の権限を付与。
- Vertex AI ユーザー
- Workload Identity ユーザー
- サービス アカウント トークン作成者
プールにサービスアカウントのアクセスを許可し、subjectにリポジトリのowner/repoをマッピングする作業となりますが下記のコマンドで実行できます。
POOL_ID=""
GITHUB_OWNER=""
REPO_NAME=""
PROJECT_NUMBER=$(gcloud projects describe $(gcloud config get-value project) --format="value(projectNumber)")
PROJECT_ID=$(gcloud config get-value project)
# サービスアカウントの作成
gcloud iam service-accounts create $REPO_NAME \
--display-name $REPO_NAME
SA_EMAIL="${REPO_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"
# 権限を付与
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${SA_EMAIL}" \
--role="roles/aiplatform.user"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${SA_EMAIL}" \
--role="roles/iam.workloadIdentityUser"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${SA_EMAIL}" \
--role="roles/iam.serviceAccountTokenCreator"
# サービスアカウントをプールに接続
gcloud iam service-accounts add-iam-policy-binding "${SA_EMAIL}" \
--role="roles/iam.workloadIdentityUser" \
--member="principal://iam.googleapis.com/projects/${PROJECT_NUMBER}/locations/global/workloadIdentityPools/${POOL_ID}/subject/${GITHUB_OWNER}/${REPO_NAME}"
echo $SA_EMAIL
もしモノレポ構成ではなくポリレポ構成をとっていて複数のリポジトリでサービスアカウントを使いまわしたい場合は、下記のコマンドをリポジトリ数ぶん書き換えて実行します。
REPO_NAME=""
gcloud iam service-accounts add-iam-policy-binding "${SA_EMAIL}" \
--role="roles/iam.workloadIdentityUser" \
--member="principal://iam.googleapis.com/projects/${PROJECT_NUMBER}/locations/global/workloadIdentityPools/${POOL_ID}/subject/${GITHUB_OWNER}/${REPO_NAME}
# 確認
gcloud iam service-accounts get-iam-policy $SA_EMAIL
GitHubの設定
GitHub Appをインストール
Claude Code Actionsを動作させるためのGitHub Appをインストールします。
公式はこちらですが、自前で用意することもできます。
リポジトリシークレットの設定
-
GCP_SERVICE_ACCOUNT
:前段で作成したサービスアカウントのメールアドレス -
GCP_WORKLOAD_IDENTITY_PROVIDER
:projects/
/locations/global/workloadIdentityPools/ /providers/
※前段で作成したWorkload Identityプールのコンソール画面から取得 -
GCP_PROJECT_ID
:Google CloudプロジェクトID
ワークフローを追加
GitHub Actionsワークフローファイルをリポジトリに設置。
.github/workflows/claude_code_vertex.yaml
name: Claude Code with Vertex AI
on:
issues:
types: [opened, edited]
issue_comment:
types: [created, edited]
pull_request_review:
types: [submitted, edited]
pull_request_review_comment:
types: [created, edited]
concurrency:
group: ${{ github.event.pull_request.number || github.event.issue.number || github.run_id }}
cancel-in-progress: true
jobs:
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.event_name == 'pull_request_review' &&
contains(github.event.review.body, '@claude'))
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
id-token: write
contents: write
issues: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Authenticate to Google Cloud
uses: google-github-actions/auth@v2
with:
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}
- uses: anthropics/claude-code-action@beta
env:
ANTHROPIC_VERTEX_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
CLOUD_ML_REGION: us-east5
CLAUDE_CODE_PRIMARY_MODEL: claude-opus-4-20250514
CLAUDE_CODE_ASSISTANT_MODEL: claude-sonnet-4-20250514
ANTHROPIC_VERTEX_ENABLE_PROMPT_CACHING: true
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
use_vertex: "true"
max_turns: 10
timeout_minutes: 20
trigger_phrase: "@claude"
allowed_tools: "Bash"
これで、イシューやプルリク上で @claude
とメンションし指示することで、GitHub Actionsが動作し、イシューやプルリク、コードの内容を読み取り、Claudeによるタスク実行やレビュー、提案が受けられるようになります!
ワークフローはサンプルなので用途でアレンジしてください。
ユーザーのメンショントリガーだけではなく、他のトリガーで動作を行わせることも可能です。
また、プロジェクトルートにClaudeにコンテキストを提供するためのCLAUDE.mdを追加します。
CLAUDE.md
# CLAUDE.md
このファイルは、このリポジトリでコードを扱う際にClaude Code (claude.ai/code) に対してガイダンスを提供します。
## 原則
- ユーザーへの応答は必ず日本語で行うこと
こちらにプロジェクトのコーディングルールや、仕様などを記述することでより精度の高いアウトプットが期待できます。
これで、Claude Codeを関単にチームに導入する準備が整いました!
レッツAI駆動開発🚀
Views: 0