[アップデート] CloudFromation Hooks で AWS Contol Tower のコントロールカタログからプロアクティブコントロールを使ったフックを作成できるようになりました
いわさです。
AWS CloudFormation には「フック」という概念があります。
CloudFormation リソースの作成時などにカスタム処理を実行できます。
これまでフックの作成には、Lambda あるいは Guard DSL での実装が必要だったのですが、先日のアップデートで AWS Control Tower のコントロールカタログからコントロールを選択してフックを作成できるようになりました。
Control Tower では予防や発見などの観点で色々な仕組みのコントロールが提供されています。
SCP/RCP を使ったもの、Config ルールを使ったものなどがありますが、CloudFormation Hooks を使ったコントロールはプロアクティブコントロールと呼ばれています。
今回のアップデートでは Control Tower で使っていたものをフック用にユーザーが選択できるようになったというものです。
また、今回のアップデートにあわせて、CloudFormation Hooks の呼び出し履歴と結果を確認できるサマリ画面も追加されています。
プロアクティブコントロールを使ったフックの作成
では早速、新しい方法でフックを作成してみます。
CloudFormation コンソールから「フック」メニューを選択します。
「フックを作成」から、従来の Lambda と Guard に加えて「Control Catalog を使用」というものが追加されています。これです。
作成に進むと、まずは AWS が用意しているプロアクティブコントロールがリスト表示されるので、この中から選択する形です。
今回は SQS 向けに用意されているプロアクティブコントロールが2つあるのでこちらを使ってみます。
内容としてはデッドレターキューの設定必須と、保存データの暗号化必須です。[1]
コントロールを選択したら、後はフックのモードやフィルターを選択します。
まずは警告(コントロールのチェックに引っかかってもスタックのデプロイは中断させない)モードで設定してみます。
フック適用対象もフィルターでカスタマイズできますが、今回は特に設定せず全スタックを対象にします。
作成後、フックの一覧から対象フックを確認することができます。
以下の画面だとステータスが無効になってますが、私がちょっと変更しちゃったせいでして、実際には作成直後は有効ステータスで作成されます。
フックの動作確認と呼び出しサマリでの確認
フックが作成できたので、実際にスタックを作成して挙動を観察してみましょう。
今回のアップデートで CloudFormation コンソールに「呼び出しの概要」というメニューが追加されていまして、こちらからフックの呼び出し履歴や結果を確認することができます。
フックを作成した直後ではまだ呼び出しがされていないので何も表示されていない状態ですね。
ではコントロールに違反する形で SQS キューを作成する CloudFormation テンプレートを作成しましょう。
AWSTemplateFormatVersion: '2010-09-09'
Description: 'Simple SQS Queue'
Resources:
SampleQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: hoge0907queue
続いて、こちらをデプロイします。
イベントタブを観察していると、選択したプロアクティブコントロールが呼び出されていることが確認できますね。
今回は警告モードのフックだったので、そのままスタック作成に成功しました。
続いて、先程確認した「呼び出しの概要」画面にどのように表示されるのか見てみましょう。
おお、今度は表示されましたね。
どのスタックでいつ呼び出されたのか、フックのモードがどういうモードで、結果がどうなったのかが確認できます。
プロアクティブコントロールに違反して警告がでていることが確認できます。なるほどね。
せっかくなので警告ではなく失敗モードでの表示も確認してみましょう。
「フックの動作を編集」からモード変更ができます。
失敗モードを選択しました。
同じように先ほどのテンプレートを使ってスタックをデプロイし直してみると、今度はスタック作成に失敗しましたね。
イベントタブからはプロアクティブコントロールに違反していることがわかります。
「呼び出しの概要」画面では次のように結果が「失敗」として表示されるようになりました。良いですね。
また、フックごとに「呼び出し履歴」タブが用意されているのですが、こちらからもどのスタックで呼び出されて結果がどうだったかの確認を行うことができます。
さいごに
本日は CloudFromation Hooks で AWS Contol Tower のコントロールカタログからプロアクティブコントロールを使ったフックを作成できるようになったので使ってみました。
これはかなり良いアップデートですね。
CloudFormation Hooks は便利なのですが、Lambda や Guard の記述が必要で少しだけ敷居が高かったんですよね。
Control Tower のプロアクティブコントロールではよくあるチェック項目が揃っているので、基本的には今後はこちらから選択するだけで良さそうです。
細かいカスタマイズしたい時だけ Lambda と Guard を使うことになりそうですね。