AWS CloudTrail は、インスタンスの作成や変更など AWS アカウントで行われた操作をイベントログとして保存してくれるサービスです。設定ミスなどのトラブルの原因調査などに便利な仕組みですね。また、チームで AWS を運用していると、他の人が変更した内容をいち早く通知して欲しいことがあります。そこで今回は、CloudTrail の Route 53 イベントをメールで通知する設定手順をまとめてみました。
設定の概要
仕組みとしては、CloudWatch のイベントルールに通知したい CloudTrail のイベントを登録して、アクション先に Amazon SNS のトピックを指定してメール通知します。
登場人物が多いのでいっけん複雑そうに見えますが、各サービスごとの設定はいたって簡単です。
CloudTrail のイベント名の確認
今回は、Amazon Route 53 の DNS リソースレコードの変更をメールで通知しますので、それに対応する CloudTrail のイベント名を確認しておきます。
CloudTrail で Amazon Route 53 に行なった操作を確認するには、「米国東部(バージニア北部)」リージョンを選択する必要がありますので変更しておきましょう。(これ以降の各種設定も「米国東部(バージニア北部)」リージョンで行なってください)
CloudTrail の「イベント履歴」を選択して、それらしいイベントを探します。Route 53 の リソースレコード変更のイベント名は「ChangeResourceRecordSets」ということが分かりましたので、これをメモしておきます。(この後の CloudWatch の設定で使います)
参考資料:AWS CloudTrail を使用して Amazon Route 53 API に送信されたリクエストをキャプチャする
CloudTrail のログ記録設定
続いて、CloudTrail のログを記録するように設定します。(これは CloudWatch のイベントルールに追加するために必要です)
CloudTrail ダッシュボートの「証跡の作成」をクリックします。
適当な証跡名を入力します。
下にスクロールして、記録のS3バケット名を入力して「作成」をクリックします。
証跡が作成されたら CloudTrail の設定は完了です。
(補足)
以前は手動で CloudTrail を有効化する必要がありましたが、2017年8月以降はなにもしなくても CloudTrail が有効化されるようになりました。ただし、ログの記録は自分で設定する必要があります。
参考資料:新機能- CloudTrailを全てのお客様に | Amazon Web Services ブログ
SNS トピックの作成
CloudWatch の設定の前に、メール通知の SNS トピックを作成しておきます。
Amazon SNS の「トピック」を選択し、「新しいトピックの作成」をクリックします。
適当なトピック名を入力して、「トピックの作成」をクリックします。
作成されたトピックをクリックします。
「サブスクリプションの作成」をクリックします。
プロトコル「Email」を選択して、エンドポイントに通知先のメールアドレスを入力したら「サブスクリプションの作成」をクリックします。
通知先のメールアドレスに確認メールが送信されますので「Confirm subscription」をクリックして確認します。
SNS トピックの作成は以上で完了です。
CloudWatch イベントルールの作成
最後に CloudWatch のイベントルールを作成します。
CloudWatch の「イベント」を選択し、「ルールの作成」をクリックします。
サービス名「Route 53」、イベントタイプ「AWS API Call via CloudTrail」を選択します。(※「米国東部(バージニア北部)」リージョンを選択していない場合は「Route 53」が選択できません)
「特定のオペレーション」を選択して、Route 53 の リソースレコード変更のイベント名「ChangeResourceRecordSets」をフォームに入力します。
続いて「ターゲットの追加」をクリックして「SNSトピック」を選択し、先ほど作成した「email」トピックを指定したら「設定の詳細」ボタンをクリックします。
適当な名前を入力して「ルールの作成」をクリックします。
以上で CloudWatch のイベントルールが作成されました。
動作確認
Amazon Route 53 にリソースレコードを追加すると、ほぼリアルタイムで下のような通知が送られてきます。
Json のログがそのまま送られてきますが(^^;) 慣れてしまえばすぐに読めるようになります。
通知を受けるのが身内だけならこのままでもいいかと思いますが、お客さんなどにも通知する場合は一度 Lambda に送って整形してから SNS に投げるのがよさそうですね。
コメント