ForgeVision Engineer Blog

フォージビジョン エンジニア ブログ

Control Tower のデプロイが失敗する?原因は“クレカ未承認”だった話

こんにちは、尾谷です。

今回は、AWS Control Tower のセットアップ中に遭遇した謎のエラーについてご紹介します。

検証環境として Control Tower を準備していた際に、思わぬ落とし穴にハマりました。
すぐに原因が分からず、時間を浪費してしまったので、同じような問題に遭遇した方の参考になればと思い、この記事を書いています。

1. はじめに

なぜ Control Tower を使おうと思ったのか

あるお客様環境が Control Tower を活用されており、その運用を理解するため、僕のチームでも検証用の環境を立ち上げることにしました。

フォージビジョンには既に複数の AWS アカウントがあって、それらを取りまとめる Control Tower もありますが、そうした社内アカウントへの影響を避けるため、新たに Control Tower 検証用のアカウントを作成してセットアップを試みました。

この記事でわかること

最初は「Control Tower の問題だろう」「EC2 の問題だろう」と思って調査を進めていたのですが、実際には AWS アカウント登録時のクレジットカード承認に起因する問題でした。

表示されたエラーメッセージが若干抽象的で、トラブルの原因を突き止めるまでに時間がかかってしまったため、同じ問題に遭遇した方のために、この記事では以下のような情報をまとめています。

  • Control Tower セットアップ時に出る謎のエラーとその正体
  • AWS アカウント作成直後に確認すべきポイント
  • 同様の問題に遭遇した際の対処法

2. 問題の概要

表示されたエラーメッセージ

実際に表示されたエラーメッセージは以下の通りです。

AWS Control Tower setup failed. Be sure your account is subscribed to the AWS EC2 service, then try again. If this error persists, contact AWS Support.

Control Tower のセットアップ画面で「ランディングゾーンの設定」ボタンをクリックし、しばらく待っているとこのエラーが表示されました。
意訳すると、

EC2 サービスがサブスクリプションできていないから確認して、再デプロイせよ。

という感じでしょうか。

発生時の状況

問題が発生したのは、以下の手順で操作を進めたときです。

  1. 新規 AWS アカウントを作成
  2. 東京リージョンに IAM Identity Center のインスタンスを作成
  3. Control Tower ランディングゾーンの作成を開始

※()は手元にあるスクリーンショットの時刻です。

1 では、Google グループで発行したメーリングリストを使用して、AWS アカウントをサインアップしました。 クレジットカード情報を入力し(16:41)、電話による認証も行って(16:42)、サインアップ手続き自体は一見問題なく完了したように見えました。(16:42)

そして、「AWS アカウント登録完了メール (以下)」も届いたので、サインアップに問題が発生していたとは気づけませんでした。
(16:43 メール着)

スクリーンショットを見返しても、スムーズにサインアップ処置が完了しているように思えます。

3. 原因の特定までの試行錯誤

最初に疑ったこと

実はこの「クレジットカード未認証のまま AWS アカウントのサインアップを終わらせる」状態は、過去に何度も経験してきました。 クレジットカード情報を入力する画面でサインアップを中断しても、AWS アカウントは作成されて、サインインもできます。

ですが、この状態だと、ルートアカウントでログインしているにも関わらず、まるでポリシーが一切設定されていない IAM ユーザーのように、すべての操作がエラーになります。

そして、「AWS アカウント登録完了メール」が届きません。

その経験があったため、「もしやクレジットカードの問題か?」と考えがよぎりましたが、「AWS アカウント登録完了メール 」が届いているため、原因の特定に時間がかかりました。

4. 真の原因と解決策

クレジットカードの承認が未完了だったというオチ

エラーメッセージの内容から原因を推測するのが難しかったため、まずはメッセージ内のキーワードを使ってインターネットで検索してみました。

すると、AWS re:Post に同じようなエラーに遭遇した内容が見つかりました。

repost.aws

EC2 の管理コンソールにアクセスしようとすると、以下のスクリーンショットが表示されたので、「これだ!」と確信しました。

AWS re:Post に記載の通り、別のクレジットカード情報に変更して、AWS サポート(請求)に問い合わせしてみました。
すると後日(抜粋していますが)以下のような内容をサポートから返信いただきました。

当窓口にてお調べしましたところ、本アカウントにご登録いただいているクレジットカードは既に検証が完了しており、有効な状態でございました。

クレジットカード情報の更新を行なった場合、検証は自動的に行われます。 更新時にエラーが発生した場合や、以下のページにて「未検証」と表示されている場合には当窓口にて再検証を行わせていただきたく存じますが問題なく更新が完了した場合、お問い合わせをいただくには及びませんのでご安心くださいませ。

▼詳細設定 https://console.aws.amazon.com/billing/home?#/paymentpreferences/paymentmethods

▼(ご参考)クレジットカードと ACH 口座振替の管理 > クレジットカードを更新する https://docs.aws.amazon.com/ja_jp/awsaccountbilling/latest/aboutv2/manage-cc.html#update-your-cc

AWS サポートから連絡があったあと、EC2 の起動を試すとエラーは発生しませんでした。
クレジットカードを変更したあと、利用できる状態だった可能性があります。

なぜその状態で「EC2サービス未登録」エラーが出るのか?

今回表示されたエラーメッセージは「EC2 にサブスクライブしていない」という限定的なメッセージでしたが、AWS アカウントが完全にアクティブ化されていない状態では、一部のサービスが内部的に「未サブスクライブ」と見なされるため、 その結果、Control Tower のセットアップ時にこのような誤解を招くメッセージが表示されたものと考えられます。

推測ですが、AWS サインアップ時はおそらく番号情報などしかチェックしておらず、3Dセキュア(本人認証サービス)による承認などの後続の処理で、何らかのエラーが発生していたのではないかと思われます。

解決までにやったこと

  • エラー内容をもとにインターネット検索をして情報収集
  • クレジットカード関連のトラブルを疑い、カード情報を変更
  • AWS サポート(請求窓口)に連絡 (これは不要だった可能性大)
  • サポート側でアカウントのアクティベーションを完了 (した可能性も捨てがたい)
  • エラーなく Control Tower のランディングゾーン構築が完了

まとめ 〜同じ落とし穴にハマらないために〜

今回は、AWS Control Tower のセットアップ中に遭遇した「謎の EC2 サブスクライブエラー」の正体が、クレジットカードの承認未完了という意外な原因だった、という体験をご紹介しました。

ちなみに最初のカードは JCB で、変更したカードは VISA でした。

今回の学び

  • AWS アカウントは「サインアップ完了メール」が届いても完全には有効化されていない可能性がある
  • EC2 管理コンソールにアクセスしてエラーが表示されないか?インスタンスが起動できるか確認する
  • 可能であれば、切り分けのために、クレジットカードを変更して挙動を確認する

Organizations を使い始めると、AWS アカウントをサインアップする機会が減るので、こうしたエラーは耐性が低くなり、初期設定のつまずきで思わぬ時間を取られてしまうこともあります。

この記事が、同じような状況に直面した方の助けになれば幸いです。