【AWS】RDS入門/イベントをメールで通知してみよう

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは植木和樹です。Amazon RDS(Relational Database Service)はMySQLやOracle、Microsoft SQLServerを利用することができ、クリックだけでデータベースが用意できてしまうという優れもののRDBMSサービスです。バックアップを取ったり、別のアベイラビリティゾーン(データセンター)に自動的にフェイルオーバーする設定もクリックだけで簡単に設定できてとても便利です。

さてRDSではデータベースが起動したり、フェイルオーバーしたり、バックアップが実行されたりすると「イベント」という形で通知されます。この通知は初期状態ではマネージメントコンソールからしか見る方法がありません。でも常にマネージメントコンソールの前に張り付いているわけにもいきませんので、やっぱりイベントが起きたらメールなどでお知らせがきてもらいたいですよね。

本日は「Amazon RDS Announces Support for DB Event Notifications via Email and SMS」で紹介されている方法を使って、RDSになにかイベントが起きたらメールで通知させてみたいと思います。

RDSのイベントをメールで通知できます

RDSではDBインスタンスや、パラメータグループや、セキュリティグループや、DBスナップショットになにかしらイベントが発生した時に、メール(やSMS)で通知を受け取ることができます。例えば、スナップショットからのデータベースリストが完了した時や、Multi-AZ構成のインスタンスでフェイルオーバーが発生した場合などです。現時点で40を超えるイベントがサポートされており、RDSのコンソール画面やCLIやAPIを使ってDBイベントサブスクリプションを登録することができます。イベント通知はRDSがサポートしているすべてのデータベースエンジン(MySQL、Oracle、SQLサーバー)で提供されています。さらに、すべてのリージョンでメール通知がサポートされていて、SMS通知についてはUS Eastリージョン(Northern Virginia)でのみ提供されています。

サポートされているイベントの一覧についてや, DBイベントの登録についてさらに詳しく知りたいときは「Amazon RDS User Guide」のイベントの項を参照してください。

Amazon RDSについて、さらに詳しく知りたいときは、「RDSのページ」、 「 ユーザーガイド 」、「FAQ」を訪れてみてください。

RDSのイベントをメールで通知してみよう

それではRDSでイベントが発生したらメールで通知してみましょう。設定はマネージメントコンソールのRDSの画面にある「Event Subscriptions」で行います。「Create Event Subscription」ボタンをクリックして新しくイベント通知を登録します。

20130815_rds-event-subscription_01

「create topic」のリンクをクリックすると、新しくSNSのトピックを作成することができます。「Recipient type」に「Email」を選び、宛先メールアドレスを入力します。

20130815_rds-event-subscription_02

「SourceType」は通知できるイベントの大分類です。「db-instance」「db-security-group」「db-parameter-group」「db-snapshot」の4つから選ぶことができます。SourceTypeを選ぶと「Event Categories」の内容が変化します。各カテゴリーにどんなイベントがあるのかは「Amazon RDS Event Categories and Event Messages」に一覧があります。

db-instance

20130815_rds-event-subscription_03

db-security-group

20130815_rds-event-subscription_04

db-parameter-group

20130815_rds-event-subscription_05

db-snapshot

20130815_rds-event-subscription_06

ひとまずdb-instanceSelect Allを選んでおきましょう。

最後に対象のインスタンスを選びます。これもSelect Allですべてのインスタンスのイベントが通知されるようにします。「Yes Create」ボタンをクリックするとイベント通知が作成されます。作成までには5分程度かかるのでしばらくお待ちください。

20130815_rds-event-subscription_07

SNSでトピックを作成して通知する際には、登録確認メールが送られてきています。メール本文のURLをクリックして登録確認をしておきましょう。

You have chosen to subscribe to the topic: 
arn:aws:sns:ap-northeast-1:123456789012:rds-topic

To confirm this subscription, click or visit the link below
(If this was in error no action is necessary): 
Confirm subscription(←クリックすると確認処理が行われるリンク)

Please do not reply directly to this e-mail.
If you wish to remove yourself from receiving all future 
SNS subscription confirmation requests please send email 
to sns-opt-out

以上でイベント通知設定は終わりです。以降RDSのインスタンスに何かしらのイベントが発生するとメールが送られてきます。
以下はRDSインスタンスがフェイルオーバーした時に送られてくるメールです。なおフェイルオーバーの際には「Multi-AZ instance failover started」「Multi-AZ instance failover completed」「DB instance restarted」と3つのイベントが通知されます。

Subject: RDS Notification Message

Event Source : db-instance

Identifier Link: https://console.aws.amazon.com/rds/home?region=ap-northeast-1#
SourceId: testdb

Notification time : 2013-08-15 12:37:03.094

Message : Multi-AZ instance failover started

Event ID : http://docs.amazonwebservices.com/AmazonRDS/latest/UserGuide/USER_Events.html#RDS-EVENT-0013

まとめ

今回はRDSで発生するイベントをメールで通知されるよう設定しました。インスタンスの作成にしろ、変更にしろ、スナップショットからのリストアにしろ、RDSの操作というのは時間がかかります。画面リロードしながら待っている時間ももったいないので、処理が完了したらメールで教えてもらうよう設定しておくのが良いでしょう。