Systems Manager OpsCenter OpsItem の変更を通知する! #opscenter

こんにちは 園部です。

SSM OpsCenter では、管理する OpsItems に(ステータスや内容)変更があった際にSNSによる通知が可能です。

通知の変更: OpsItem が変更または編集される場合はいつでも、Amazon Simple Notification Service (SNS) トピックの ARN を指定して通知を発行できます。SNSトピックは、OpsItem と同じ AWS リージョンに存在する必要があります。

(引用: 公式ドキュメント

今日は、その設定時に少しハマった部分も含めて書いていきたいと思います。

とその前に、OpsCenter に関するドキュメントとマネジメントコンソールが日本語対応したようです!

どの部分?

BasicSetupとしてマネジメントコンソールからCloudWatch Events ルールを自動作成した場合は、通知には何も入っていません。その辺りは、前回記事 をご参照ください。

今回は、作成されたOpsItemに手動で追加したいと思います。

やってみた

1. SNSトピックとサブスクリプション登録

Amazon SNS > トピック > トピックの作成

名前表示名 を入力

トピックの作成 を選択

サブスクリプションの作成 を選択

今回は、 Eメール を選択し入力 > サブスクリプションの作成 を選択

設定したメールに承認メールが届くので、承認します。

2. OpsCenterでの設定追加

EC2インスタンスが停止した場合のOpsItem を例に進めます。

AWS Systems Manager > OpsCenter > EC2 instance stopped > 概要 > OpsItem の詳細 > 編集 を選択

通知 に、先ほど作成したトピックを入力 > 保存 を選択

3. ステータスを変更してみる

EC2 インスタンスを停止して、OpsItem が作成されたら、OpsItem の ステータスの設定 から変更します。

未解決 >>> 進行中

(メールボックス更新)..あれ?
(1分後)...こない?
(3分後)....まだかな?
(5分後).....なんか設定おかしい?

3. SNS アクセスポリシーを変更

各設定を確認していきましたが設定箇所が多くないため、すぐに見つかりました。。
先ほど、SNS トピックを作成する際に デフォルト で作成していますが、そちらに問題がありました。

設定を展開すると以下のようになっています。(デフォルト)

今回、OpsCenter が Publisher となるため、そちらの設定が必要となります。
基本 での選択肢では最適な設定が出来なさそうなので 高度な を選択します。

Principal 部分に、SSMサービスを指定します。

    {
      "Sid": "__console_pub_0",
      "Effect": "Allow",
      "Principal": {
        "Service": "ssm.amazonaws.com"
      },
      "Action": "SNS:Publish",
      "Resource": "arn:aws:sns:ap-northeast-1:アカウントID:OpsCenter"
    }

参考ドキュメント

4. メール通知

SNS アクセスポリシーを保存したら、改めてOpsItemを変更します。
今後は、以下のようにメールが届きました!

SNS 通知そのままでは、ステータス変更やOpsItem 内容編集を行なった場合では同じメッセージのため視認性は低いため工夫が必要です。

{"opsItemId":"oi-9eaea114de26","notificationEventType":"UPDATE_OPSITEM"}

さいごに

結論としては、SNS アクセスポリシーの設定が問題でした。
とりあえず、デフォルトでやってしまっているのがいけませんね。。(反省...)

今回の例ではメール通知であっさりとした内容なのでちょっとわかりづらいですが、SNS サブスクリプションでは E-mail 以外にも選択することは可能ですので柔軟な通知も可能だと思います。
この記事がどなたかのお役にたてれば...