日曜日, 6月 8, 2025
- Advertisment -
ホームニューステックニュースVertex AIでClaude CodeとClaude Code Action実行してセキュアなAI駆動開発環境をチームに導入しよう #GoogleCloud

Vertex AIでClaude CodeとClaude Code Action実行してセキュアなAI駆動開発環境をチームに導入しよう #GoogleCloud



Vertex AIでClaude CodeとClaude Code Action実行してセキュアなAI駆動開発環境をチームに導入しよう #GoogleCloud

話題のClaude CodeClaude 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拡張機能から使うこともできます。

image.png

image.png

また、認証をそのまま使ってClineを利用することもできます。

image.png

個人のローカル環境で動かして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_PROVIDERprojects//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駆動開発🚀





Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -