記事公開日
【Claude Code on Amazon Bedrock】 エンタープライズで利用可能なClaude Code環境を構築する方法

この記事のポイント
Anthropicの公式ガイダンス「Guidance for Claude Code with Amazon Bedrock」を使い、WSL2環境からClaude Code on Bedrockのフルスタック構成をデプロイした記録です。
- フルスタック構成:
認証(Cognito + IAM Federation)、モニタリング(OpenTelemetry + CloudWatch)、Analytics(Kinesis Firehose + Athena)、Quota管理をまとめてデプロイ - Windowsエンドユーザーへの配布:
CodeBuildでWindows向けバイナリをビルドし、Presigned S3 URLで配布。install.batのバグを修正したfix-setup.ps1も作成 - ハマりポイントと解決策:
CodeBuildのSSL証明書エラー、install.batのエスケープ問題、Marketplace権限エラー(403)の3つのトラブルと対処法を解説
- 目次
-
- はじめに
- Step 1: リポジトリのクローンと依存関係インストール
- Step 2: Cognito User Poolのデプロイ
- Step 3: ccwb init(対話式ウィザード)
- Step 4: ccwb deploy
- Step 5: ccwb package(Windows向け)
- Step 6: パッケージビルド(Linux + Windowsアーティファクト取得)
- Step 7: ccwb distribute(S3アップロード + Presigned URL生成)
- Step 8: 配布パッケージの中身
- Step 9: Claude Codeへの接続確認
- トラブルシューティング
- まとめ
はじめに
DXソリューション営業本部の三浦です。
Anthropicの「Claude Code」をAmazon Bedrock経由でエンタープライズ利用するための公式ガイダンス「Guidance for Claude Code with Amazon Bedrock」を、WSL2(Ubuntu 24.04)環境でデプロイし、Windowsユーザーでの接続確認をした記録です。
AWSブログ「Claude Code deployment patterns and best practices with Amazon Bedrock」で推奨されているベストプラクティス構成(Direct IdP + OpenTelemetry + Analytics)をフルスタックで構築しました。
Claude Codeの利用形態: Bedrock経由 vs Anthropic直契約
Claude Codeを組織で利用する場合、大きく分けて「Amazon Bedrock経由」と「Anthropicとの直契約」の2つのパスがあります(出典: Claude for Enterprise Premium Seats with Claude Code Now Available in AWS Marketplace)。どちらも同じClaudeモデルにアクセスできますが、料金体系・管理方式・エンタープライズ統制の観点で大きく異なります。
料金体系の比較
| 比較項目 | Amazon Bedrock経由 | Anthropic直契約 |
|---|---|---|
| 課金モデル | トークン従量課金(API利用量ベース) | サブスクリプション(シート単位)またはAPI従量課金 |
| 個人向けプラン | ― | Pro: $20/月、Max: $100/月(5x)または$200/月(20x) |
| チーム向けプラン | ― | Team: $25/seat/月(Standard)、$125/seat/月(Premium) |
| エンタープライズ | オンデマンド従量課金 | Enterprise: 要問合せ(AWS Marketplace経由でも購入可) |
| Claude Opus 4.6 入力 | $5 / MTok | $5 / MTok |
| Claude Opus 4.6 出力 | $25 / MTok | $25 / MTok |
| Claude Sonnet 4.6 入力 | $3 / MTok | $3 / MTok |
| Claude Sonnet 4.6 出力 | $15 / MTok | $15 / MTok |
※ Bedrock経由の料金はGlobal Cross-region Inference(本記事の構成)の場合。
出典: Anthropic公式 API Pricing、claude.com/pricing(サブスクリプション料金)、AWS Bedrock Pricing、Claude Code Costs
Anthropic公式ドキュメントによると、Claude CodeのAPI利用時の平均コストは開発者1人あたり1日約$6で、90%のユーザーは1日$12以下に収まるとされています。Sonnet 4.6利用時の月額目安は$100〜200/開発者程度ですが、利用パターンにより大きく変動します。
エンタープライズ統制の比較
| 比較項目 | Amazon Bedrock経由 | Anthropic直契約(Team/Enterprise) |
|---|---|---|
| 認証 | IAM + OIDC Federation(既存IdP連携) | OAuth(Anthropicアカウント) |
| コスト管理 | AWS Cost Explorer、タグベース配賦、ユーザー単位Quota | 組織レベルの利用量分析、Extra Usage設定 |
| モニタリング | CloudWatch、OpenTelemetry、Athena Analytics | Anthropic Console(利用量レポート) |
| データの学習利用 | 学習に使用されない(AWS公式) | Free/Pro/Max: オプトアウト可(デフォルトで学習に使用)。Team/Enterprise/API: 学習に使用されない(Anthropic公式) |
| コンプライアンス | AWS準拠(SOC、ISO、HIPAA等) | Anthropic Trust Center準拠 |
| 請求統合 | AWS一括請求(Organizations対応) | Anthropic直接 or AWS Marketplace経由 |
| デプロイ管理 | 自前構築(Guidance for Claude Code with Bedrock等) | Anthropic側でフルマネージド |
どちらを選ぶべきか
- Bedrock経由が向いているケース: 既存のAWSインフラとの統合が必要、IAMベースの細かいアクセス制御が必要、AWS Cost Explorerでのコスト配賦が必要、データ所在地の要件がある
- Anthropic直契約が向いているケース: 即座に利用開始したい、デプロイ・運用の手間を最小化したい、サブスクリプションで予算を固定したい、少人数チームで手軽に始めたい
本記事ではBedrock経由のパスを選択し、認証・モニタリング・Analytics・Quotaのフルスタック構成をデプロイします。
公式ガイダンスの概要
「Guidance for Claude Code with Amazon Bedrock」は、Claude Codeを組織で安全に利用するためのデプロイツールキットです。CLIツール ccwb(Claude Code With Bedrock)を中心に、対話式ウィザードでインフラ構築からユーザー配布まで一貫して行えます。
ccwb CLIの主要コマンド
| コマンド | 説明 |
|---|---|
ccwb init |
対話式ウィザードで認証・モニタリング・配布の設定を生成 |
ccwb deploy |
CloudFormationスタック群を一括デプロイ |
ccwb package |
プラットフォーム別の認証バイナリをビルド |
ccwb builds |
CodeBuild(Windows向け)のビルド状態確認・ダウンロード |
ccwb distribute |
S3にアップロードしPresigned URLを生成 |
ccwb test |
認証→Bedrock APIアクセスの動作確認 |
ccwb quota |
ユーザー単位のトークン使用量を確認・管理 |
ccwb status |
デプロイ済みスタックの状態確認 |
ccwb destroy |
全スタックの削除 |
認証の仕組み
既存のOIDC IdP(Okta、Azure AD、Auth0、Cognito User Pools)とAWS IAMをフェデレーションし、一時的なAWS認証情報を発行します。APIキーの配布・ローテーションが不要で、ユーザーは企業の認証情報でログインするだけでClaude Codeが使えます。
認証フロー: ユーザー → IdPログイン → IDトークン取得 → IAM STS AssumeRoleWithWebIdentity → 一時認証情報 → Bedrock API
デプロイされるインフラ
┌─ 認証基盤(必須) │ ├── IAM OIDC Provider + フェデレーションロール │ └── Cognito User Pool(IdPとして使用する場合) │ ├─ 配布基盤(オプション) │ ├── S3バケット + Presigned URL生成用IAMユーザー │ └── CodeBuild(Windows向けバイナリビルド) │ ├─ モニタリング基盤(オプション) │ ├── VPC + ECS Fargate(OpenTelemetryコレクター) │ ├── CloudWatch Dashboard │ └── Kinesis Firehose + S3 + Athena(Analytics) │ └─ Quota管理(オプション) └── API Gateway + Lambda + DynamoDB(ユーザー単位トークン制限)
対応プラットフォーム
ユーザーに配布する認証バイナリは、Windows(Nuitka/CodeBuild)、macOS ARM64/Intel(PyInstaller)、Linux x64/ARM64(PyInstaller/Docker)に対応。エンドユーザーはPythonのインストール不要で、fix-setup.ps1(Windows)またはinstall.sh(macOS/Linux)を実行するだけでセットアップが完了します。
補足: guidanceが生成する
install.batはPowerShellコマンドのエスケープ処理に問題があり、settings.jsonの配置とAWSプロファイル設定が失敗します。そのため、同等の処理をPowerShellネイティブで実装したfix-setup.ps1を作成し、Windowsユーザーにはこちらを使用してもらいました。
今回の構成
| 項目 | 選択 |
|---|---|
| 認証 | Direct IAM Federation(Cognito User Pools) |
| モデル | Claude Opus 4.6(Global Cross-Region) |
| モニタリング | OpenTelemetry + CloudWatch Dashboard |
| Analytics | Kinesis Firehose + Athena |
| Quota | ユーザー単位トークン制限(alert mode) |
| 配布 | Presigned S3 URL + Windows CodeBuild |
環境
- Windows 11 + WSL2(Ubuntu 24.04.4 LTS)
- Python 3.12.3(Ubuntu 24.04プリインストール)
- AWS CLI v2.34.1
- Poetry 2.3.3
- Guidance for Claude Code with Amazon Bedrock v2.1.0
Step 1: リポジトリのクローンと依存関係インストール
$ cd ~/work/claude-code-on-bedrock $ git clone https://github.com/aws-solutions-library-samples/guidance-for-claude-code-with-amazon-bedrock $ cd guidance-for-claude-code-with-amazon-bedrock/source $ poetry env use python3.12 $ poetry install
Installing dependencies from lock file Package operations: 83 installs, 0 updates, 0 removals ... Installing the current project: claude-code-with-bedrock (2.1.0)
Step 2: Cognito User Poolのデプロイ
リポジトリ付属のスクリプトで非対話モードでデプロイできます。
$ bash deployment/scripts/deploy-cognito.sh \
--stack-name kensyo-claude-code-cognito \
--region ap-northeast-1 \
--domain-prefix kensyo-claude-code
→ Deploying Cognito User Pool stack... Successfully created/updated stack - kensyo-claude-code-cognito ✓ Cognito User Pool deployed successfully ╭─── Claude Code Configuration ───╮ To use with Claude Code CLI authentication (native app): poetry run ccwb init - Provider Domain: kensyo-claude-code.auth.ap-northeast-1.amazoncognito.com - User Pool ID: ap-northeast-1_XXXXXXXXX - Client ID: XXXXXXXXXXXXXXXXXXXXXXXXXX
この出力値はccwb initで使うので控えておきます。
Step 3: ccwb init(対話式ウィザード)
$ cd source $ poetry run ccwb init
ウィザードで設定した主要パラメータ:
| 項目 | 値 |
|---|---|
| Federation Type | Direct IAM |
| OIDC Provider Domain | kensyo-claude-code.auth.ap-northeast-1.amazoncognito.com |
| Client ID | (Step 2の出力値) |
| Cognito User Pool ID | (Step 2の出力値) |
| Claude Model | Claude Opus 4.6 (Global) |
| Cross-Region Profile | global |
| Monitoring | 有効 |
| Analytics | 有効 |
| Quota Monitoring | 有効(月10Mトークン、alert mode) |
| Windows Build | 有効(CodeBuild) |
| Distribution | presigned-s3 |
設定は ~/.ccwb/profiles/qes-claude-code-starter.json に保存されます。
Step 4: ccwb deploy
$ poetry run ccwb deploy
Deployment Plan: Stack Description Status auth Authentication Stack (Cognito + IAM) Update distribution Distribution infrastructure (S3 + IAM) Update networking VPC Networking for OTEL Collector Update s3bucket S3 Bucket Create monitoring OpenTelemetry Collector Update dashboard CloudWatch Dashboard Update analytics Analytics Pipeline (Kinesis Firehose + Athena) Update quota Quota Monitoring (Per-User Token Limits) Update codebuild CodeBuild for Windows binary builds Create Deployment complete!
最終的にデプロイされた全10スタック:
| スタック名 | 説明 |
|---|---|
kensyo-claude-code-cognito |
Cognito User Pool |
claude-code-auth-stack |
IAM認証(Direct IAMフェデレーション) |
claude-code-auth-distribution |
S3配布インフラ |
claude-code-auth-networking |
VPC(OTELコレクター用) |
claude-code-auth-s3bucket |
アーティファクト保存用S3 |
claude-code-auth-monitoring |
OpenTelemetryコレクター(ECS Fargate) |
claude-code-auth-dashboard |
CloudWatch Dashboard |
claude-code-auth-analytics |
Kinesis Firehose + Athena |
claude-code-auth-quota |
ユーザー単位トークン制限 |
claude-code-auth-codebuild |
Windows向けCodeBuildプロジェクト |
Step 5: ccwb package(Windows向け)
$ poetry run ccwb package # プラットフォーム選択: windows
Building credential process for windows... Build ID: claude-code-auth-windows-build:569b181e-... Windows build started! Build will take approximately 20+ minutes to complete. Monitor build progress: poetry run ccwb builds Error: No binaries were successfully built.
最後の「No binaries were successfully built」は紛らわしいですが、これはCodeBuildにビルドを投げた後のローカル側のメッセージです。実際のビルドはCodeBuild上でバックグラウンド実行されています。
ビルド状態の確認:
$ poetry run ccwb builds
Recent Builds for claude-code-auth-windows-build
┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━┓
┃ Build ID ┃ Status ┃ Started ┃ Duration ┃ Phase ┃
┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━┩
│ 569b181e │ ⏳ In Progress │ 2026-04-03 17:16 │ 0 min │ QUEUED │
└──────────┴────────────────┴──────────────────┴──────────┴────────┘
1回目のビルド(569b181e)はSSL証明書エラーで失敗しました(詳細はトラブルシューティング: SSL証明書エラーを参照)。パッチ適用・codebuildスタック再デプロイ後にリトライし、2回目のビルド(44bc3970)で成功:
$ poetry run ccwb deploy codebuild $ poetry run ccwb package --target-platform windows
Recent Builds for claude-code-auth-windows-build ┏━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┓ ┃ Build ID ┃ Status ┃ Started ┃ Duration ┃ Phase ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━┩ │ 44bc3970 │ ✓ Succeeded │ 2026-04-03 18:38 │ 21 min │ COMPLETED │ │ 569b181e │ ✗ Failed │ 2026-04-03 17:16 │ 16 min │ COMPLETED │ └──────────┴─────────────┴──────────────────┴──────────┴───────────┘
Step 6: パッケージビルド(Linux + Windowsアーティファクト取得)
配布フローの全体像
ccwb distribute(presigned-s3タイプ)はローカルのdist/にあるバイナリをzipにまとめてS3にアップロードする設計です。CodeBuildの成果物が直接配布用S3に入るわけではありません。
CodeBuild(Windows) → S3(codebuild-buildbucket) → ローカルdist/ ← Linux(ローカルビルド)
↓
ccwb distribute
↓
S3(distribution bucket) → Presigned URL → ユーザー
Step 6a: Linuxバイナリのローカルビルド
まずLinux向けバイナリをローカルでビルドします。これによりdist/にパッケージの骨格(config.json、install.sh、install.bat等)も生成されます。
$ poetry run ccwb package --target-platform linux
Building credential process for linux... Building Linux binary with PyInstaller... ✓ Linux binary built successfully with PyInstaller Building OTEL helper for linux with PyInstaller... ✓ OTEL helper built successfully with PyInstaller ✓ Package created successfully! Output directory: dist/qes-claude-code-starter/2026-04-06-170044
Step 6b: Windowsアーティファクトのダウンロード
Step 5でCodeBuildビルドは成功済みなので、アーティファクトをローカルにダウンロードします。
$ poetry run ccwb builds --status latest --download
Checking latest build: claude-code-auth-windows-build:44bc3970-... ✓ Build succeeded! Duration: 21 minutes Windows build artifacts are ready! Target: dist/qes-claude-code-starter/2026-04-06-170044 ✓ Downloaded Windows artifacts
Step 7: ccwb distribute(S3アップロード + Presigned URL生成)
$ poetry run ccwb distribute
Package contents: ✓ Windows executable (built: 2026-04-06 08:22) ✓ Linux x64 executable (built: 2026-04-06 17:01) ✓ Unix installer script ✓ Windows installer script ✓ Configuration file Ready to distribute for: windows, linux-x64 Uploading to S3 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100.0% • 74.0/74.0 MB ✓ Distribution package created successfully! Package Details: Filename: claude-code-package-20260406-193103.zip SHA256: 8c98304177ef02456bbac923807ea7a1dda18c1b290e6190b0bd611390d91901 Expires: 2026-04-08 19:31:05 Size: 70.5 MB
Presigned URLが生成され、ユーザーへの配布が可能になりました。URLの再取得は poetry run ccwb distribute --get-latest で可能です。
Step 8: 配布パッケージの中身
ccwb distributeで生成されるzipの中身を解説します。ユーザーに配布されるのはこのzipファイル(70.5 MB)です。
ファイル一覧
claude-code-package/ ├── credential-process-windows.exe (29 MB) Windows向け認証バイナリ(Nuitka製) ├── credential-process-linux-x64 (31 MB) Linux向け認証バイナリ(PyInstaller製) ├── otel-helper-windows.exe (5.9 MB) Windows向けOTELヘルパー ├── otel-helper-linux-x64 (7.2 MB) Linux向けOTELヘルパー ├── otel-helper.sh (657 B) OTELヘルパーのシェルラッパー(キャッシュ高速化) ├── config.json (583 B) 組織の認証設定 ├── install.bat (4.5 KB) Windowsインストーラー(※問題あり、fix-setup.ps1を使用) ├── fix-setup.ps1 install.batの修正版(PowerShellネイティブ実装) ├── install.sh (6.8 KB) macOS/Linuxインストーラー ├── claude-settings/ │ └── settings.json (865 B) Claude Codeのテレメトリ設定 └── README.md (3.8 KB) インストール手順
config.json
ccwb initで設定した組織の認証情報が埋め込まれています。ユーザーが手動で設定する必要はありません。
config.jsonの内容(クリックして展開)
{
"qes-claude-code-starter": {
"provider_domain": "kensyo-claude-code.auth.ap-northeast-1.amazoncognito.com",
"client_id": "1cofsdlt3920dl7l0r97fb8hhg",
"aws_region": "ap-northeast-1",
"provider_type": "cognito",
"federation_type": "direct",
"federated_role_arn": "arn:aws:iam::XXXXXXXXXXXX:role/BedrockCognitoFederatedRole",
"cross_region_profile": "global",
"selected_model": "global.anthropic.claude-opus-4-6-v1"
}
}
claude-settings/settings.json
Claude Codeの環境変数とテレメトリ設定です。fix-setup.ps1(Windows)/install.sh(macOS/Linux)がプレースホルダーを実際のパスに置換して~/.claude/settings.jsonに配置します。
settings.jsonの内容(クリックして展開)
{
"env": {
"AWS_REGION": "ap-northeast-1",
"CLAUDE_CODE_USE_BEDROCK": "1",
"AWS_PROFILE": "qes-claude-code-starter",
"ANTHROPIC_MODEL": "global.anthropic.claude-opus-4-6-v1",
"ANTHROPIC_SMALL_FAST_MODEL": "global.anthropic.claude-3-5-haiku-20241022-v1:0",
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://otel-collector-alb-XXXXXXXXX.ap-northeast-1.elb.amazonaws.com"
}
}
ポイント:
CLAUDE_CODE_USE_BEDROCK=1とAWS_PROFILEがsettings.jsonに含まれるため、ユーザーが環境変数を手動設定する必要がない- OTELエンドポイントも埋め込み済みで、テレメトリが自動的にCloudWatchに送信される
- メインモデルはClaude Opus 4.6(Global Cross-Region)、高速モデルはClaude 3.5 Haiku
install.bat の問題と fix-setup.ps1 での対応
guidanceが生成するinstall.batにはPowerShellコマンドのエスケープ処理に問題があり、settings.jsonの配置とAWSプロファイル設定が失敗します(詳細はトラブルシューティング: install.batのエスケープ問題を参照)。
そのため、同等の処理をPowerShellネイティブで実装したfix-setup.ps1を作成し、Windowsユーザーにはこちらを配布します。
fix-setup.ps1が行う処理:
- AWS CLIの存在チェック
%USERPROFILE%\claude-code-with-bedrock\ディレクトリを作成credential-process-windows.exe→credential-process.exeにリネームしてコピーotel-helper-windows.exe→otel-helper.exeにリネームしてコピーconfig.jsonをコピーclaude-settings/settings.jsonのプレースホルダーを実際のパスに置換して~/.claude/settings.jsonに配置- AWS CLIプロファイルを作成(
credential_processにcredential-process.exeのパスを設定)
ユーザーはパッケージフォルダ内で以下を実行するだけでセットアップが完了します:
powershell -ExecutionPolicy Bypass -File fix-setup.ps1
otel-helper.sh(キャッシュ高速化ラッパー)
PyInstallerバイナリの起動に約6秒かかるため、シェルラッパーでキャッシュファイルを先にチェックする設計です。キャッシュヒット時はバイナリを起動せずにファイルから直接返すため、テレメトリのオーバーヘッドを最小化しています。
Step 9: Claude Codeへの接続確認
デプロイ完了後、Cognito経由でログインしてClaude Codeへの接続を確認します。初回接続時にMarketplace権限エラー(403)が発生する場合は、トラブルシューティング: Marketplace権限エラーを参照してください。
トラブルシューティング
1. Windows CodeBuildのSSL証明書エラー(Nuitka GCCダウンロード失敗)
GitHub Issue #121 で報告されている既知の問題です。
CodeBuildのWindows Server 2022コンテナにCA証明書バンドルが存在せず、NuitkaがGitHubからMinGW(GCCコンパイラ)をダウンロードする際にSSL検証に失敗します。
FATAL: Failed to download '...winlibs_mingw...' due to '<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1010)>'
解決策: deployment/infrastructure/codebuild-windows.yamlを2箇所修正します。
1. CodeBuildプロジェクトのEnvironmentに環境変数を追加:
Environment:
Type: WINDOWS_SERVER_2022_CONTAINER
ComputeType: BUILD_GENERAL1_LARGE
Image: aws/codebuild/windows-base:2022-1.0
PrivilegedMode: false
EnvironmentVariables: # 追加
- Name: SSL_CERT_FILE # 追加
Value: C:\Python312\Lib\site-packages\certifi\cacert.pem # 追加
Type: PLAINTEXT # 追加
2. buildspecのpre_buildフェーズにcertifiインストールを追加:
pre_build:
commands:
- echo Installing build dependencies...
- C:\Python312\python.exe -m pip install --upgrade pip
# ↓ 以下3行を追加
- echo Installing certifi for SSL certificates...
- C:\Python312\python.exe -m pip install certifi
- $env:SSL_CERT_FILE = "C:\Python312\Lib\site-packages\certifi\cacert.pem"
- '[Environment]::SetEnvironmentVariable("SSL_CERT_FILE", "C:\Python312\Lib\site-packages\certifi\cacert.pem", "Process")'
# ↑ ここまで追加
- C:\Python312\python.exe -m pip install nuitka==2.7.12 ordered-set zstandard
修正後、codebuildスタックを再デプロイしてからビルドを再実行:
poetry run ccwb deploy codebuild poetry run ccwb package --target-platform windows
2. install.batのエスケープ問題
guidanceが生成するinstall.batは、settings.jsonのプレースホルダー置換処理でcmd.exeからPowerShellを呼び出す際、^による行継続とバックスラッシュのエスケープが正しく機能せず、「-replace の使い方が誤っています。」エラーで途中停止します。この結果、settings.jsonの配置とAWSプロファイル設定が実行されません。
また、AWSプロファイルのリージョン設定で!PROFILE_REGION!(遅延展開変数)を使用していますが、setlocal enabledelayedexpansionが宣言されていないため、リージョン設定も正しく動作しません。
解決策: install.batと同等の処理をPowerShellネイティブで実装したfix-setup.ps1を作成し、Windowsユーザーにはこちらを配布します(Step 8の「install.bat の問題と fix-setup.ps1 での対応」を参照)。
3. BedrockのMarketplace権限エラー(403)
エンドユーザーがClaude Codeを起動し say hello と入力すると、以下のエラーで応答が返りません:
403 Model access is denied due to IAM user or service role is not authorized to perform the required AWS Marketplace actions (aws-marketplace:ViewSubscriptions, aws-marketplace:Subscribe)
guidanceのCFnテンプレート(bedrock-auth-cognito-pool.yaml)のIAMポリシーに aws-marketplace:ViewSubscriptions / aws-marketplace:Subscribe が含まれていないことが原因です。Claude Code公式ドキュメントのIAM configurationセクションではこれらの権限が必須とされています。
解決策: ccwb deploy 完了後、IAMロールにインラインポリシーを手動追加します:
aws iam put-role-policy \
--role-name BedrockCognitoFederatedRole \
--policy-name MarketplaceAccess \
--policy-document '{"Version":"2012-10-17","Statement":[{"Sid":"AllowMarketplaceSubscription","Effect":"Allow","Action":["aws-marketplace:ViewSubscriptions","aws-marketplace:Subscribe"],"Resource":"*","Condition":{"StringEquals":{"aws:CalledViaLast":"bedrock.amazonaws.com"}}}]}' \
--profile kensyo-admin
Condition により、Bedrock経由の呼び出し時のみ権限が有効になります。CFnテンプレートへのパッチではなくインラインポリシーとしたのは、公式のCFn更新と競合しないためです。
まとめ
WSL2環境からClaude Code on Bedrockのフルスタック(認証 + モニタリング + Analytics + Quota)をデプロイし、ユーザーへの配布パッケージ作成・Windowsエンドユーザーへの展開まで完了しました。
ccwbツールは対話式ウィザードで設定を進められるため手順自体はシンプルですが、以下のハマりポイントがありました(詳細はトラブルシューティングを参照):
- ccwb v2.1.0のバグ: CodeBuildのSSL証明書未設定(トラブルシューティング1)
- install.batのバグ: PowerShellコマンドのエスケープ処理が壊れており、Windowsユーザーのセットアップが失敗する。修正版の
fix-setup.ps1を作成して対応(トラブルシューティング2) - IAMポリシーの不足: Marketplace権限がCFnテンプレートに含まれておらず、Bedrockのモデル呼び出しが403エラーになる。インラインポリシーで手動追加(トラブルシューティング3)
guidanceは便利なツールキットですが、Windowsエンドユーザーへの展開まで含めると公式テンプレートだけでは完結しない部分があります。パッチ適用・fix-setup.ps1の同梱・IAMポリシーの手動追加など、自前の修正レイヤーを被せる運用が現時点では必要です。導入のサポートやセキュリティポリシーのコンサルティング支援も可能なのでお問い合わせください。
AWSの導入支援につきましては、弊社お問合せフォームまでお気軽にご連絡ください。 複雑な内容に関するお問い合わせの場合には直接営業からご連絡を差し上げます。 また、よろしければ以下のリンクもご覧ください!
<QES関連ソリューション/ブログ>
<QESが参画しているAWSのセキュリティ推進コンソーシアムがホワイトペーパーを公開しました>
※Amazon Web Services、"Powered by Amazon Web Services"ロゴ、およびブログで使用されるその他のAWS商標は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。
※Claude、Claude CodeはAnthropic, PBCの商標または登録商標です。


