AWS でのワークロード検出の作成時に、CloudFormation での作成が失敗するので、解決策を教えてください

2022.08.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

AWS 公式サイトを参考に、AWS でのワークロード検出 (旧称: AWS Perspective) を利用するための環境構築を行っています。
AWS 公式サイトから提供されている CloudFormation テンプレートを使用して、デフォルト設定でスタックを作成したところ、以下のエラーが発生しました

Service: AmazonConfig; Status Code: 400; Error Code: MaxNumberOfDeliveryChannelsExceededException; Request ID: 11111111-aaaa-2222-bbbb-333333333333; Proxy: null

上記エラーの原因と解決策を教えてください。

どう対応すればいいの?

MaxNumberOfDeliveryChannelsExceededException というエラーは、リージョン内の AWS Config のレコーダーがすでに存在していることが原因です。

AWS ナレッジセンターより

AWS Config では、現在、アカウント内のリージョンごとに 1 つの設定レコーダーしか許可されていません。MaxNumberOfConfigurationRecordersExceededException エラーは、リージョンのアカウントに設定レコーダーが既に存在しているため、新しく作成できないことを示します。このエラーは、レコーダーが AWS マネジメントコンソール、AWS コマンドラインインターフェイス (AWS CLI)、または AWS CloudFormation のいずれを使用して作成されたかに関係なく発生します。

MaxNumberOfDeliveryChannelsExceededException を解決する方法としては、既存のレコーダーを削除する方法もありますが、AWS でのワークロード検出では、CloudFormation スタック作成時のパラメーターの設定を変更することで、エラーを回避する方法もあります。

AWS 公式ドキュメントより

Parameter Default Description
AlreadyHaveConfigSetup No Confirmation of whether or not you already have AWS Config set up in the deployment account. For details, refer to Prerequisites.

AlreadyHaveConfigSetup というパラメーターは、AWS でのワークロード検出の CloudFormation スタックを作成する AWS アカウント内のリージョンに、すでに AWS Config が設定されているかどうかのパラメーターです。
もし、すでに対象の AWS アカウント内のリージョンで AWS Config を有効化している場合には、CloudFormation スタック作成時に、AlreadyHaveConfigSetup には Yes を指定すれば、MaxNumberOfDeliveryChannelsExceededException を回避して、CloudFormation スタックの作成が可能です。

参考資料