Bedrock 経由の Claude Code の使用に SSO 認証をかける
はじめに
こんにちは、AI 事業本部の Kanaru です。
最近 Claude Code や Cowork の需要が高まっていますが、Claude の特定プランを契約したり、API キーを発行する以外にも導入方法は様々あります。その中でも今回は Guidance for Claude Code and Cowork on Amazon Bedrock を使用して、企業での導入を想定した Claude Code のセットアップと、ID プロバイダとの連携を行なってみたので紹介します。
この記事で紹介しないこと
この記事では最低限の前提条件での構築に限って紹介します。本来は、カスタムドメインの設定やユーザー向けのランディングページの構築が可能ですが、こちらは取り扱いません。
対象読者
- Claude Code や Cowork を Bedrock を通して使用したい人
- Claude Code や Cowork の認証を ID プロバイダによる SSO で行いたい人
前提条件
以下の条件で検証しています。これらのソフトウェアはすでにインストールされている前提とします。
- macOS Tahoe 26.4.1 (Apple M5)
- Poetry (version 2.4.1)
- aws-cli/2.34.45 Python/3.14.4 Darwin/25.4.0 exe/arm64
- Cognito のユーザープール作成のために使用します。既存の ID プロバイダを連携させる場合には不要です。
- podman version 5.8.2
- 異なる OS や CPU アーキテクチャ向けのビルドに使用します。同一の OS や CPU アーキテクチャのみのビルドを想定する場合には不要です。
- 異なる OS 向けであっても、Windows 向けのビルドに限っては CodeBuild を使用するので不要です。
- 今回は podman を使用していますが、docker の方が好ましいです (理由は後ほど説明します)。
また、デプロイ先の AWS アカウントへの認証は通っていて、適切な権限が付与されているものとします。
概要
今回は、Guidance for Claude Code and Cowork on Amazon Bedrock を使用して Amazon Bedrock を経由した Claude Code 環境のセットアップと、ユーザーへの配布を想定した配布用パッケージの作成を実施します。
このソリューションを使用すると、管理者がユーザーに Claude Code の設定ファイルを配布しできます。ユーザーは SSO を通して AWS の一時的な認証情報を取得し、Bedrock 経由の Claude Code の使用ができるようになります。
ソリューション自体の詳細な説明は以下の記事を参照してください。
リポジトリのクローン
まずはリポジトリをクローンします。
git clone https://github.com/aws-solutions-library-samples/guidance-for-claude-code-with-amazon-bedrock.git
ID プロバイダの用意
まずは、認証に使用する ID プロバイダを用意します。今回は新しく Cognito User Pool を作成します。
User Pool 作成用の CloudFormation スタックはリポジトリに用意されているので、今回はそれを使うことにします。
aws cloudformation deploy \
--template-file deployment/infrastructure/cognito-user-pool-setup.yaml \
--stack-name claude-code-user-pool \
--capabilities CAPABILITY_IAM \
--parameter-overrides \
UserPoolName=<UserPool名> \
DomainPrefix=<DomainPrefix> \
CallbackURLs=http://localhost:8400/callback
上記コマンドは <UserPool名> と <DomainPrefix> を適切に設定して、リポジトリルートで実行してください。
UserPoolName には userpool か cognito の文字列を含めることで、後のステップで自動で認識してくれるようになります。
また、DomainPrefix はリージョンで固有なので十分注意してください。つまり、他のアカウントで作成した DomainPrefix であっても、同じリージョンですでに使われている場合にはその値は使用できません。
デプロイが完了したら、次の値を控えておきます。
- Cognito ドメイン
- 作成した User Pool の画面から
ブランディング > ドメインにアクセスし、コピーできます。
- 作成した User Pool の画面から
- ユーザープール ID
- 作成した User Pool の画面から
概要にアクセスし、コピーできます。
- 作成した User Pool の画面から
- クライアント ID
- 作成した User Pool の画面から
アプリケーション > アプリケーションクライアント > claude-code-auth-clientにアクセスし、コピーできます。
- 作成した User Pool の画面から

Cognito ドメイン

