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

この記事は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」無料トライアルはこちらから

CATEGORY :

COMMENT ON FACEBOOK