はじめに
初めてAmazon Bedrock(以降、Bedrock)を活用した開発をしたので、そのときの知見を記事にする。
対象者はBedrockをこれから利用する開発者やマルチモーダルな機能を実装したい人である。
東京リージョンの場合クロスリージョン推論のみ使えるモデル
- Nova Pro
- Claude 3.7 Sonnet
- Claude Sonnet 4
上記は現時点(2025/07/17)で通常のモデルIDは使えず、クロスリージョン推論のプロファイルIDを使うことで利用可能。Converse APIなどのオンデマンドリクエストのみが対象の可能性あり。
ドキュメントは分かりづらい印象。
Some models are accessible in some Regions only through cross-Region inference. To learn more about cross-Region inference, see Increase throughput with cross-Region inference and Supported Regions and models for inference profiles.
https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html
または、 リージョン別のモデルサポートで確認できる。
画像の通り、コンソールでリアルタイムな情報を確認できる。(Nova Liteも少し前は対象だった気がする)

SDKのエラーも予備知識なしで確認すると、少し分かりづらい。
当初、inference profileってなに?ってなった。
on-demand throughputも分かりづらい。
ValidationException: An error occurred (ValidationException) when calling the Converse operation: Invocation of model ID anthropic.claude-3-sonnet-20240229-v1:0 with on-demand throughput isn’t supported. Retry your request with the ID or ARN of an inference profile that contains this model.
また、https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/conversation-inference-examples.html のコード例も東京リージョンの場合、このクロスリージョン推論の問題でエラーになってしまう。
画像を含むPDFはNovaのDocument understanding
PDFなどのいわゆる document
に分類されるものは、Converse APIのみ使用可能。
The Amazon Nova models allow you to include documents in the payload through the Converse API document support, which can be provided as bytes to the API.
Novaを推す理由はPDF内の画像まで解析してくれる。Claudeの場合、PDF内の画像は解析されない。
ClaudeのドキュメントにはPDF内の画像までサポートされていそうな表現ではあるが、検証した限り対応できてない。
You can now ask Claude about any text, pictures, charts, and tables in PDFs you provide.
https://docs.anthropic.com/en/docs/build-with-claude/pdf-support


開発時、BedrockのAPIの選定に迷った。
マルチモーダルの実装をする場合、documentにも対応できるように予めConverse APIを選択しておくと良いと感じた。Invoke Modelでも画像などはモデルが対応していれば実行できる。
プロンプトについて1つ工夫したほうが良い点がある。
documentやimageを先に渡して、最後にテキストのプロンプトを設定することで質が向上する。

Improve performance Follow these best practices for optimal results:
Place PDFs before text in your requests
https://docs.anthropic.com/en/docs/build-with-claude/pdf-support#improve-performance
クォーターとThrottlingException
開発時、ThrottlingExceptionが頻発した。
基本的にはBedrockのクォータに抵触した場合に発生していたと考えている。
主なクォータは、RPM、TPM、TPDがある。ThrottlingExceptionの発生時は実際にどのクォータに該当したのかわからない。なので推測しながら、各クォータの上限申請などを行い対応する必要があった。
今回、ThrottlingExceptionが頻発した原因は主に3つだと思っている。
- 新規開設したAWSアカウントかつ、Bedrockの該当モデルの利用実績がない
- 東京リージョンのモデルを使用
- Claude Sonnet 4のトークン見積もり算出方法が独特
1つ目は、例えば、RPMがAWSデフォルトが20だった場合としても使用環境では4になっていた。
このように極端に低い値のせいでThrottlingExceptionが発生した。
2つ目は、us-east-1などに比べると、クォータのデフォルト値は低くなっている。
3つ目は、ざっくりいうと、Claude4の出力トークンは5倍でカウントされるというもの。
詳しくは、ドキュメントを確認してほしい。
TPMが20kの環境でmax_tokensを4kで動作させていた際、入力トークンによって変動するものの、4並列ぐらいは動作すると想定していた。しかし、1並列までしか動作せずに、ThrottlingExceptionが発生した。これは4k*5=20kになるので、1並列でTPMがオーバーしてしまうためである。
S3 Location
これは詳しいドキュメントが見つからなかったので、簡単に説明すると、
画像データなどをバイナリとして入力データとして渡さずにS3から直接、画像データなどを渡せるようにするもの。
https://docs.aws.amazon.com/ja_jp/bedrock/latest/APIReference/API_agent_S3Location.html
2025/6時点のLambdaのpython3.13ランタイムのboto3だと、このパラメータが対応していなかった。
もし利用したい場合は別途、boto3を自分でLambda Layerなどで用意することで対応できると思う。
SfnでBedrockを使う場合、画像データを各タスクのpayloadで連携するのはデータサイズ的に微妙だと思うので、このパラメータを活用することでBedrockのConverse APIを直接使いつつ画像データを連携することができるようになる。シンプルな要件ならば、これでLambdaを中継する必要がなくなる。
おわりに
今回は、基礎的なBedrockの機能だけを使ったが、それでも色々と躓く点があった。
特にクォータへの対処は未だに明確なアンサーが見えてないので、今後、模索していきたい。