ユーザープール ID

クライアント ID
また、このタイミングで動作確認で使用するユーザーを作成しておきます。
ccwb の設定
ここからは、Claude Code 用の Bedrock と認証システムのデプロイ設定を行なっていきます。設定には ccwb コマンドを使用します。
まずは、source ディレクトリに移動し、ccwb を初期化します。
cd source
poetry install
poetry run ccwb init
プロンプトが出るので、指示に従います。
項目数が多いですが、一つひとつ説明します。
Profile name
ユーザーの端末に作成される AWS Profile 名です。指示の通り、{プロジェクト}-{環境}-{リージョン} という形式で指定します。
Profile Name
Choose a descriptive name for this deployment profile.
Suggested format: {project}-{environment}-{region}
Examples: acme-prod-us-east-1, internal-dev-us-west-2
? Profile name: ccwb0-dev-ap-northeast1
SSO Authentication
Claude Code の使用にあたって SSO 認証をかけるかどうかです。今回は Cognito User Pool で認証をかけるので、Yes とします。
SSO Authentication
Enable Single Sign-On authentication via identity providers
(Okta, Auth0, Azure AD, AWS Cognito)
When disabled:
• Uses AWS IAM roles for access control
• Metrics will use anonymous tracking based on IAM identity
• No user authentication required
? Enable SSO authentication? Yes
OIDC Provider Configuration
SSO 認証について、OIDC の情報を入力します。今回は ID プロバイダの用意 で控えた Cognito の情報を入力します。
? Enter your OIDC provider domain: (e.g., company.okta.com, company.auth0.com, login.microsoftonline.com/{tenant-id}/v2
.0, my-app.auth.us-east-1.amazoncognito.com, or my-app.auth-fips.us-gov-west-1.amazoncognito.com for GovCloud) https://<Domain Prefix>.auth.ap-northeast-1.amazoncognito.com
? Enter your Cognito User Pool ID for ap-northeast-1: (case-sensitive) ap-northeast-1_******
? Enter your OIDC Client ID: <クライアント ID>
Credential Storage Method
ユーザー側で、AWS の一時認証情報をどのように保存するかを指定します。お好きな方を選んでください。今回は Keyring を指定しました。
Keyring は認証情報を OS のセキュアな領域に保存されます。Session Files を指定した場合は、ログイン時に認証情報のファイルがローカルに作成され、ログアウト時に削除されます。
Credential Storage Method
Choose how to store AWS credentials locally:
• Keyring: Uses OS secure storage (may prompt for password)
• Session Files: Temporary files (deleted on logout)
? Select credential storage method: Keyring (Secure OS storage)
Federation Type Selection
AWS の一時認証情報の発行方法を指定します。
Direct STS では、STS の AssumeRoleWithWebIdentity により一時認証情報を生成します。セッションの最大時間は12時間です。Cognito Identity Pool よりもシンプルな方法で、特別な理由がない限りこちらを使うことが推奨されています。
Cognito Identity Pool は、Cognito Identity Pool で一時認証情報を生成します。セッションの最大時間は8時間です。プリンシパルタグマッピングを使用することで、ID プロバイダから取得した情報(クレーム)によるアクセス制御が可能になります。
Federation Type Selection
Direct STS.
Cognito Identity Pool.
? Choose federation type: Direct STS
AWS Infrastructure Configuration
AWS のリージョンと CloudFormation のスタックの名前を指定します。
? Select AWS Region for infrastructure deployment (Cognito, IAM, monitoring): ap-northeast-1
? Stack base name (for CloudFormation): claude-code-auth
Monitoring and Usage Dashboards
Claude Code の使用量を測定し、CloudWatch のダッシュボードを作成するかどうかを選びます。クォータの設定をする場合は必ず有効化してください。今回は Yes にしました。
Monitoring and Usage Dashboards
Track Claude Code usage and performance metrics in CloudWatch
? Enable monitoring? Yes
VPC Configuration for Monitoring
今回使用する OpenTelemetry の controller は ECS で動作するのですが、それを配置する VPC を指定します。こだわりがなければ Create new VPC にするのが良いと思います。
VPC Configuration for Monitoring
The monitoring stack requires a VPC for the OpenTelemetry collector.
Searching for existing VPCs...
? Select VPC for monitoring infrastructure: Create new VPC
Configure HTTPS for secure telemetry
カスタムドメインを使用するかどうか指定します。OpenTlemetry の ALB エンドポイントやランディングページで使用されます。ランディングページを用意したい場合には必ず指定してください。今回は No にしました。
Optional: Configure HTTPS for secure telemetry
? Enable HTTPS with custom domain? No
Analytics Pipeline
Athena を使ったより高度な SQL によるメトリクスを有効化するか指定します。今回は Yes にしました。
Analytics Pipeline
Advanced user metrics and reporting through AWS Athena (~$5/month)
? Enable analytics? Yes
✓ Analytics pipeline will be deployed with your monitoring stack
Quota Monitoring
クォータ制限に近づいた時に SNS のアラートを出したり、使用を停止したりする機能を有効化します。
以下の指標のうち、Monthly Limit、Burst buffer percentage、Custom daily limit を指定する必要があります。
- Monthly Limit: 月間1人あたりのトークン制限
- Base daily limit: Monthly Limit から計算される1日1人当たりのトークン制限
- Burst buffer percentage: 1日のうちに Base daily limit から超過できる割合
- Custom daily limit: 1日1人あたりのトークン制限
Monthly Limit
? Monthly token limit per user (in millions): 225
→ Monthly limit: 225,000,000 tokens
→ Warning at 80%: 180,000,000 tokens
→ Critical at 90%: 202,500,000 tokens
Daily Limit (Bill Shock Protection)
Prevent runaway usage by setting a daily limit with a burst buffer.
Base daily limit (monthly ÷ 30): 7,500,000 tokens
Burst buffer allows daily variation above the average:
• 5% (strict) → 7,875,000/day
• 10% (default) → 8,250,000/day
• 25% (flexible) → 9,375,000/day
? Burst buffer percentage (5-25%): 10
→ Calculated daily limit: 8,250,000 tokens
? Custom daily limit (Enter to accept 8,250,000):
Enforcement Modes
クォータを超過した際の振る舞いを指定します。alert は通知のみ送信します。block は強制的に使用を中止します。
? Daily limit enforcement: alert (warn only)
? Monthly limit enforcement: block (deny access)
Quota Re-Check Interval
クォータを確認する間隔を分単位で指定します。
Quota Re-Check Interval
How often to re-check quota with cached credentials:
• 0 = check every request (strictest, ~200ms latency)
• 30 = every 30 minutes (default, recommended)
• 60 = every hour (minimal impact)
? Quota check interval (minutes): 30
Windows Build Support
Windows 用の配布パッケージを作成するか指定します。なお、Windows 用のパッケージは CodeBuild で作成されるため、ローカルに特別な環境構築をする必要はありません。今回は Yes にしました。
Windows Build Support
Build Windows binaries using AWS CodeBuild
? Enable Windows builds? Yes
Claude Cowork (Desktop) Support
Claude Cowork 用の MDM 設定を作成するか指定します。有効化すると、Claude Desktop でも Claude Code と同様に、Bedrock を経由する設定でログインできるようになります。今回は Yes にしました。
Claude Cowork (Desktop) Support
Generate MDM configuration for Claude Cowork with third-party platforms
Enables Claude Desktop to use the same credential helper for Amazon Bedrock
? Generate CoWork 3P MDM configuration during packaging? Yes
Package Distribution
パッケージの配布方法を指定します。
Presigned S3 URLs にすると、ダウンロード用の URL のみが発行されます。Landing Page にすると、ダウンロード用の Web ページが ECS にデプロイされます。Landing Page にするには、上の設定でカスタムドメインを指定する必要があります。今回は Presigned S3 URLs にします。
Package Distribution
Choose how to distribute Claude Code packages to end users:
• Presigned S3 URLs: Simple, no authentication (good for < 20 users)
• Landing Page: IdP authentication with web UI (good for 20-100 users)
? Distribution method: Presigned S3 URLs (simple, no authentication)
Select Claude model
使用するモデルを指定します。今回は Claude Sonnet 4.5 にします。
? Select Claude model: Claude Sonnet 4.5 (Global, US)
Select cross-region inference profile
クロスリージョン推論プロファイルを指定します。クロスリージョン推論は、使用中のリージョンでクォータ制限を超えてしまった場合、代わりに近くのリージョンにリクエストを自動的にルーティングする機能です。Claude 3.7 以降のモデルでは指定する必要があります。
今回は JP Cross-Region - Japan CRIS - Asia Pacific (Tokyo), Asia Pacific (Osaka) にしました。
? Select cross-region inference profile: JP Cross-Region - Japan CRIS - Asia Pacific (Tokyo), Asia Pacific (Osaka)
Select source region for AWS configuration
クロスリージョン推論をする際、どのリージョンを優先して使うかを指定します。今回は ap-northeast-1 を指定しました。
? Select source region for AWS configuration: ap-northeast-1
Configure Application Inference Profiles?
モデルごとに推論プロファイルを指定したい場合は Yes を指定します。その後、プロファイルの ARN を指定することができます。
Provide an inference profile ARN for each model tier (press Enter to skip).
? Opus inference profile ARN:
? Sonnet inference profile ARN:
? Haiku inference profile ARN:
Resource Tags
CloudFormation のスタックにリソースタグを指定したい場合には Yes を指定します。今回は No にしました。
Tags are applied to all deployed CloudFormation stacks.
? Would you like to add resource tags? No
以上で、ccwb の初期化は終了です。
デプロイ
以下のコマンドでデプロイします。
poetry run ccwb deploy
順番にスタックがデプロイされていくので、終了するまで待ちます。
パッケージの作成
以下のコマンドで、ユーザーに配布するパッケージを作成します。
poetry run ccwb package
作成したい OS とプラットフォームを聞かれるので、スペースキーで選択、エンターキーで確定します。
Darwin の macOS を前提に、各プラットフォームのビルド時の注意点を紹介します。
macOS arm64
特にありません。そのままビルドされます。
macOS x86_64
ビルドには universal2 Python が必要です。公式ページ から macOS 64-bit universal2 installer をインストールできます。
Linux arm64
ビルドには Docker が必要です。ビルド前に docker --version コマンドの実行により存在確認が行われます。
そのため、podman などの Docker 互換ソフトウェアを使用している場合は、Docker 互換機能の有効化だけでなく、docker コマンドを使用できるようにする必要があります。podman を使用していてエラーが発生した場合は、以下のコマンドでシンボリックリンクを作成してください。
sudo ln -s $(which podman) /usr/local/bin/docker
Linux x86_64
Linux arm64 と同様に、Docker でビルドされます。現在では Docker Desktop や podman を使用していて Rosetta がインストールされていない場合、QEMU によってエミュレーションされます。しかし、QEMU は Rosetta と比較して動作が遅く、ビルドに時間がかかってしまうため、Rosetta の使用を推奨します。
Windows
Windows 用のビルドは CodeBuild で実行されるため、スタックが作成されている必要があります。上記 Windows Build Support を参照してください。
動作確認
設定のインストール
ビルドが完了すると、dist/<プロファイル>/<作成日時> ディレクトリに成果物が作成されます。
成果物のディレクトリ内にある ./install.sh を実行することで、作成した設定がインストールされます。この時、~/.claude/settings.json が上書きされるので気をつけてください。✓ Installation complete! と表示されれば完了です。
上の設定で、Claude Cowork 用の MDM プロファイルの作成をした場合は、このタイミングでインストールされます。macOS の場合、設定→一般→デバイス管理 から確認できます。

