【前回】AmazonConnectによる自動電話通知(7.複数連絡先への電話通知〈概要〉)
【次回】AmazonConnectによる自動電話通知(7.複数連絡先への電話通知〈構築②〉)
【簡易版】AmazonConnectによる自動電話通知(まとめ)
監視サーバーで障害を検知した際に、自動で電話通知できるようにしていきます。ネットワークエンジニアも利用することの多い監視サーバー(Zabbix)で障害検知し、AWS上のAmazonConnectを利用し自動電話を発信します。
今回は下記の条件を満たせるようにAWSの各サービスを利用して自動電話通知の仕組みを導入します。
- 複数の通知先を登録した連絡先リストを持たせる。
- 連絡先リストに優先度(通知順)を設定する。
- 優先度が高い人に最初に電話する。
- 応答が無かった場合、次の優先度の人に順番に電話する。
- 連絡先リストの最後まで電話しても応答が無かった場合、最初に戻って継続する。
自動電話通知フロー
電話に応答した場合のフロー

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

- EC2上の監視サーバーで障害を検知し、S3へトリガーファイルを格納
- S3のイベント通知機能で、SQS_1にメッセージを送信
- SQS_1をトリガーとして、Lambda_1を起動
- Lambda_1がDynamoDB_1から連絡先を取得し、AmazonConnectを起動
- Lambda_1がAmazonConnectを起動すると同時に、SQS_2へメッセージを送信
- AmazonConnectがユーザーへ自動電話通知を実施
- ユーザが正常応答せず、AmazonConnectがLambda_2を起動
- Lambda_2が応答結果をDynamoDB_2に保存(応答NG ※実際にはステータスを変更しない)
- 60秒後にSQS_2をトリガーとしてLambda_3を起動
- Lambda_3がDynamoDB_2の応答結果を確認
- 正常応答していないため、再度AmazonConnectを起動(以降、5から繰り返し)
EC2上で監視サーバーを構築
EC2上でのZabbixの構築はこちらを参照してください。
S3のバケット作成
AWSマネジメントコンソール上で、「s3」を検索します。

「バケットの作成」をクリックします。

バケット名を入力し、それ以外はデフォルトのままで、「バケットを作成」をクリックします。

バケットが作成されたことを確認します。

S3エンドポイント作成
エンドポイントとは
EC2からS3へトリガーファイルをアップロードする際、デフォルトではインターネットを介した通信となります。S3エンドポイントを作成し、VPCのルートテーブルに追加することでAWS内部での通信が可能となり、セキュリティが向上します。
デフォルトの通信経路(EC2→S3)

エンドポイントを利用した通信経路(EC2→S3)

S3エンドポイントの作成
AWSマネジメントコンソール上で、「vpc」を検索します。

下記の通り選択・入力し、「エンドポイントの作成」をクリックします。
サービスカテゴリ:「AWSサービス」を選択
サービス名:s3で検索し、「com.amazonaws.ap-northeast-1.s3」を選択
VPC:EC2を設置しているVPCを選択
ルートテーブルの設定:チェック
ポリシー:「フルアクセス」を選択

S3のエンドポイントが作成され、ルートテーブルに紐づいていることを確認します。


EC2からS3バケットへのファイル格納確認
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 ~]$
S3側でファイルがアップロードされたことを確認します。

以上で、AmazonConnectによる自動電話通知(7.複数連絡先への電話通知〈構築①〉)の説明は完了です。
【前回】AmazonConnectによる自動電話通知(7.複数連絡先への電話通知〈概要〉)
【次回】AmazonConnectによる自動電話通知(7.複数連絡先への電話通知〈構築②〉)
【簡易版】AmazonConnectによる自動電話通知(まとめ)