不定期刊「完全に理解した」

ITエンジニア向け学習アウトプットブログ

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 にアクセスしようとすると、下記像の画面にリダイレクトされる状態になっていました。

サインアップ未完了

この画面で言われているのは、下記のことです(超意訳)。

サインアップが完了していないから下記のことを確認してね。

  1. サインアッププロセスですべての情報が提供されていること。支払い方法やメールアドレスの検証とか、サポートプランの選択とか。
  2. メールでお願いしている追加の情報に回答していること。このお願いメールが見つからなかったらスパムメールとか迷惑メールを確認してね。
  3. クレジットカードの検証をしてね。

AWS サービスの有効化に最大24時間かかることもあるよ。 24時間経ってもアクセスできなかったらサポートに連絡してね。

全部確認しました。

そしてご丁寧に「Complete your AWS registration」というボタンがあるのでクリックしてみました。

で、遷移した画面が下記の画像。

サインアップを完了させる

ん...?

本当か...?

ということで再度 IAM や SSM の画面にアクセスしてみましたが、状況は変わらず。

何度やっても解決しません。

当該エラーの一般的な解決方法

このエラーは主に対象の AWS サービスが有効化されていない場合に発生するようです。 下記の記事の通り対応すれば、基本的には解決すると思います。

repost.aws

また、Health API を使用する場合はサポートプランを上げる必要があるそうなので、こちらも要確認です。

dev.classmethod.jp

しかし、私の場合はどれも当てはまらず、何をしてもエラーが解決されない状況でした。

サポートへ問い合わせ

もうどうにもできなかったので、サポートに問い合わせてアカウントのサインアップ状況や、エラーの発生状況を確認してもらいました。

サポートに確認してもらったところ、アカウントのサインアップは完了していました。


しかし、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 が使えないよー」とのことでした。