EC2上のClaude CodeをAmazon Bedrock経由で使っていて、モデルをClaude Opus 4.8からClaude Opus 5.5に切り替えようとしたところ、403エラーで切り替えられなかった。Claude Codeは最新版にしてあるし、IAMロールもBedrockを呼べる設定になっている。実際、Claude Opus 4.8は問題なく動いている。なのに5.5だけが使えない。
結論から書くと、原因はIAMロールの設定ミスでもアプリの不具合でもなく、Bedrockで「そのモデルをアカウントで初めて使うとき」にだけ必要な手続きだった。AWS Marketplaceの権限を持つ管理者のロールで一度だけClaude Opus 5.5を呼び出したら、それ以降はEC2のIAMロールからも普通に使えるようになった。
症状
Claude Codeで/modelを使ってClaude Opus 5.5に切り替えようとすると、次のエラーになる。
❯ /model jp.anthropic.claude-opus-5-5 ⎿ API error: 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) to enable access to this model. Refer to the Amazon Bedrock documentation for further details. Your AWS Marketplace subscription for this model cannot be completed at this time. If you recently fixed this issue, try again after 2 minutes · model not changed
一方、Claude Opus 4.8に戻すと、何事もなく切り替わる。
❯ /model jp.anthropic.claude-opus-4-8 ⎿ Set model to Opus 4.8 and saved as your default for new sessions
エラー文にはaws-marketplace:Subscribeが必要だと書いてある。とはいえ4.8は動いているので、最初は「Anthropicのサブスクリプションは共通のはずで、どれか一つのモデルで済ませれば全部使えるのでは?」と思った。これが思い込みだった。
原因:サブスクリプションはモデルごとに必要
Amazon Bedrockの公式ドキュメントを読むと、仕組みはこうなっている。
- Anthropicなどのサードパーティのモデルは、AWS Marketplace経由で提供されていて、モデルごとにサブスクリプションが必要
- このサブスクリプションは、アカウントでそのモデルを初めて呼び出したときに自動で作られる
- ただし自動で作るには、初回に呼び出した人(IAMユーザーやロール)に
aws-marketplace:SubscribeなどのMarketplaceの権限が必要。無いとAccessDeniedExceptionになる - 一度誰かが有効にすれば、アカウント内の他のユーザーやロールは、Marketplaceの権限が無くても呼び出せる
これで全部説明がつく。Claude Opus 4.8は、過去にこのアカウントで誰かが使ってサブスクリプションができていたので動いた。Claude Opus 5.5は新しいモデルなので、まだサブスクリプションが無かった。そこへ、Marketplaceの権限を持っていないEC2のIAMロールから初めて呼び出そうとしたので、サブスクリプションが作れずにエラーになっていた。
IAMロールは「Bedrockを呼び出す権限」は持っていたが、「新しいモデルを初めて有効にする権限」は持っていなかった。この2つが別物だというのがポイントだ。
「モデルアクセス」のページはもう無い
ネットで調べると、「Bedrockコンソールの『モデルアクセス』のページから、使いたいモデルを申請して有効化する」という手順がよく出てくる。実際、Claude Codeに聞いてもこの手順を案内された。ところがコンソールでこのページを開くと、既に廃止されたという案内が表示される。
案内の内容は、「サーバーレスのモデルは、アカウントで初めて呼び出したときに自動で有効になるので、手動の有効化は不要になった。ただしAWS Marketplace経由で提供されるモデルは、Marketplaceの権限を持つユーザーが一度呼び出す必要があり、それでアカウント全体の全ユーザーが使えるようになる」というものだった。古い手順の記事を見て「モデルアクセスのページが見つからない」と迷わないように注意したい。
対処:権限のあるロールで一度だけ呼び出す
対処は、Marketplaceの権限を持っているユーザーやロールで、そのモデルを一度呼び出すことだ。APIを書く必要はなく、Bedrockコンソールのプレイグラウンドでモデルを選んで、何か一言送るだけでいい。私は管理者権限を持つロールにスイッチして、プレイグラウンドでClaude Opus 5.5に「hello」と送った。
ただ、ここでもう一つハマった。管理者のロールで送ったのに、最初は同じエラーが出たのだ。
AccessDeniedException 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) to enable access to this model. Refer to the Amazon Bedrock documentation for further details. Your AWS Marketplace subscription for this model cannot be completed at this time. If you recently fixed this issue, try again after 2 minutes.
管理者でも弾かれるなら、組織のポリシー(SCP)でMarketplaceの操作が禁止されているのでは、と疑った。しかし、少し待ってからページを読み込み直してもう一度送ったら、今度は普通に返事が返ってきた。
公式ドキュメントにも、サブスクリプションの手続きが終わるまで時間がかかり、その間はエラーが返ることがあると書かれている。エラー文の最後にある「2分後にもう一度試して」の一文は、まさにこのことだった。権限のあるロールで一度エラーになっても、すぐに組織のポリシーを疑わず、数分待って再試行してみるのがよい。
プレイグラウンドで一度通ったあとは、EC2のIAMロールからも切り替えられた。EC2のIAMロールには何も権限を足していない。
❯ /model jp.anthropic.claude-opus-5-5 ⎿ Set model to Opus 5.5 and saved as your default for new sessions
EC2のIAMロールにMarketplaceの権限を足すのはおすすめしない
EC2のIAMロールにaws-marketplace:Subscribeなどを付ければ、ロールから直接サブスクリプションを作ることもできる。ただ、この権限は「新しいMarketplaceの製品を購読できる」権限なので、普段の利用のためにEC2に常時付けておくものではないと思う。新しいモデルを使い始めるときだけ、権限のある管理者が一度呼び出す、という運用の方が安全だ。
補足
Anthropicのモデルは初回にユースケースの登録も必要
Anthropicのモデルは、アカウントで最初に使うときに、利用目的などを登録するフォームの提出も必要だ。これはモデルごとではなく、アカウント単位で一度だけ(AWS Organizationsなら管理アカウントで一度)でよい。今回は既にClaude Opus 4.8が使えていたので、こちらは済んでいた。初めてBedrockでClaudeを使う場合は、こちらも必要になる。
環境変数でモデルを指定していると、新しいセッションで元に戻る
Claude Codeで5.5に切り替えたとき、次の表示も出た。
ANTHROPIC_MODEL is set to Opus 4.8 — new sessions use that while it is set
環境変数ANTHROPIC_MODELでモデルを指定している場合は、そちらが優先される。/modelで切り替えても、次に新しいセッションを開くと環境変数のモデルに戻ってしまうので、使い続けるなら環境変数の方も書き換えておく必要がある。
まとめ
- Bedrockで古いモデルは使えるのに新しいモデルだけ403になるときは、IAMポリシーより先に「そのモデルをアカウントで初めて使うのか」を疑う
- サードパーティのモデルは、Anthropicで共通ではなくモデルごとに、初回の呼び出しでAWS Marketplaceのサブスクリプションが作られる。これにはMarketplaceの権限が必要
- 「モデルアクセス」のページは廃止済み。権限のある管理者がプレイグラウンドなどで一度呼び出せば、以降はアカウント内の誰でも使える
- 権限のあるロールでも最初はエラーになることがある。数分待って再試行する
- 新しいモデルが出るたびに同じことが起きるので、モデルを切り替えるときは覚えておくと時間を無駄にしない

コメント