マルチリージョン、マルチアカウント組織で CloudFormation ドリフト検出を設定する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

マルチリージョン、マルチアカウント組織で CloudFormation ドリフト検出を設定する

Amazon Web Services、Ram Kandaswamy

概要

Amazon Web Services (AWS) ユーザーは、 AWS CloudFormation スタックのドリフトなど、リソース設定の不一致を効率的に検出し、できるだけ早く修正する方法を探すことがよくあります。これは、 AWS Control Tower が使用される場合に特に当てはまります。

このパターンは、統合されたリソース設定を変更し、結果に基づいて、問題を効率的に解決する規範的なソリューションを提供します。このソリューションは、複数の 、複数の アカウント AWS リージョン、またはその両方の組み合わせに複数の CloudFormation スタックが作成されるシナリオ向けに設計されています。このソリューションの目標は以下のとおりです。

  • ドリフト検出プロセスを簡素化する

  • 通知と警告を設定する

  • 統合レポートを設定する

前提条件と制限事項

前提条件

  • AWS Config モニタリングする必要があるすべてのリージョンとアカウントで有効になっている

制限事項

  • 生成されるレポートは、カンマ区切り値 (CSV) と JSON 出力形式のみをサポートします。

アーキテクチャ

次の図は、複数の accounts. AWS Config rules で AWS Organizations 設定されたアカウント間の通信を示しています。 

2 つの AWS Organizations アカウントのスタックをモニタリングするための 5 段階のプロセス。

このワークフローには以下のステップが含まれます。

  1. AWS Config ルールはドリフトを検出します。

  2. 他のアカウントで見つかったドリフト検出結果は管理アカウントに送信されます。

  3. Amazon CloudWatch ルールは AWS Lambda 関数を呼び出します。

  4. Lambda 関数は、集計結果について AWS Config ルールをクエリします。

  5. Lambda 関数は、ドリフトの E メール通知を送信する Amazon Simple Notification Service (Amazon SNS) に通知します。

自動化とスケール

ここで紹介するソリューションは、追加のリージョンとアカウントの両方に合わせてスケールできます。

ツール

AWS のサービス

  • AWS Config は、 内の AWS リソースの設定の詳細ビューを提供します AWS アカウント。これには、リソース間の関係と設定の履歴が含まれるため、時間の経過と共に設定と関係がどのように変わるかを確認できます。

  • Amazon CloudWatch は、 AWS リソースと で実行するアプリケーションのメトリクスを AWS リアルタイムでモニタリングするのに役立ちます。

  • AWS Lambda は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。

  • Amazon Simple Notification Service (Amazon SNS)」は、ウェブサーバーやメールアドレスなど、パブリッシャーとクライアント間のメッセージの交換を調整および管理するのに役立ちます。

エピック

タスク説明必要なスキル

アグリゲータを作成します。

  1. にサインイン AWS マネジメントコンソール し、https://console.aws.amazon.com/config で AWS Config コンソールを開きます。

  2. 管理アカウントにアグリゲータを作成します。

  3. がソースアカウントからデータを取得できるように AWS Config 、データレプリケーションが有効になっていることを確認します。

  4. 該当するリージョンとアカウントをすべて選択します。 AWS Organizationsに基づいてアカウントを選択できます。組織内の新規アカウントは自動的にアグリゲータの一部になるため、この方法を推奨します。

クラウドアーキテクト

AWS マネージドルールを作成します。

cloudformation-stack-drift-detection-check AWSマネージドルールを追加します。このルールには cloudformationArn のパラメータ値が必要です。

スタックのドリフトを検出する権限を持つ IAM ロールの Amazon リソースネーム (ARN) です。ロールには、 がロールを引き受け AWS Config ることができる信頼ポリシーが必要です。

クラウドアーキテクト

アグリゲータの詳細なクエリセクションを作成します。

以下のクエリを作成して、複数のソースからドリフトスタックを取得できます。

SELECT resourceId, configuration.driftInformation.stackDriftStatus WHERE resourceType = 'AWS::CloudFormation::Stack' AND configuration.driftInformation.stackDriftStatus IN ('DRIFTED')
クラウドアーキテクト、開発者

クエリとパブリッシュを自動化します。

  1. アタッチされているコードを使用して Lambda 関数を作成します。Lambda は、Lambda 関数で環境変数として提供される SNS トピックに結果をパブリッシュします。

  2. アラートを受信するには、SNS トピックへのメールサブスクリプションを作成します。

クラウドアーキテクト、開発者

CloudWatch ルールを作成します。

スケジュールベースの CloudWatch ルールを作成して、アラートを行う Lambda 関数を呼び出します。

クラウドアーキテクト

関連リソース

リソース

追加情報

考慮事項

各 CloudFormation スタックまたはスタックセットでドリフト検出を開始するためには、特定の間隔で API コールを含むカスタムソリューションを使用するのではなく、このパターンで示されているソリューションを使用することをお勧めします。特定の間隔で API コールを使用するカスタムソリューションを使用すると、多数の API コールが発生してパフォーマンスに影響を与える可能性があります。API コールの数が多いと、スロットリングが発生する可能性があります。もう 1 つの潜在的な問題として、リソースの変更をスケジュールのみに基づいて特定すると、検出に遅延が発生します。

スタックセットはスタックで構成されているため、このソリューションを使用できます。スタックインスタンスの詳細は、ソリューションの一部としても入手できます。

アタッチメント

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip