トラブルシューティング - AWS Control Tower

トラブルシューティング

AWS Control Tower の使用中に問題が発生した場合は、次の情報を使用して、当社のベストプラクティスに従って解決できます。発生した問題が次の情報の範囲外である場合、または解決を試みた後にも持続する場合は、AWS Support にお問い合わせください。

ランディングゾーンの起動の失敗

ランディングゾーンの起動の失敗の一般的な原因:

  • 確認メールメッセージへの応答の欠如。

  • AWS CloudFormation StackSet の失敗。

確認メールメッセージ: 管理アカウントが作成後 1 時間未満である場合、追加のアカウントを作成すると、問題が発生することがあります。

実行するアクション

この問題が発生した場合は、E メールを確認してください。確認メールが着信し、応答を待機していることがあります。または、1 時間待ってから、もう一度試すことをお勧めします。問題が解決しない場合は、AWS Support までお問い合わせください。

StackSet の失敗: ランディングゾーンの起動の失敗の原因として、AWS CloudFormation CloudFormation StackSet の失敗が考えられます。AWSSecurity Token Service (STS) のリージョンは、プロビジョニングが成功するように、AWS Control Tower が管理しているすべての AWS リージョンの管理アカウントで有効にする必要があります。そうでない場合は、スタックセットの起動は失敗します。

実行するアクション

AWS Control Tower を起動する前に、必ず、必要なすべての AWS Security Token Service (STS) エンドポイントリージョンを有効にしてください。

AWS Control Tower がサポートする AWS リージョン リストを表示するには、「AWS Control Tower で AWS リージョンを使用する方法」を参照してください。

ランディングゾーンが最新ではないエラー

ランディングゾーンを最近更新していない場合は、AWS Control Tower へのアクセスを回復しようとしたときにエラーが発生することがあります。以下のようなエラーメッセージが表示されることがあります。

Unable to access Control Tower

アカウントは長い間非アクティブになっています。非アクティブのため、AWS Control Tower にアクセスするにはランディングゾーンを更新する必要があります。

ただし、ランディングゾーンの更新が失敗する可能性があります。

実行する手順

組織の管理アカウントにサインインし、ルートユーザーとしてサインインします。IAM ユーザーまたは AWS Identity Center のユーザーは AWS Control Tower 管理者権限を持ち、AWSControlTowerAdmins グループに属している必要があります。その場合は、更新を再試行してください。

新しいアカウントのプロビジョニングに失敗する

この問題が発生した場合は、以下の一般的な原因を確認します。

アカウントのプロビジョニングフォームに入力した際に、次を行った可能性があります。
  • tagOptions を指定した

  • SNS 通知を有効化した

  • プロビジョニング済み製品の通知を有効化した

これらのオプションを指定せずに、アカウントのプロビジョニングを再試行してください。詳細については、「AWS Service Catalog Account Factory でのアカウントのプロビジョニング 」を参照してください。

その他の一般的な失敗の原因:
  • プロビジョニングされた製品プランを作成した場合 (リソースの変更を表示するため)、アカウントのプロビジョニングが無期限に [In progress] (進行中) 状態のままになることがあります。

  • AWS Control Tower の他の設定変更が進行中に Account Factory で新しいアカウントを作成しようすると、作成は失敗します。例えば、OU にコントロールを追加するプロセスの進行中にアカウントをプロビジョニングしようとすると、Account Factory にエラーメッセージが表示されます。

AWS Control Tower で前のアクションのステータスを確認するには
  • AWS [CloudFormation] > [StackSets] に移動します。

  • AWS Control Tower と関連する各スタックセットをチェックします (プレフィックス: 「AWSControlTower」)。

  • まだ実行中の AWS CloudFormation StackSets オペレーションを探します。

アカウントのプロビジョニングに 1 時間以上かかる場合は、プロビジョニングプロセスを終了し、もう一度試してください。

既存のアカウントを登録できない

既存の AWS アカウントを 1 回登録しようとして、その登録が失敗した場合、2 回目を試みると、スタックセットが存在するというエラーメッセージが表示されることがあります。続行するには、プロビジョニングされた製品を Account Factory から削除する必要があります。

