【AWS】Bedrockで新しいClaudeモデルだけ403エラーになる原因と対処

スポンサーリンク
AWS
スポンサーリンク

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で切り替えても、次に新しいセッションを開くと環境変数のモデルに戻ってしまうので、使い続けるなら環境変数の方も書き換えておく必要がある。

似たエラー「is not available for this account」との違い

Claudeの新しいモデルをBedrockで使おうとしたときに、今回とよく似た次のようなエラーが出ることもある。

AccessDeniedException
anthropic.claude-opus-5-5 is not available for this account. You can explore other available models on Amazon Bedrock. For additional access options, contact AWS sales at https://aws.amazon.com/contact-us/sales-support/

同じAccessDeniedException(403)だが、この記事のエラーとは原因が違う可能性が高い。見分け方は、エラー文にAWS Marketplaceのアクション(aws-marketplace:ViewSubscriptions、aws-marketplace:Subscribe)が書かれているかどうかだ。

エラー文 主な原因 対処
not authorized to perform the required AWS Marketplace actions (aws-marketplace:ViewSubscriptions, aws-marketplace:Subscribe) 初回の呼び出しでMarketplaceのサブスクリプションを作る権限がない(この記事のケース) Marketplaceの権限があるロールで一度呼び出す
is not available for this account 下に挙げるいずれか 下の切り分けの順番を参照

「is not available for this account」については、AWSの公式ドキュメントに、この文言そのものの説明は見当たらなかった。公式ドキュメントとAWS re:Postなどの報告から考えられる原因を、調べた範囲で整理しておく。私自身はこのエラーには当たっていないので、あくまで調べた結果のまとめである。

公式ドキュメントで説明されている、似た症状

  • Marketplaceのサブスクリプションがまだ処理中: 初回の呼び出し直後は、サブスクリプションの処理中として拒否されることがある。15分ほど待ってから再試行する
  • Marketplaceの契約が失敗している: 支払い方法が無効、地域の制限などが原因として挙げられている。エラーメッセージを確認して原因を解消する
  • 組織のSCPで拒否されている: AWS Organizationsのサービスコントロールポリシーで、Bedrockの呼び出しが止められていないか確認する

なお、Anthropicのユースケースの登録をしていない場合は、FTUFormNotFilled(404)という別のエラーになると公式ドキュメントに書かれている。

AWS re:Postなどで報告されているもの

  • 新しいモデルが、そのアカウントではまだ使えない: Claude Opus 5、Claude Sonnet 5、Claude Opus 4.8など、出たばかりのモデルで報告が多い。aws bedrock get-foundation-model-availabilityで確認すると「AUTHORIZED」「AVAILABLE」になっているのに、呼び出すと拒否されるというものだ。同じOrganizationの管理アカウントからは呼べるのに、メンバーアカウントからは拒否されるという報告もある。新しいモデルは利用実績などに応じて段階的に開放されている、という趣旨の回答があり、待っても解消しない場合はAWSサポートへの問い合わせが勧められている
  • モデルの利用契約(agreement)ができていない: aws bedrock list-foundation-model-agreement-offersで契約のオファーを確認し、aws bedrock create-foundation-model-agreementで契約を作成したら解消した、という報告がある
  • モデルIDやリージョンの指定が違う: そのリージョンで使えないモデルIDや、有効になっていない推論プロファイルを指定していないか確認する

切り分けの順番

  1. エラー文にAWS Marketplaceのアクションが書かれていれば、この記事の対処(権限のあるロールで一度呼び出す)を試す
  2. aws bedrock get-foundation-model-availability --model-id <モデルID>で、そのモデルの利用状況を確認する
  3. モデルID・リージョン・推論プロファイルの指定が正しいか確認する
  4. AWS OrganizationsのSCPで止められていないか確認する
  5. それでも解消しなければ、エラー文・リージョン・モデルID・get-foundation-model-availabilityの結果を添えて、AWSサポートに問い合わせる

まとめ

  • Bedrockで古いモデルは使えるのに新しいモデルだけ403になるときは、IAMポリシーより先に「そのモデルをアカウントで初めて使うのか」を疑う
  • サードパーティのモデルは、Anthropicで共通ではなくモデルごとに、初回の呼び出しでAWS Marketplaceのサブスクリプションが作られる。これにはMarketplaceの権限が必要
  • 「モデルアクセス」のページは廃止済み。権限のある管理者がプレイグラウンドなどで一度呼び出せば、以降はアカウント内の誰でも使える
  • 権限のあるロールでも最初はエラーになることがある。数分待って再試行する
  • 新しいモデルが出るたびに同じことが起きるので、モデルを切り替えるときは覚えておくと時間を無駄にしない
  • 似たエラーの「is not available for this account」は、原因が別の可能性が高い。エラー文にAWS Marketplaceのアクションが書かれているかで見分ける

参考

コメント

タイトルとURLをコピーしました