Contents
1️⃣ Bedrock の概要と提供モデル
Amazon Bedrock は フルマネージド型の基盤モデル(Foundation Model)プラットフォーム です。AWS がインフラ管理・スケーリング・セキュリティを代行し、開発者は API 呼び出しだけで以下のベンダーが提供する大規模言語モデルを利用できます。
| カテゴリ | ベンダー | モデル名(公式 ID) | 主な特長 |
|---|---|---|---|
| 対話・指示遵守 | Anthropic | anthropic.claude-v3 |
高い安全性、指示遵守率、最新の 100k トークンコンテキスト |
| 生成・汎用 | Amazon | amazon.titan-text-v1:0(Titan Text) |
大規模データで学習済み、低レイテンシ、AWS 内部ネットワーク最適化 |
| 命令指向 | Cohere | cohere.command-r-plus |
長文要約と指示実行に強く、コストパフォーマンスが高い |
| 多言語・高速処理(ベータ) | Mistral AI | mistral.mistral-large(ベータ) |
高スループット、低単価で大量トークン処理向き |
注記:モデル ID は Bedrock コンソールの「モデルカタログ」から必ず最新の文字列をコピーしてください。ID が変わると API 呼び出しは失敗します。
2️⃣ 環境構築 – 前提条件と有効化手順
2.1 AWS アカウント・リージョン選択
| 項目 | 推奨設定 |
|---|---|
| アカウント | 通常の AWS アカウント(組織単位での SCP があれば許可) |
| リージョン | us-east-1、ap-northeast-1(東京)、eu-west-1 のいずれか。Bedrock がフルサポートしているリージョンを選択してください。 |
2.2 IAM ロール/ポリシー(最小権限の実装例)
以下は 最小権限 を意識したカスタムポリシーです。Resource にモデル ARN パターンと CloudWatch の名前空間を限定しています。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
{ "Version": "2012-10-17", "Statement": [ { "Sid": "BedrockInvokeOnly", "Effect": "Allow", "Action": [ "bedrock:InvokeModel", "bedrock:GetModelInvocationJob" ], "Resource": [ "arn:aws:bedrock:*::<account-id>:model/anthropic.claude-v3", "arn:aws:bedrock:*::<account-id>:model/amazon.titan-text-v1:0", "arn:aws:bedrock:*::<account-id>:model/cohere.command-r-plus", "arn:aws:bedrock:*::<account-id>:model/mistral.mistral-large" ] }, { "Sid": "CloudWatchMetrics", "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "cloudwatch:GetMetricStatistics", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] } |
<account-id>はご自身の AWS アカウント番号に置き換えてください。Resourceを"*"にしないことで 最小権限の原則(Principle of Least Privilege)を満たします。
作成したポリシーは IAM コンソールで「ロール」または「ユーザー」にアタッチし、Bedrock の API 呼び出しに使用します。
2.3 Bedrock サービスの有効化
- AWS コンソール左上の検索バーで 「Bedrock」 を入力し、サービスページへ移動。
- 初回アクセス時に表示される 「サービスを有効化」 ボタンをクリックし、利用規約に同意。
- 有効化が完了するとモデルカタログ画面が開きます(ここで ID をコピー)。
Free Tier は自動的に適用され、最初の 30 日間はモデル呼び出し回数 1M トークンまで無料です。個別の API キーは不要で、IAM ロールによる認証だけで利用できます。
3️⃣ 料金体系(2026 年 4 月時点の参考値)とコストシミュレーション
3.1 料金情報の扱いについて
- 価格は予告なく変更される可能性があります。本稿に記載した単価は執筆時点で公式サイトに掲載されていたものです。最新情報は必ず AWS Bedrock の料金ページ を確認してください。
| モデル | トークン単価(参考) |
|---|---|
anthropic.claude-v3 |
$0.00025 / 1,000 トークン(入力+出力合算) |
amazon.titan-text-v1:0 |
$0.00020 / 1,000 トークン |
cohere.command-r-plus |
$0.00022 / 1,000 トークン |
mistral.mistral-large(ベータ) |
$0.00018 / 1,000 トークン |
※ トークンは概算で「約 4 文字」相当です。実際の課金対象は 入力トークン + 出力トークン の合計です。
3.2 コストシミュレーション例(月間 1M トークン利用想定)
| シナリオ | 月間トークン数 | 想定コスト(USD) |
|---|---|---|
| 小規模 PoC(Claude v3) | 100 k | 約 $25 |
| 社内ツール(Titan Text) | 1 M | 約 $200 |
| 大規模顧客向けサービス(混在利用) | 10 M | 約 $2,250 |
計算式例(Claude v3)
1,000,000 ÷ 1,000 × 0.00025 = 0.25 USD → $250
※実際の請求額はリージョン別のデータ転送料や、無料枠超過分が加算されることがあります。常に Cost Explorer や Budgets でモニタリング を推奨します。
4️⃣ モニタリングとログ取得
4.1 CloudWatch メトリクス
| 名前空間 | 主なメトリクス |
|---|---|
AWS/Bedrock |
InvocationCount、ModelLatency、ThrottledRequests、InputTokenCount、OutputTokenCount |
アラーム例(1 分あたり 150 リクエストを超えたら通知)
|
1 2 3 4 5 6 7 8 9 10 11 |
aws cloudwatch put-metric-alarm \ --alarm-name "BedrockHighInvocation" \ --metric-name InvocationCount \ --namespace AWS/Bedrock \ --statistic Sum \ --period 60 \ --threshold 150 \ --comparison-operator GreaterThanThreshold \ --evaluation-periods 1 \ --alarm-actions arn:aws:sns:<region>:<account-id>:BedrockAlerts |
4.2 ログのベストプラクティス
| 項目 | 推奨手順 |
|---|---|
| リクエスト/レスポンス | SDK のミドルウェア(例:boto3 の botocore ロガー)で requestId とペイロードを CloudWatch Logs に出力。 |
| 永続保存 | S3 バケットに SSE‑KMS 暗号化で保存し、ライフサイクルポリシーで 90 日以降自動削除。 |
| アクセス制御 | s3:PutObject と s3:GetObject を必要最小限のロールだけに許可し、KMS キーポリシーでも同様に限定。 |
5️⃣ 実際に呼び出す – CLI / SDK サンプル
5.1 AWS CLI でモデル一覧取得
|
1 2 3 4 |
aws bedrock list-foundation-models \ --region ap-northeast-1 \ --output table |
5.2 Claude v3 を呼び出す例(CLI)
|
1 2 3 4 5 6 7 |
aws bedrock invoke-model \ --model-id anthropic.claude-v3 \ --content-type application/json \ --accept application/json \ --body '{"prompt":"今日の天気は?"}' \ --region ap-northeast-1 |
5.3 Python(boto3)で Titan Text を呼び出す例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import boto3, json client = boto3.client("bedrock-runtime", region_name="ap-northeast-1") payload = { "prompt": "サーバーレスアーキテクチャのメリットを簡潔に説明してください。", "maxTokensToSample": 300, "temperature": 0.6, "topP": 0.9 } resp = client.invoke_model( modelId="amazon.titan-text-v1:0", contentType="application/json", accept="application/json", body=json.dumps(payload) ) result = json.loads(resp["body"].read()) print(result.get("completion")) |
5.4 JavaScript(AWS SDK v3)で Claude v3 を呼び出す例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import { BedrockRuntimeClient, InvokeModelCommand } from "@aws-sdk/client-bedrock-runtime"; const client = new BedrockRuntimeClient({ region: "us-east-1" }); const command = new InvokeModelCommand({ modelId: "anthropic.claude-v3", contentType: "application/json", accept: "application/json", body: JSON.stringify({ prompt: "Explain the concept of zero‑trust networking in Japanese.", maxTokensToSample: 250, temperature: 0.7 }) }); try { const response = await client.send(command); const result = JSON.parse(new TextDecoder().decode(response.body)); console.log(result.completion); } catch (e) { console.error("Invocation error:", e); } |
ポイント:
modelIdは必ずカタログで確認した文字列を使用し、パラメータ名はモデルごとにドキュメントの推奨値に合わせます(例:maxTokensToSamplevsmax_token)。
6️⃣ トラブルシューティング & セキュリティベストプラクティス
6.1 主なエラーコードと対処法
| エラー | 想定原因 | 推奨対策 |
|---|---|---|
AccessDeniedException |
IAM ポリシーに不足 → bedrock:InvokeModel が無い |
前節の最小権限ポリシーを再適用し、ロール付与後 5 分待機 |
ResourceNotFoundException |
指定 modelId がリージョン非対応またはタイプミス |
コンソールでモデルカタログを確認し、正しい ID とリージョンを使用 |
ThrottlingException |
デフォルト上限(5 TPS)超過 | バックオフ実装(指数的遅延)か、AWS Support に上限引き上げ依頼 |
ValidationException |
JSON ペイロード不正 | 必須項目 (prompt, maxTokensToSample) の有無と型を再確認 |
6.2 データ暗号化・ネットワーク保護
- 転送層:Bedrock は TLS 1.2+ により自動暗号化。
- 保存時:S3 バケットは SSE‑KMS、または S3 のデフォルト暗号化を有効化。
- VPC エンドポイント(PrivateLink)
- サービス名
com.amazonaws.<region>.bedrock-runtimeを指定し、インターフェイスエンドポイントを作成。 - これによりインターネット経路が排除され、社内 VPC からのみアクセス可能となります。
6.3 コンプライアンスとリージョン選択
| 項目 | 留意点 |
|---|---|
| データ所在地 | 金融・医療情報は必ず ap-northeast-1(東京)で処理。 |
| サービス可用性 | 2026‑04 時点で Bedrock がフルサポートしているリージョンは us-east-1, eu-west-1, ap-northeast-1 のみ。モデルごとの対応状況を事前に確認。 |
| 個人情報 | 入力テキストに PII を含む場合はマスキング・暗号化処理を実装し、不要なデータは保存せずに破棄すること。 |
7️⃣ 記事の要点まとめ(実務で即活用)
- モデル選定
- 対話安全性が最重要 →
anthropic.claude-v3 -
高スループット・低コストが必要 →
amazon.titan-text-v1:0またはmistral.mistral-large(ベータ) -
IAM は「InvokeModel」だけを対象とし、ARN でモデルを限定。CloudWatch のメトリクス取得権限も同様に最小化。
-
料金 はトークン単価が $0.00018〜$0.00025 程度で変動するため、必ず公式ページで最新価格を確認し、Cost Explorer で実使用量を監視。
-
モニタリング は CloudWatch の標準メトリクスにアラームを設定し、ログは KMS 暗号化した S3 バケットへ定期的にエクスポート。
-
セキュリティ
- TLS による転送暗号化はデフォルト。
- VPC エンドポイントでプライベート接続を確保。
-
データ保存時は SSE‑KMS、アクセス権は最小限に。
-
実装例(CLI・Python・Node.js)はすべて公式 ID を使用し、エラーハンドリングとバックオフ処理を組み込むことで安定稼働が可能。
これらの手順とベストプラクティスに沿って構築すれば、Amazon Bedrock の導入から運用までをシームレスに実現できます。ぜひハンズオン形式で試し、貴社のユースケースに最適なモデルを選定してください。