AWS Control Towerランディングゾーンセットアップ中にCloudFormationスタック(AWSControlTowerBP-BASELINE-CLOUDTRAIL-MASTER)の作成に失敗したときの原因と対応方法

2024.05.24

Control Tower有効化時に以下のエラーメッセージが出て、セットアップに失敗しました。

原因の一例と対応内容を紹介します。

エラーメッセージ(Control language=Towerコンソール)

AWS Control Tower はランディングゾーンを完全に設定できませんでした。AWS Control Tower is unable to update stack arn:aws:cloudformation:ap-northeast-1:XXXXXXXX:stack/AWSControlTowerBP-BASELINE-CLOUDTRAIL-MASTER/1508e7a0-18bf-11ef-a436-0a2fece3bfa7 because the stack is in a failed state.To continue, review the stack and try again.

エラーメッセージ(CloudFormationスタック language=AWSControlTowerBP-BASELINE-CLOUDTRAIL-MASTER)

Resource handler returned message: "Invalid request provided: Insufficient permissions to access S3 bucket aws-controltower-logs-XXXXXXXX-ap-northeast-1 or KMS key arn:aws:kms:ap-northeast-1:XXXXXXXX:key/YYYYYYYYY. (Service: CloudTrail, Status Code: 400, Request ID: a0426a95-7c24-4dc0-8298-397daa6aa482)" (RequestToken: a42b51d5-8c1c-17da-630b-a1c9fcea26ef, HandlerErrorCode: InvalidRequest)

結論

  • 指定したKMSキーポリシーの許可が不足していた
  • AWS Config と CloudTrail が暗号化に AWS KMS を使用できるようにするポリシーステートメントを追加した

原因と対応

前提

  • Control Tower有効化時にKMS暗号化を有効

Control Towerでは、任意でKMSを使ってリソースを暗号化(CloudTrailやAWS Config)することができます。

今回はこちらの設定を有効化しました。

原因

  • KMSキーポリシーの許可が不足していた

Control Towerで利用できるKMSキーには以下の条件があります。

  • 有効
  • 対称
  • マルチリージョンキーではない
  • ポリシーに正しい許可が追加されている
  • キーが管理アカウントにある

AWS KMS keysの設定 (任意) - AWS Control Towerから引用

今回は、「ポリシーに正しい許可が追加されている」の部分が満たせていませんでした。

Control Towerで実行されるCloudFormationにて、CloudTrailが作成されます。

このCloudTrailにも今回のKMSが指定されます。しかし、KMSキーポリシーでCloudTrailのアクセスを許可していません。

CloudTrailのリソース作成に失敗し、Control Towerのセットアップに失敗しました。

対応

  • KMSキーポリシーにCloudTrailとAWS Configの許可を追加した

以下ドキュメントの通り、KMSキーポリシーを追加しました。

KMS キーポリシーを更新する |オプションで AWS KMS キーを設定する - AWS Control Tower

「AWSマネジメントコンソール」 -> 「KMS」 -> 「カスタマー管理型のキー」 -> [該当のキー]を選択します。

「キーポリシー」 -> 「編集」を選択して、ポリシーを追加します。

再試行してもCloudFormationスタックが作り直されなかったため、一度スタックを削除します。

「AWSマネジメントコンソール」 -> 「CloudFormation」 -> 「スタック」 -> 「AWSControlTowerBP-BASELINE-CLOUDTRAIL-MASTER」 -> 「削除」を選択します。

その後、Control Towerのコンソールから「再試行」を実行します。

セットアップ完了までしばらく待つと、「お客様のランディングゾーンが利用できるようになりました。」のメッセージが確認できました。

おわりに

KMSキーポリシー不足で、Control Towerのセットアップに失敗する件についてでした。

今回はセットアップ時にKMSキーを指定しましたが、セットアップ済みの環境にKMSキーを追加する場合は以下もご確認ください。

以上、AWS事業本部の佐藤(@chari7311)でした。

参考

Control Towerランディングゾーンセットアップ時のその他エラー