Claude Code
インストール後に Claude Code を起動すると、自動でログイン画面が開き、ログインを要求されます。
起動後、Amazon Bedrock と記載されていれば成功です。

Claude Desktop (Cowork)
Claude Desktop を起動すると、次のような画面になります。Bedrock で続けるを押すと、ログインが可能です。

配布
以下のコマンドで配布用リンクを取得できます。
poetry run ccwb distribute
コマンドを実行すると、S3 へのアップロードが始まります。アップロードが終わると、ダウンロードリンクが発行されるので、それをユーザーに配布してください。
リンクの期限は48時間なので、注意してください。
✓ Distribution package created successfully!
Distribution URL (expires in 48 hours):
https://claude-code-auth-distribution-<AccountId>.s3.amazonaws.com/packages/20260520-164850/claude-code-package-2026052
0-164850.zip?AWSAccessKeyId=<AccessKey>&Signature=th9z0...&Expires=1779436132
Package Details:
Filename: claude-code-package-20260520-164850.zip
SHA256: 55a66e539dcc58f69f3c97980ecb24d382a4f32028d48b7092c25a27b6aaf9ff
Expires: 2026-05-22 16:48:52
Size: 57.7 MB
Share this URL with developers to download the package.
Download and Installation Instructions:
For macOS/Linux:
1. Download (copy entire line):
curl -L -o "claude-code-package-20260520-164850.zip" "https://claude-code-auth-distribution-<AccountId>.s3.amazonaws.com/packages/20260520-164850/claude-code-package-20260520-164850.zip?AWSAccessKeyId=<AccessKey>&Signature=th9z0...&Expires=1779436132"
2. Extract and install:
unzip claude-code-package-20260520-164850.zip && cd claude-code-package && ./install.sh
For Windows PowerShell:
1. Download (copy entire line):
Invoke-WebRequest -Uri "https://claude-code-auth-distribution-<AccountId>.s3.amazonaws.com/packages/20260520-164850/claude-code-package-20260520-164850.zip?AWSAccessKeyId=<AccessKey>&Signature=th9z0...&Expires=1779436132" -OutFile "claude-code-package-20260520-164850.zip"
2. Extract and install:
Expand-Archive -Path "claude-code-package-20260520-164850.zip" -DestinationPath "."
cd claude-code-package
.\install.bat
削除
以上の手順で構築したものを、削除する手順について紹介します。
以下のコマンドで削除可能です。
poetry run ccwb destroy
この際、S3 バケットなどの一部リソースは削除されません。残存するリソースがある場合、コマンド終了後に次のような案内が出るので、指示に従ってください。
この操作を実行しないと、リソースが残り続けて無駄なコストが発生する上、次回セットアップ時に正常に終了しない場合があります。
⚠ Manual cleanup required for the following resources:
S3 Buckets (must be emptied first):
• claude-code-auth-s3bucket-cfnartifactsbucket-qadplodmubgf
aws s3 rm s3://claude-code-auth-s3bucket-cfnartifactsbucket-qadplodmubgf --recursive
aws s3 rb s3://claude-code-auth-s3bucket-cfnartifactsbucket-qadplodmubgf
Other Resources:
• AthenaWorkgroup (AWS::Athena::WorkGroup): claude-code-auth-analytics-workgroup
Reason: Resource handler returned message: "Invalid request provided: WorkGroup claude-code-auth-analytics-workgroup
is not empty (Service: Athena, Status Code: 400, Request ID: c0869358-dfa2-42d9-91ba-594d71aab19d) (SDK Attempt Count:
1)" (RequestToken: b36f8e9c-8863-efdf-3f16-d483973fdabc, HandlerErrorCode: InvalidRequest)
After manual cleanup, delete the failed stacks:
aws cloudformation delete-stack --stack-name claude-code-auth-analytics --region ap-northeast-1
aws cloudformation delete-stack --stack-name claude-code-auth-s3bucket --region ap-northeast-1
おわりに
Guidance for Claude Code and Cowork on Amazon Bedrock を使うことで、簡単なセットアップで Bedrock 経由の Claude Code / Cowork の設定ができました。ただの設定にとどまらず、クォータ制限や設定の配布までサポートがあるのが非常に便利な点だと感じました。
要件によっては Anthropic のプランを導入するよりも Bedrock の導入が最適である場合も多いので、ぜひ試してみてください。