最初の登録が失敗した原因が、アカウントに AWSControlTowerExecution ロールを作成し忘れていたことである場合は、表示されるエラーメッセージで、ロールを作成するように指示されます。ただし、ロールを作成しようとすると、AWS Control Tower がロールを作成できなかったという別のエラーメッセージが表示されることがあります。このエラーは、プロセスが部分的に完了しているために発生します。

この場合、既存のアカウントの登録に進む前に、2 つの回復手順を実行する必要があります。まず、AWS Service Catalog コンソールを使用して Account Factory でプロビジョニングされた製品を終了する必要があります。次に、AWS Organizations コンソールを使用して、OU からアカウントを手動で移動し、ルートに戻す必要があります。その後、アカウントに AWSControlTowerExecution ロールを作成し、[Enroll account] (アカウントの登録) フォームに再度入力します。

登録に失敗するもう 1 つの原因として、アカウントに既存の AWS Config リソースがあることが考えられます。その場合、既存のリソースを変更する方法については、「既存の AWS Config リソースを持つアカウントを登録する」を参照してください。

Account Factory アカウントを更新できない

アカウントの状態に整合性がない場合、Account Factory または AWS Service Catalog から正常に更新することはできません。

ケース 1: 以下のようなエラーメッセージが表示されることがあります。

AWS Control Tower could not baseline VPC in the managed account because of existing resource dependencies.

一般的な原因: AWS Control Tower は、初期プロビジョニング中に常に AWS のデフォルト VPC を削除します。AWS のデフォルト VPC をアカウントに含めるには、アカウントの作成後に追加する必要があります。AWS Control Tower には、AWS のデフォルト VPC に代わる独自のデフォルト VPC があります。ただし、チュートリアルで示されているように Account Factory を設定しない限り、AWS Control Tower によって VPC はまったくプロビジョニングされません。この場合、アカウントに VPC はありません。AWS のデフォルト VPC を使用する場合は、その VPC を再度追加する必要があります。

ただし、AWS Control Tower は AWS のデフォルト VPC をサポートしていません。その種の VPC をデプロイすると、アカウントは Tainted 状態になります。その状態のとき、AWS Service Catalog を使用してアカウントを更新することはできません。

実行するアクション: 追加したデフォルト VPC を削除する必要があります。これによりアカウントを更新できるようになります。

注記

Tainted 状態になると、未更新のアカウントは属する先の OU でコントロールを有効にできないという問題が発生する場合があります。

ケース 2: 以下のようなエラーメッセージが表示されることがあります。

AWS Control Tower detects that your enrolled account has been moved to a new organizational unit.

一般的な原因: ある登録済み OU から別の OU にアカウントを移動しようとしましたが、古い AWS Config ルールが残っています。アカウントが不整合な状態になっています。

実行するアクション:

アカウントの移動が意図されていた場合:
  • Service Catalog のアカウントを終了します。

  • もう一度アカウントを登録してください。

  • コンテキスト/インパクト: デプロイされた AWS Config ルールが、宛先 OU によって指示された設定と一致しません。

  • AWS Config ルールが以前の OU から残り、意図しない使用量が発生する可能性があります。

  • リソース名の競合により、アカウントを再登録または更新しようとすると失敗します。

アカウントの移動が意図されていなかった場合:
  • アカウントを元の OU に戻します。

  • Service Catalog からアカウントを更新します。

  • 起動パラメータに、アカウントの元の OU を入力します。

  • コンテキスト/インパクト: アカウントが元の OU に戻らない場合、アカウントの状態は新しい OU によって指示されたコントロールと一致しません。

  • アカウントの更新は、以前の OU に関連付けられた AWS Config ルールが削除されないため、有効な修復ではありません。

ランディングゾーンを更新できない

アカウントが [Closed] (閉鎖) または [Suspended] (一時停止) 状態の場合は、ランディングゾーンを更新しようとすると問題が発生する可能性があります。ランディングゾーンの更新を実行する前に、クローズされたすべてのアカウントのプロビジョニング済み製品を削除する必要があります。

