濱田孝治(180)145145件のシェア(ちょっぴり話題の記事)「システム障害アラート、やっぱり電話で発信したいよね...」システム運用の要である障害アラート。異常発生に即対応するためのアラート運用は重要です。アラートの通知先としては代表的なものにメールがありますし、最近ではSlackなどのチャットツールを併用している現場も多いと思います。昔から一番緊急度が高いアラートとして利用されているのは、「電話」じゃないでしょうか。聞きたくないんだけれど聞かないといけないアレです。Connectの出番ですよ。実際やってみましたが、月4USD程度のランニングコストと1時間程度の手間で、手軽にSNS経由で電話発信する仕組みを作ることができました。Connectの使い方の一つの用途として、一度目を通してもらえればと思います。Connect経由で電話発番するという内容です。Pollyに対応している任意の言語での自動読み上げが可能です。恐ろしく簡単にできるので、まずはやってみましょう。Connectのコンタクトセンターを構築する必要があります。ここは、下記ブログを参照ください。手順は思った以上に、非常にシンプル。電話番号→問い合わせフローの割り当てを実施して、電話かけた時にプロンプトが再生されるところまで、構築してください。Lambdaのメッセージを受ける問い合わせフローの作成Lambdaから指定されたメッセージを発話するための問い合わせフローを作成します。上で作成した問い合わせフローを以下に変更します。設定内容としては非常にシンプル。真ん中のプロンプトの再生を、以下のように設定します。テキスト読み上げ機能を「動的に入力する」と指定し、タイプに「ユーザー定義」、属性にmessageを指定します。このmessageは、後でLambdaから任意のメッセージを渡すときの属性名となります。Connectの問い合わせフローを起動するためのLambdaを作成します。超シンプルなPythonのLambda関数がこちら。'とっても大変なことが起こりました。)メインは、start_outbound_voice_contact関数の呼び出しです。公式ドキュメントはこちら。documentation以下にパラメータを解説していきます。Connectの画面で問い合わせフローを開いたときのURLに記載されているARNから抜き出します。具体的には以下の通り。arn:aws:connect:{AWS::Region}:{AWS::AccountId}:instance/{インスタンスID}/contact-flow/{コンタクトフローID}あとは、Lambdaが実行されるIAMロールに、AmazonConnectFullAccessのポリシーを追加します。Connectのインスタンスは同一リージョンに存在する必要があるので、注意してください。Connectインスタンスにつなげることができました。region_name='ap-southeast-2')Fujiwara_y(@ekodasolo)さん。情報提供ありがとうございます!SNSトピックの作成とサブスクリプション構築Lambdaの動作テストが完了したら、SNSトピックの作成とサブスクリプションへのLambdaの登録を行います。言っても、実施内容は簡単。SNSメニューよりトピックの作成を行い、そのあと作成されたトピックにサブスクリプション登録で、上で作成したLamddaを紐付けるだけです。こんな感じで登録できればOk。SNSの画面から「メッセージの発行」を実施してみて、先程の電話発信ができればOKです。ここまでで、基本的な構成の構築は完了です。今回の構成、Lambdaさえあれば電話番号発信はできるんですが、SNSをLambdaの前に構築しておくことは、AWSの様々なイベントソースへの対応が容易という利点があります。Functionsなど、他のマネージドサービスとの連携で、SNSが使われていることは非常に多いです。こんな感じでSNSには、大抵のものがくっつきます(雑)。SNSを構築する利点2「複数サブスクリプションの登録」SNSを構築しておく利点の2つ目ですが、複数サブスクリプションを登録できる使い勝手の良さが挙げられます。最初の構成図では、SNSの後ろにLambdaだけぶら下げてそこからConnectへの発信のみしていましたが、音声で受信できる情報は限られます。その他必要なイベントのテキスト情報などは、メールやSlackにも合わせて流しておくようにしましょう。以下のイメージです(Slackの前にもLambdaを入れるのが普通ですが、ここでは省略してます)。これにより、以下のシステム障害運用が可能です。AlarmからSNSを発砲SNSからLambda経由でシステム担当者に電話発信。SNSへのサブスクリプション登録はいつでも自由に可能かつ運用も手軽なので、システム障害系のアラームと電話発信用のLambdaの前には、是非SNSを挟んでおくことをおすすめします。実際にこの仕組を運用するにあたり必要な料金を試算します。0.48USD今回の利用用途では、受信は使わないので、直通ダイヤルを使う想定で、月3USD。USDシステムアラートではそもそも通話時間自体はほぼないので、長くて10分で見積もったとして、1USD。Connectは月当たり約4USDで利用が可能です。