AWSで「SubscriptionRequiredException: The AWS Access Key Id needs a subscription for the service」のエラーが発生するときの対処法
エラー内容
タイトルにあるエラーは、AWSアカウントのサインアップが完了していない場合や、サービスが有効化されていない場合に発生するようです。
エラーが発生した経緯
AWS Amplify を使用して個人開発をしようとしていました。
その際、AWS Organizations で組織を作ってその組織にAWS アカウントを作成し、IAM Identity Center でグループ / ユーザーを払い出すという構成にしていました。
ユーザーの払い出しまで完了し、問題なくログインしたり、一部のAWS リソースの作成などが行えていました。
しかし、Amplify CLI で下記のコマンドを実行した際に、下記のエラーが発生しました。
実行コマンド
npx ampx sandbox --profile {プロファイル名}
発生したエラー
SubscriptionRequiredException: The AWS Access Key Id needs a subscription for the service
また、AWS マネジメントコンソールでDynamoDBのテーブルの設定画面にアクセスした際にも、上記のエラーが表示されていました。
そして、AWS マネジメントコンソールで IAM や SSM にアクセスしようとすると、下記像の画面にリダイレクトされる状態になっていました。

この画面で言われているのは、下記のことです(超意訳)。
サインアップが完了していないから下記のことを確認してね。
- サインアッププロセスですべての情報が提供されていること。支払い方法やメールアドレスの検証とか、サポートプランの選択とか。
- メールでお願いしている追加の情報に回答していること。このお願いメールが見つからなかったらスパムメールとか迷惑メールを確認してね。
- クレジットカードの検証をしてね。
AWS サービスの有効化に最大24時間かかることもあるよ。 24時間経ってもアクセスできなかったらサポートに連絡してね。
全部確認しました。
そしてご丁寧に「Complete your AWS registration」というボタンがあるのでクリックしてみました。
で、遷移した画面が下記の画像。

ん...?
本当か...?
ということで再度 IAM や SSM の画面にアクセスしてみましたが、状況は変わらず。
何度やっても解決しません。
当該エラーの一般的な解決方法
このエラーは主に対象の AWS サービスが有効化されていない場合に発生するようです。 下記の記事の通り対応すれば、基本的には解決すると思います。
また、Health API を使用する場合はサポートプランを上げる必要があるそうなので、こちらも要確認です。
しかし、私の場合はどれも当てはまらず、何をしてもエラーが解決されない状況でした。
サポートへ問い合わせ
もうどうにもできなかったので、サポートに問い合わせてアカウントのサインアップ状況や、エラーの発生状況を確認してもらいました。
サポートに確認してもらったところ、アカウントのサインアップは完了していました。
しかし、Amplify は CDK を使用しているため、CodeBuild が有効になっている必要があり、CodeBuild が有効化されているか確認してくださいとのこと。
AWS マネジメントコンソールから CodeBuild を確認したところ、「有効化する」というようなボタンは見つからず、普通にアクセスできていたので、有効化されているものと思いました。
その旨をサポートに伝えると、24時間待ってもエラーが解消されないならまた連絡くださいとのことだったので、「たぶん変わらないよ...」と思いつつも24時間待って、まだエラーが発生することを確認。
サポートに連絡して、ちゃんと CodeBuild が有効化されているか確認してもらうと、「有効化されていなかったので、手動で有効化しておきました。」とのこと。
「最初からそうしてくれよ...」と思いつつも、Amplify や DynamoDB を確認すると、エラーが解消されていました!
また、IAM や SSM にアクセスしたときにリダイレクトされていた、サインアップ未完了の画面にもリダイレクトされなくなっており、正常にアクセスできるようになっていました。
めちゃくちゃ長い期間悩まされていたエラーがようやく解消しました...長かった...。
今回のケースでは、CodeBuild が有効化されていなかったことが原因で、タイトルのエラーが発生していたことがわかりました(もしかしたら他のサービスも有効化されていなくてサポートが有効化してくれたかも)。
でも、有効化されているかどうかの確認方法とか、有効化の方法は不明です(サポートに追加で確認中)。
→サポートから回答が返ってきました。
本来はお客様側で CodeBuild 有効化操作というものは必要がなく、アカウントを作成したら CodeBuild などのリソースが自動でご利用(有効化)いただけるものではございました。
※CodeBuild の有効化の確認につきましては、 CodeBuild コンソールより「ビルドプロジェクト」などが作成できるかどうかでご判断ください。
そうなの...?
同じ方法で作成した他のアカウント(検証用、本番用)でも同じ事象が発生していたのですが、これだとアカウントを作るたびにサポートに対応してもらわないといけないぞ...。
ちなみに、サポートは問い合わせをしているアカウントに対してのみ、調査や対応をしてくれるので、別のアカウントで発生している事象については、そのアカウントで問い合わせをする必要があります。
まあとりあえずサポートにCodeBuildの有効化をしてもらえば解決することが分かったので、一旦アカウントごとにサポートに対応してもらうことにします。
ちなみに
Amplify CLI で今回エラーが発生したコマンドを実行する際、--debugをつけて下記のようにすることで、エラーの詳細を確認することができます。
npx ampx sandbox --profile {プロファイル名} --debug
このコマンドで出力されるエラーの詳細をChatGPTとかに読ませてあげると、すぐエラーの原因を教えてくれます。
私の場合は、「SSM が使えないよー」とのことでした。