3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS Configの通知内容をLambdaで整形

Last updated at Posted at 2019-02-23

AWS Config概要

触れる機会がありましたので忘備録的に記載致します。

  • AWSの各サービスの設定変更を検知
    作業者が複数いる状況やAWSリソースが多数ある場合でも管理者が設定変更を簡単に把握できる。

  • AWSが準備したルールに準拠しているかを評価
    誤った設定を行った際に通知され把握できる。

■ 公式リンク
公式ページ
ブラックベルト

構築

構成

AWS Configから直でSNSだと件名が固定になってしまい、本文のjsonを見ないと何のメールか判らない為、
Lambdaを経由してメール通知します。Lambda連携の為にCloudWatch Eventsも出てきます。

Config.png

AWS Config

■ 設定

設定項目
記録するリソースタイプ グローバルリソース (AWS IAM リソースなど) を含める
Amazon S3 バケット バケットの作成
バケット名 任意
Amazon SNS トピック ※チェックなし
AWS Config ロール 既存の AWS Config サービスにリンクされたロールを使用

■ ルール
52項目から通知したいルールを選択
AWS Config マネージドルールのリスト

CloudWatch Events

### 設定変更検知

設定項目
イベントソース イベントパターン
サービス名 Config
イベントタイプ Config Configuration Item Change
※1 Any message type
※2 Any resource type
※3 任意のリソース ID

※1 選べるタイプが1つの為、anyを選択
※2 通知のAWSサービスを選択したい場合に使用。
  下記URLから監視対象のリソースタイプの値を入力することで通知内容を限定できる。
  AWS Config でサポートされている AWS リソースタイプとリソース関係
※3 EC2でいうインスタンスIDを入力することで、通知内容をインスタンス単位で制限ができるはず
  ☆未検証!

### ルール準拠・非準拠検知

設定項目
イベントソース イベントパターン
サービス名 Config
イベントタイプ Config Rules Compliance Change
※1 Any rule name
※2 Any resource type
※3 任意のリソース ID

※1 Configのルール設定で検知対象を絞っている為、Any
※2 設定変更検知と同様
※3 設定変更検知と同様

Lambda

タイトルがAWS Config起因かつ、設定変更検知なのかルール準拠・非準拠検知なのかを把握できるようにします。
本文はConfigが出力するjsonをそのまま載せるLambdaのコードになっています。

設定項目
関数の作成 一から作成
名前 任意
ランタイム Python3.6
ロール 1つ以上のテンプレートから
ロール名 任意
ポリシーテンプレート Amazon SNS 発行ポリシー
トリガーの追加 CloudWatch Events
ルール 上記で作成したルール

### コード

   
import json   
import boto3
 
def lambda_handler(event, context):   
        type = event['detail-type']  
        Msg=json.dumps(event)
        sub = '[AWS Config]' + str(type)
            
        client = boto3.client('sns')
        response = client.publish(
            TopicArn='SNS TopicのArn',
            Message=text,
            MessageStructure='context',
            Subject=sub
        )  
        return

SNS

トピックの設定で「メッセージの発行の許可」を「全員」にすることで
Lambdaからメールを送付できました。
もっと適切な設定があると思いますが、省略します。

まとめ

ここまで完了したら監視対象の設定を変更し、メールが通知されるか確認してください。
CloudWatch EventsのターゲットにSNS Topicを追加することでLambda起因のトラブルか否かを
切り分けすることができます。
CloudWatch LogsのLambdaを見るとエラー要因がわかったりします。

公式ドキュメントや調べた内容の継ぎ接ぎな内容なので、間違いがありましたら
ご指摘いただけると幸いです。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?