AWS Config Rules で Lambda function に渡されるイベント情報について

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

みなさんこんにちは。
技術研究課の山田です。

この記事は AWS Advent Calendar 2015 の 9日目の内容になります。
Advent Calender に参加するのは初めてなので、なにとぞお手柔らかにお願いします。

さて、今回は AWS Config Rules のちょっとした小ネタをご紹介します。
AWS Config Rules とは? については前回の記事をご参照下さい。

Customer Managed Rules

AWS Config Rules には Customer Managed Rules という、独自ルールを作成して「特定のAWSリソースがポリシーを満たしているかどうか」検査する機能があります。
事前に Lambda function でルールを定義することで、AWSリソースの変更時または定期的に関数が実行され、リソースが適切な状態なのかチェックするという仕組みです。

Lambda function について

Customer Managed Rule の Lambda function で実行されるハンドラーの引数は eventcontext と、2つあります。

Lambda 関数ハンドラー (Node.js)
 

 

event はイベントソース( Lambda function の呼び出し元 )からのイベントデータが渡されます。
context は自身のランタイム情報が渡されます。

Customer Managed Rule で指定した Lambda function が呼び出されるタイミングとして、先ほども書いたように「リソース変更時」と「定期実行」の2パターンあるのですが、呼びだされたタイミングで上記の event引数 へ「監視リソースの状態」の情報が入っているJSONが渡されます。

この渡された JSON を関数内であれこれすることで、独自ルールを定義することになります。

event の中身について

前置きはこれくらいにして、event の中身を覗いてみましょう。
ドキュメントによると、event は次の4つのプロパティで構成されているようです。

Example AWS Lambda Functions for AWS Config Rules (Node.js)

invokingEvent : 監視するAWSリソースの状態
ruleParameters : 事前定義したパラメータセット
resultToken : ルール評価結果を特定するためのトークン
eventLeftScope : 監視するAWSリソースが削除されたのかどうか

event の中身は下記コードで確認します。
 

結果

下記パラメータを AWS Config Rules で設定した上で、t2.small のインスタンスを起動します。

config_rule 

また、Rule parameters ( ルールのチェック処理に引き渡すパラメーターを Key, Value の形式で設定する )には下記パラメータを設定しました。

config_1

 

出力結果です。

invokingEvent

 

ruleParameters
 

resultToken
 

 

eventLeftScope
 

 

今回は Trigger type を Configuration changes にしたので、EC2を作成したタイミングで Lambda function が実行され、上記結果が出力されました。
invokingEvent にはAWSリソース( EC2 Instance )の情報、ruleParameters には事前に定義した値が取得出来ています。

まとめ

Lambda Function の中ならデフォルトで AWS SDK が使える状態なので、本当に自由にルール定義できちゃいますね。
この記事が誰かの何かに役立てば幸いです。

 

AWS運用自動化サービス「Cloud Automator」