Amazon Web Services ブログ
新 – CloudFormation ドリフト検出
AWS CloudFormation は、Infrastructure as Code (IaC) を実装する取り組みをサポートします。テンプレートを使うことで、希望する AWS リソース設定を定義し、それを使って CloudFormation スタックを起動することができます。スタックには、指定通りに設定されたテンプレートに定義されている、一連のリソースが含まれています。設定を変更する必要があるときは、このテンプレートを更新し、CloudFormation の変更セットを使って変更を適用します。テンプレートはインフラストラクチャを完全かつ詳細に指定するので、ユーザーは自信をもって、いつでもこれを使って新しいリソースセットを作成できます。
実に理想的といえるでしょう。 現実には、多くの企業でいまだに IaC の完全な実装が行われています。こうした企業は、並行して従業員の研修やプロセスの調整を行っています。いずれも、ある程度の時間が必要です。移行期間中に、テンプレートを更新することなく、AWS リソース (とそのプロパティ) を直接変更して終わることもよくあります。また、帯域外でその場しのぎの修正を行って EC2 インスタンスタイプを変更したり、Auto Scaling パラメータを修正したり、IAM パーミッションを更新したりしている場合もあります。こうしたアンマネージド型の変更は、再起動時に問題を発生させる要因となります。実行中のスタックの設定がテンプレートから乖離してしまい、適切に記述されなくなるためです。深刻なケースでは、変更によってスタックの更新や削除が妨害される場合もあります。
新しいドリフト検出
本日、当社は、上記のような状況に対応するために設計された、強力な、新しいドリフト検出機能を発表します。テンプレートからスタックを作成した後に、コンソール、CLI、またはユーザー自身のコードからのドリフトを検出できます。スタック全体、または特定のリソースでドリフトを検出し、結果を数分以内に確認することが可能です。その後、テンプレートの更新に必要な情報や、リソースをコンプライアンスに準拠した適切な状態に戻すための情報が提供されます。
ドリフト検出のチェックを開始すると、CloudFormation が、現在のスタック設定と、スタックを作成または更新するために使用された、テンプレートが指定する設定とを比較し、誤差があれば報告し、それぞれの詳細な情報を提供します。
当社は、核となる一連のサービス、リソース、プロパティへのサポートを開始します。サポートは今後さらに追加される予定です。初回のリソースリストには、API ゲートウェイ、Auto Scaling、CloudTrail、CloudWatch Events、CloudWatch Logs、DynamoDB、Amazon EC2、Elastic Load Balancing、IAM、AWS IoT、Lambda、Amazon RDS、Route 53、Amazon S3、Amazon SNS、Amazon SQS その他が含まれています。
ドリフト検出は、CREATE_COMPLETE、UPDATE_COMPLETE、UPDATE_ROLLBACK_COMPLETE、UPDATE_ROLLBACK_FAILED の状態にあるスタックに実行できます。ドリフト検出は、チェックしたスタックにネストされている他のスタックには適用されません。これらのチェックはユーザーが自ら行います。
実行中のドリフト検出
Provisioned Throughput for Amazon EFS の記事を書いたときに使用した単純なタスクで、この機能を実際に使ってみました。スタックを選んで [Action] メニューから [Detect drift] を選択するだけです。
自分の意図を確認し、[Yes, detect] をクリックします。
すぐにドリフト検出が開始されます。実行中は画面を [Close] してもかまいません。
完了すると、スタックのドリフトステータスは IN_SYNC であることが確認できます。
チェック済みのリソースのドリフトステータスは、[Resources] タブでも確認できます。
次に、IAM ロールを編集して新規ポリシーを追加し、フェイクの変更を行います。
再びドリフトが検出されました。今回はスタックに誤差があることが (当然ながら) 発見されました。
[View details] をクリックし、リソースのドリフトステータス で詳細を確認します。
変更したリソースのステータス行を展開すると、ドリフトの詳細を確認できます。
今すぐ利用可能です!
この機能は、米国東部 (バージニア北部)、米国東部 (オハイオ)、米国西部 (北カリフォルニア)、米国西部 (オレゴン)、カナダ (中部)、アジアパシフィック (ムンバイ)、アジアパシフィック (ソウル)、アジアパシフィック (シンガポール)、アジアパシフィック (シドニー)、アジアパシフィック (東京)、欧州 (フランクフルト)、欧州 (アイルランド)、欧州 (ロンドン)、 欧州 (パリ)、南米 (サンパウロ) の各リージョンで本日からご利用いただけます。上記の通り、当社は、初回の強力なリソースセットへのサポートを開始します。サポートは、今後数か月間でさらに追加される予定です。
— Jeff;