AWS Service Catalog のプロビジョニング済み製品ページで、次のようなエラーメッセージが表示されることがあります。

AWSControlTowerExecution role can't be assumed on the account.

一般的な原因: プロビジョニング済み製品を削除せずにアカウントを一時停止しました。

実行するアクション: このエラーが表示された場合は、次の 2 つのオプションがあります。

  1. AWS Support に連絡し、アカウントを再度開き、プロビジョニング済み製品を削除してから、アカウントを再度閉鎖します。

  2. アカウント閉鎖のために孤立した StackSets からリソースを削除します。(このオプションは、削除しない [Current] (最新) 状態のインスタンスが StackSets にある場合にのみ使用できます。)

StackSets からリソースを削除するには、閉鎖したアカウントごとにこれを行います。
  • AWS Control Tower の各 StackSets にアクセスし、閉鎖したアカウントのすべてのリージョンから StackInstances を削除します。

  • 重要: [Retain Stack] (スタックの保持) オプションを選択すると、StackSet はスタックインスタンスのみを削除します。StackSet は閉鎖したアカウントからロールを引き受けることができないため、AWSControlTowerExecution ロールを引き受けようとした場合は失敗し、エラーメッセージが表示されます。

AWS Config に関するエラー

AWS Control Tower でサポートされている AWSリージョンで AWS Config が有効になっている場合、事前チェックが失敗したため、エラーメッセージが表示される場合があります。AWS Config の基本的な動作が原因で、このメッセージは問題を適切に説明していないようです。

次のいずれかに類似したエラーメッセージが表示される場合があります。
  • AWS Control Tower cannot create an AWS Config delivery channel because one already exists. To continue, delete the existing delivery channel and try again
.

  • AWS Control Tower cannot create an AWS Config configuration recorder because one already exists. To continue, delete the existing delivery channel and try again
.

一般的な原因: AWS Config サービスが AWS アカウント上で有効になっている場合、デフォルトの名前で設定レコーダーと配信チャネルが作成されます。コンソールから AWS Config サービスを無効にしても、設定レコーダーや配信チャネルは削除されません。これらは CLI を使用して削除するか、AWS Control Tower で使用できるように変更する必要があります。AWS Config サービスが AWS Control Tower でサポートされているいずれかのリージョンで有効になっている場合、このエラーが発生する可能性があります。

アカウントに既存の AWS Config リソースがある場合、既存のリソースを変更する方法については、「既存の AWS Config リソースを持つアカウントを登録する」を参照してください。

実行するアクション: サポートされているすべてのリージョンで、設定レコーダーと配信チャネルを削除します。AWS Config を無効にするだけでは不十分です。設定レコーダーと配信チャネルは CLI を使用して削除する必要があります。CLI から設定レコーダーと配信チャネルを削除した後、もう一度 AWS Control Tower の起動とアカウントの登録を試すことができます。

プロビジョニング済み製品をデプロイしようとしている場合は、再試行する前にプロビジョニング済み製品を削除する必要があります。そうしないと、以下のようなエラーメッセージが表示されることがあります。

  • An error occurred (InvalidParametersException) when calling the ProvisionProduct operation: A stack named Stackname already exists.

メッセージでは、Stackname がスタック名を指定します。

以下に、設定レコーダーと配信チャネルのステータスを確認するために使用できる AWS Config CLI コマンドの例を示します。

表示コマンド:

  • aws configservice describe-delivery-channels

  • aws configservice describe-delivery-channel-status

  • aws configservice describe-configuration-recorders

  • The normal response is something like "name": "default"

削除コマンド:

  • aws configservice stop-configuration-recorder --configuration-recorder-name NAME-FROM-DESCRIBE-OUTPUT

  • aws configservice delete-delivery-channel --delivery-channel-name NAME-FROM-DESCRIBE-OUTPUT

  • aws configservice delete-configuration-recorder --configuration-recorder-name NAME-FROM-DESCRIBE-OUTPUT

詳細については、AWS Config のドキュメントを参照してください。

起動パスが見つからないというエラー

新しいアカウントを作成しようとすると、次のようなエラーメッセージが表示されることがあります。

No launch paths found for resource: prod-dpqqfywxxxx

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

一般的な原因:

  • ルートとしてログインしている可能性があります。AWS Control Tower では、ルートユーザーとしてログインしている場合のアカウントの作成はサポートされていません。

  • IAM Identity Center ユーザーが適切なアクセス許可グループに追加されていません。場合によっては、AWSAccountFactory (エンドユーザーアクセス用) または AWSServiceCatalogAdmins (管理者アクセス用) のいずれかのアクセス許可グループに IAM Identity Center ユーザーを追加する必要があります。

  • IAM ユーザーとして認証されている場合は、正しいアクセス許可を持つように AWS Service Catalog ポートフォリオに追加する必要があります。

  • この問題は、正しい権限を持っているが、AWS Control Tower ドリフトが検出され、修理が必要な場合にも発生します。

許可不足のエラーを受け取った

特定の AWS Organizations で特定の作業を実行するために必要な許可がアカウントにない可能性があります。次の種類のエラーが発生した場合は、IAM や IAM Identity Center の許可など、すべての許可領域をチェックして、それらの場所から許可が拒否されていないことを確認します。

You have insufficient permissions to perform AWS Organizations API actions.

試行するアクションが作業に必要で、関連する制限が見つからない場合は、システム管理者または AWS Support にお問い合わせください。

検出コントロールがアカウントで有効になっていない

最近、AWS Control Tower のデプロイを新しい AWS リージョンに拡張した場合、新しく適用された検出コントロールは、AWS Control Tower によって管理される OU 内の個々のアカウントが更新されるまで、どのリージョンで作成した新しいアカウントにも有効になりません。既存のアカウントにある既存の検出コントロールはまだ有効です。

アカウントを更新する前に検出コントロールを有効にしようとすると、次のようなエラーメッセージが表示されることがあります。

AWS Control Tower can't enable the selected control on this OU. AWS Control Tower cannot apply the control on the OU ou-xxx-xxxxxxxx, because child accounts have dependencies that are missing. Update all child accounts under the OU, then try again.

実行するアクション: アカウントの更新。

AWS Control Tower コンソールからアカウントを更新するには、「AWS Control Tower の OU とアカウントを更新する場合」を参照してください。

複数の個別アカウントをプログラムで更新するには、AWS Service Catalog の API と AWS CLI を使用して更新を自動化できます。更新プロセスにアプローチする方法の詳細については、こちらの「動画チュートリアル」を参照してください。 動画で説明されている ProvisionProduct API の代わりに UpdateProvisionedProduct API を使用できます。

それでもアカウントで検出コントロールが有効にならない場合は、AWS Support にお問い合わせください。

AWS Organizations API によって返された Rate exceeded エラー

考えられる原因

AWS Control Tower が毎日のスキャンを実行して SCP がドリフトしているかどうかを確認している間、ワークロードが実行されていました。

従うべき手順

API スロットリングまたは rate exceeded エラーが発生した場合は、次の手順を試してください。

  • ワークロードを別のタイミングで実行します。(AWS Control Tower が監査スキャンを実行するタイミングを確認するには、リージョン別の AWS Control Tower SCP 不変スキャンのスケジュールを参照してください。)

  • API を HTTP 経由で直接呼び出す場合: AWS SDK を使用して、失敗したアクションを自動的に再試行します。

  • Service Quotas と AWS Support を通じて制限の引き上げをリクエストします。

Elastic Beanstalk での API スロットリングのトラブルシューティング手順の例については、https://aws.amazon.com/premiumsupport/knowledge-center/elastic-beanstalk-api-throttling-errors/ を参照してください。

ある AWS Control Tower ランディングゾーンから別の AWS Control Tower ランディングゾーンに Account Factory アカウントを直接移動できない

警告

このプラクティスは、対象となるアカウント登録の前提条件を満たしていません。なぜなら、対象となるアカウントは同じ AWS 組織全体に属していなければならず、各組織にはランディングゾーンが 1 つしかない可能性があるためです。このアクションを実行しようとして、複数のエラーメッセージが表示された場合には、次の情報が参考になる可能性があります。

