Bedrockのjp.プロファイル、実は大阪も宛先に入っている

  • AWS
  • Bedrock

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

Bedrockで jp.anthropic.claude-sonnet-4-6 を呼んだらSCPのexplicit denyで弾かれた。AWS_REGION は ap-northeast-1(東京)にしてたのに。

AccessDeniedException:
bedrock:InvokeModel on resource:
arn:aws:bedrock:ap-northeast-3::foundation-model/anthropic.claude-sonnet-4-6
with an explicit deny in a service control policy

エラーに出てるリソースのリージョンが ap-northeast-3、つまり大阪になってた。クライアント側は東京指定なのに、なぜ大阪のARNでDenyされるのか最初分からなかった。

分かったこと

jp. は Geographic CRIS(cross-Region inference)のプロファイルで、東京固定じゃない。日本ジオグラフィーとして東京と大阪の2リージョンに自動ルーティングされる設計になってる。呼び出し側が ap-northeast-1 を指定していても、Bedrock側の空き状況次第で大阪に飛ばされることがあるらしい。

しかもGeo CRISは、プロファイル自体へのアクセス権限だけじゃなくて、宛先リージョンすべてのFM invoke権限も必要になる。なので今回みたいに大阪側だけSCPでdenyされてると、東京から呼んでるつもりでも失敗する。「利用申請がまだ通ってない」とかじゃなくて、単純にOrgポリシーの話だった。

もう一個ハマったのがこっち。

ValidationException:
Invocation of model ID anthropic.claude-sonnet-4-6 with on-demand throughput isn't supported.
Retry your request with the ID or ARN of an inference profile that contains this model.

Claude Sonnet 4.6は素のfoundation model IDを直接呼べない。inference profile必須になってる。jp. や global. を使うか、自分でapplication inference profileを作るかのどれかが要る。

東京に固定したいなら

jp. のGeo CRISは構造上、大阪を宛先から外せない。東京だけで完結させたいなら選択肢は2つ。

  • Org側で大阪(ap-northeast-3)への bedrock:InvokeModel を許可してしまって jp. を使い続ける
  • 東京だけを対象にした application inference profile を自分で作る

データ所在地の制約がないなら global. という手もある。世界中の商用リージョンに飛ぶ代わりに、jp.(Geo CRIS)よりトークン単価が約10%安いらしい。ただし宛先が完全に広がるので、そこは要件次第。

ちなみに

CRISは Cross-Region Inference の略で「クリス」って読む。ただし略称が4文字で単語は3つしかないので、「S」が何の略かはAWSの公式ドキュメントでは特に説明されてない。Serviceの略だと補足してる記事もあるけど、公式の裏は取れなかった。