AmazonConnectによる自動電話通知(7.複数連絡先への電話通知〈構築②〉)

AmazonConnectによる自動電話通知(7.複数連絡先への電話通知〈構築②〉)

【前回】AmazonConnectによる自動電話通知(7.複数連絡先への電話通知〈構築①〉)
【次回】AmazonConnectによる自動電話通知(7.複数連絡先への電話通知〈構築③〉)
【簡易版】AmazonConnectによる自動電話通知(まとめ)

監視サーバーで障害を検知した際に、自動で電話通知できるようにしていきます。ネットワークエンジニアも利用することの多い監視サーバー(Zabbix)で障害検知し、AWS上のAmazonConnectを利用し自動電話を発信します。

今回は下記の条件を満たせるようにAWSの各サービスを利用して自動電話通知の仕組みを導入します。

前提条件
  • 複数の通知先を登録した連絡先リストを持たせる。
  • 連絡先リストに優先度(通知順)を設定する。
  • 優先度が高い人に最初に電話する。
  • 応答が無かった場合、次の優先度の人に順番に電話する。
  • 連絡先リストの最後まで電話しても応答が無かった場合、最初に戻って継続する。
目次

自動電話通知フロー

電話に応答した場合のフロー

電話に応答した場合のフロー
  1. EC2上の監視サーバーで障害を検知し、S3へトリガーファイルを格納
  2. S3のイベント通知機能で、SQS_1にメッセージを送信
  3. SQS_1をトリガーとして、Lambda_1を起動
  4. Lambda_1がDynamoDB_1から連絡先を取得し、AmazonConnectを起動
  5. Lambda_1がAmazonConnectを起動すると同時に、SQS_2へメッセージを送信
  6. AmazonConnectがユーザーへ自動電話通知を実施
  7. ユーザが正常応答し、AmazonConnectがLambda_2を起動
  8. Lambda_2が応答結果をDynamoDB_2に保存(応答OK)
  9. 60秒後にSQS_2をトリガーとしてLambda_3を起動
  10. Lambda_3がDynamoDB_2の応答結果を確認(正常応答しているため、何もせずに処理完了)

電話に応答しなかった場合のフロー

電話に応答しなかった場合のフロー
  1. EC2上の監視サーバーで障害を検知し、S3へトリガーファイルを格納
  2. S3のイベント通知機能で、SQS_1にメッセージを送信
  3. SQS_1をトリガーとして、Lambda_1を起動
  4. Lambda_1がDynamoDB_1から連絡先を取得し、AmazonConnectを起動
  5. Lambda_1がAmazonConnectを起動すると同時に、SQS_2へメッセージを送信
  6. AmazonConnectがユーザーへ自動電話通知を実施
  7. ユーザが正常応答せず、AmazonConnectがLambda_2を起動
  8. Lambda_2が応答結果をDynamoDB_2に保存(応答NG ※実際にはステータスを変更しない)
  9. 60秒後にSQS_2をトリガーとしてLambda_3を起動
  10. Lambda_3がDynamoDB_2の応答結果を確認
  11. 正常応答していないため、再度AmazonConnectを起動(以降、5から繰り返し)

SQS_1を作成(S3からイベント通知を受け取るキュー)

AWSマネジメントコンソール上で、「sqs」を検索します。

SQSを検索

「キューを作成」をクリックします。

キューの作成開始

下記の通り選択・入力します。

タイプ:「標準」を選択
名前:任意の名前を入力 ※ここでは、”amazonconnect-queue-trriger”としています。
設定:デフォルト
アクセスポリシー:「アドバンスト」を選択し、以下を記載します。

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__owner_statement",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "SQS:*",
      "Resource": "arn:aws:sqs:ap-northeast-1:XXXXXXXXXXXXX:amazonconnect-queue-trriger",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:*:*:amazonconnect-alert-notification-bucket"
        }
      }
    }
  ]
}

以下の部分は、前回作成したS3バケット名を指定します。
“aws:SourceArn”: “arn:aws:s3:::amazonconnect-alert-notification-bucket”

「キューを作成」をクリックします。

SQSの作成

S3のイベント通知設定

作成したS3バケットのプロパティを選択します。

S3のプロパティタブを選択

「イベント通知を作成」をクリックします。

イベント通知の作成開始

下記の通り選択・入力し、「変更の保存」をクリックします。

イベント名:任意の名前を入力 ※ここでは、”amazonconnect-launch”としています。
イベントタイプ:「すべてのオブジェクト作成イベント」にチェック
送信先:「SQSキュー」を選択
SQSキューを特定:「SQSキューから選択する」を選択
SQSキュー:作成したSQS_1を選択

イベント通知の作成

イベント通知が追加されたことを確認します。

イベント通知の確認

イベント通知設定時のエラー

下記のエラーが表示される場合は、SQSのアクセスポリシーを確認してください。

不明なエラー
予期しないエラーが発生しました。
Unable to validate the following destination configurations

イベント追加時のエラー

S3からSQS_1へのイベント通知確認

SQSの「メッセージを送受信」をクリックします。

SQSのメッセージ送受信画面へ移動

この画面上でSQS上のメッセージを確認できます。

メッセージ確認画面

EC2から下記のコマンドを実施し、S3へファイルをアップロードします。※作成したS3バケット名を指定してください。

touch /tmp/test.txt
aws s3 cp /tmp/test.txt s3://amazonconnect-alert-notification-bucket
[ec2-user@ip-10-0-0-100 ~]$ touch /tmp/test.txt
[ec2-user@ip-10-0-0-100 ~]$ 
[ec2-user@ip-10-0-0-100 ~]$ aws s3 cp /tmp/test.txt s3://amazonconnect-alert-notification-bucket
upload: ../../tmp/test.txt to s3://amazonconnect-alert-notification-bucket/test.txt
[ec2-user@ip-10-0-0-100 ~]$ 

「メッセージをポーリング」をクリックすると、メッセージを受信していることがわかります。

メッセージ受信確認

メッセージIDをクリックすると、下記の通りS3バケットよりメッセージが送られていることがわかります。

S3からのメッセージ確認

以上で、AmazonConnectによる自動電話通知(7.複数連絡先への電話通知〈構築②〉)の説明は完了です。

【前回】AmazonConnectによる自動電話通知(7.複数連絡先への電話通知〈構築①〉)
【次回】AmazonConnectによる自動電話通知(7.複数連絡先への電話通知〈構築③〉)
【簡易版】AmazonConnectによる自動電話通知(まとめ)

  • URLをコピーしました!
  • URLをコピーしました!
目次