Control Towerでアカウントファクトリーからアカウントを追加しようとしたら”No launch paths found for resource”となる場合の対処方法

Control Towerでアカウントファクトリーからアカウントを作成する際に「No launch paths found for resource: prod-dpqqfywxxxx」というエラーが出た際の対処法や根本原因の解説などをまとめました
2020.10.20

こんにちは、臼田です。

みなさん、AWSアカウントの統制管理していますか?(挨拶

今回はちょっとしたトラブル対応のメモです。

No launch paths found for resource: prod-dpqqfywxxxxとなりアカウントが作れない

Control Towerのアカウントファクトリーからアカウントを作成しようとしたら、以下のようなエラーに遭遇しました。

不明なエラーが発生しました。後でもう一度試してください。または、AWS サポートにお問い合わせください。 No launch paths found for resource: prod-****************

対処方法

該当のエラーメッセージで検索したら公式ユーザーガイドが出てきました。

このエラーメッセージは、AWS Service Catalog によって生成されます。これは、AWS Control Tower でのアカウントのプロビジョニングに役立つ統合サービスです。

一般的な原因:

  • root としてログインしている可能性があります。AWS Control Tower は、root としてログインしている場合のアカウントの作成をサポートしていません。
  • SSO ユーザーが適切なアクセス許可グループに追加されていません。
  • IAM ユーザーとして認証されている場合は、正しいアクセス許可を持つように AWS Service Catalog ポートフォリオに追加する必要があります。

今回私の場合は3つ目のService Catalog ポートフォリオへの権限が足りていませんでした。

Service Catalog ポートフォリオの権限とその設定

普段Service Catalogを利用してなれている人は少ないと思います。なので上記ガイドだけではピンと来ないかもしれません。

Service CatalogではAWSのひと塊の環境を「製品」として提供しますが、この製品ラインナップを一つにまとめたものがポートフォリオで、Service Catalogではポートフォリオ単位でアクセス管理します。

アクセス管理というのは、製品をプロビジョニングするためにIAM側の権限とは別にリソースポリシーのような形でポートフォリオでIAMにアクセス権限を追加する必要があります。

実際の画面を見ていきましょう。

以下はControl Towerで作成されたService Catalogのポートフォリオです。この「グループ、ロール,およびユーザー」でポートフォリオ側のアクセスを許可しているIAMを確認できます。デフォルトではAWS SSOで作成される2つのロールとControl Towerを有効化したIAMが登録されていました。つまり、Control Towerを有効化したアカウント以外のSSO以外のIAMでアカウントファクトリーからアカウント作成を行おうとすると今回のエラーを引くことになります。

それでは「グループ、ロール,またはユーザーの追加」から追加していきます。

開くと各IAMのタブを選んで絞り込めます。チェックを入れて「アクセス権の追加」で追加します。

追加できました。ちなみに追加する権限はこのアクセス権限とは別のようで、ポートフォリオのアクセス権がないIAMで自身を追加することも可能でした。ドキュメントを見る限りではおそらく「AssociatePrincipalWithPortfolio」あたりのIAM権限があればアクセス権の追加はできそうです。

これでアカウント作成が可能になります。

アカウント作成の運用をどうするのがいいのか

今回の事象を受けてアカウント作成については以下2つの運用方法が検討できると思います。

  • 通常のIAMを使う
    • Control Towerを有効化したIAMを使う
    • アカウント作成を行うIAMにポートフォリオの権限を追加する
  • AWS SSOで用意されたロールを利用する

Control TowerとしてはSSOで作成している以下の2つを利用してほしいという意図が読み取れます。

  • AWSReservedSSO_AWSAdministratorAccess
  • AWSReservedSSO_AWSServiceCatalogEndUserAccess

AWSアカウント全体を管理するユーザーをSSO上で管理できる場合にはこちらを使うほうが手っ取り早いと思います。

逆にSSO管理外のユーザーがアカウント作成を行う場合には、アクセス権追加を誰がするのか、誰が管理するのかを検討する必要があると思います。

まとめ

No launch paths found for resource: prod-dpqqfywxxxxと出たときの対処方法とその背景や運用方法についてまとめました。

管理方法をよく考えつつControl Towerをガンガン活用していきましょう。