Account Factory を使用してプロビジョニングしたアカウントを、別の管理アカウントの下にある AWS Control Tower が管理する別のランディングゾーンに移動するには、すべての IAM ロールとそのアカウントに関連付けられているスタックを元の OU から削除する必要があります。これらのリソースを、アカウントがデプロイされているすべてのリージョンから削除します。

注記

リソースを削除する最善の方法は、元の OU でアカウントのプロビジョニングを解除してから、リソースを移動させることです。

リソースを削除しないと、新しい OU への登録は失敗します。1 つ以上のエラーメッセージが表示されることがあり、アカウントがデプロイされたすべてのリージョンから残りのロールとスタックが削除されるまで、同様のエラーメッセージが表示され続けます。

エラーメッセージが表示されるたびに、新しい OU からアカウントを削除し、エラーメッセージの対象となる古いリソースを削除してから、アカウントを新しい OU に戻す必要があります。削除と削除のこのプロセスは、残りのすべてのリソース、アカウントがデプロイされたすべてのリージョンについて、10 回または 20 回繰り返す必要があります。このようなエラーが繰り返し発生するのは、IAM ロールの削除を防止する SCP を使用して OU にアカウントがプロビジョニングされたためです。再試行する前に、アカウントのリソースをすべて削除することで、回復プロセスを短縮できます。

以下の例は、削除されていないロールとスタックが残っている場合に表示される可能性のある失敗に関するメッセージの種類を示しています。ほとんどの場合、古いリソースが残っている限り、アカウントを登録しようとするたびに、これらのメッセージのいずれかが表示されます。

この例では、リソース ID 文字列の値が変更されています。これらの値は、表示されるエラーメッセージでは同じにはなりません。次の例に示すようなメッセージが表示されます。

  • AWS Control Tower cannot create the IAM role aws-controltower-AdministratorExecutionRole because the role already exists. To continue, delete the existing IAM role and try again.

  • AWS Control Tower cannot create the IAM role aws-controltower-ConfigRecorderRole because the role already exists. To continue, delete the existing IAM role and try again.

  • AWS Control Tower cannot create the IAM role aws-controltower-ForwardSnsNotificationRole because the role already exists. To continue, delete the existing IAM role and try again.

または、次のようなスタックセットの失敗に関するエラーメッセージが表示されることがあります。

  "Error\":\"StackSetFailState\", \"Cause\":\"StackSetOperation on AWSControlTowerBP-BASELINE-CLOUDWATCH with id 8aXXXXf5-e0XX-4XXa-bc4XX-dXXXXXee31 has reached SUCCEEDED state but has 1 NON-CURRENT stack instances; here is the summary :{ StackSet Id: AWSControlTowerBP-BASELINE-CLOUDWATCH:40XXXbf2-Xead-46a1-XXXa-eXXXXecb2ee2, Stack instance Id: arn:aws:cloudformation:eu-west-1:1X23456789XX: stack/StackSet-AWSControlTowerBP-BASELINE-CLOUDWATCH-4feXXXXXX-ecXX-XXc6-bXXX-4ae678/4feXXXXXX-ecX-4ae123458, Status: OUTDATED, Status Reason: ResourceLogicalId:ForwardSnsNotification, ResourceType:AWS::Lambda::Function, ResourceStatusReason:aws-controltower-NotificationForwarder already exists in stack arn:aws:cloudformation:eu-west-1:1X23456789XX: stack/StackSet-AWSControlTowerBP-BASELINE-CLOUDWATCH-4feXXXXXX-ecXX-XXc6-bXXX-4ae678/4feXXXXXX-ecX-4ae123458.

残りのリソースをすべて最初の OU から削除すると、アカウントを新しい OU に招待したり、プロビジョニングしたり、登録したりできるようになります。

AWS サポート

既存のメンバーアカウントを別のサポートプランに移動する場合は、ルートアカウントの認証情報を使用して各アカウントにサインインし、プランを比較して、希望するサポートレベルを設定できます。

サポートプランを変更するときは、MFA とアカウントのセキュリティの連絡先を更新することをお勧めします。