【AWS】EventBridgeとSNSの連携で、送信されるメール本文をカスタマイズする方法

# 1.はじめに
どうも、ARIの名古屋支社に勤務している愛知県民こと、
新藏（にいくら）と申します♪
(/・ω・)/

以前、AmazonConnectでNGワードが検知された際にアラートメールを送信する方法
について記事にしました。

https://qiita.com/Aichi_Lover/items/b819846033b7b02956ba

デフォルトだと以下の様なメールが届き、内容が少々分かりにくいです。

|![400_メールが届く.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/bb083a9c-ce95-0580-4a27-8bdd2b7610be.png)|
|:--|

AmazonConnect　→　EventBridge　→　SNS
という順番で連携していましたが、SNS送信用のLambdaを作成し

AmazonConnect　→　EventBridge　→　Lambda　→　SNS
という順番で連携させることでメールの本文をカスタマイズできました。

そこで今回は**EventBridgeとSNSを連携する際にメール本文をカスタマイズする方法**
について記事にしたいと思います！

AWS、AmazonConnectについて勉強中の方の参考になれば幸いです。
(*^^)v

ちなみに、12月は**ARIのアドベントカレンダ**もやっていますので、
もしよろしければ、こちらも応援お願いします♪

https://qiita.com/advent-calendar/2022/ari-group

https://qiita.com/advent-calendar/2022/aichi_lover_yomoyama

# 2.前提条件
まず初めに、前提条件を記載します。

* EventBridgeとSNSを連携し、EventBridgeをトリガーとしてメールが送信される設定が完了していること

# 3.Lambda関数の作成
まずは、SNS送信用のLambdaを作成します。

3.1.事前準備として、SNSのトピックのARN、AmazonConnectのインスタンス名をメモ帳などに貼り付けます。

3.2.以下の内容で、Pythonで書かれたLambda関数を作成します。

subjectに送信したいメールの件名、messageに送信したいメールの本文を入力します。
今回は**メール本文にAmazonConnectの録音を聞く画面へのリンクが表示される**ようにしています。

:::note warn
例として、AmazonConnectとEventBridgeが連携された場合の内容が記載されていますが、
本質的な内容を考えると、AmazonConnectを使うことは必須ではないため、メールの内容等はアレンジが可能です。
:::

```lambda.py
import json
import boto3
import logging
import os

#ロガーの生成
logger = logging.getLogger('log')
#出力レベルの設定
logger.setLevel(os.environ['LOGGINGLEVEL'])

def lambda_handler(event, context):
  try:
    logger.info("メールを送信します")
    
    sns = boto3.client("sns")
    topicArn = "★SNSトピックのARN★"
    contactId = event["detail"]["contactArn"][-36:]
    subject = "アラートメール_コンプライアンス違反の通話_"+contactId
    message = "コンプライアンス違反の通話が検知されました。\n以下のURLから確認してください。\n\nhttps://★AmazonConnectのインスタンス名★.my.connect.aws/contact-trace-records/details/"+contactId+"?tz=Asia/Tokyo"
    
    result = sns.publish(
      TopicArn = topicArn,
      Subject = subject,
      Message = message
    )
    
    logger.info("メールを送信しました")
    return {
        "Result":"OK"
    }
  
  except Exception as e:
    logger.info("エラー：%s",e)
```

:::note info
messageは「\n」で改行ができます。
:::

また、```ContactID=event["detail"]["contactArn"][-36:]```の部分は以下のURLを参考に、
イベントからContactIDを抜き出しています。

https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/contact-lens-rules-eventbridge-event.html

# 4.EventBridgeの設定

Lambda関数を作成したので、EventBridgeの設定を変更します。

4.1.EventBridgeの管理画面にて、「ルール」を選択し、設定変更するルール名を選択します。

|![010_ルールを選択し、ルール名を選択する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/50c5f095-bd82-4592-9857-8bb19be9d3cf.png)|
|:--|

4.2.「編集」を選択します。

|![020_編集を選択する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/32049ca8-5e90-d682-d53b-f7ee1e6fc03f.png)|
|:--|

4.3.「次へ」を選択します。

|![030_次へを選択する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/add0db7e-eddf-fdc1-faa8-a9eab5fce6ee.png)|
|:--|

4.4.「次へ」を選択します。

|![040_次へを選択する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/c9ed0149-9152-270c-e511-8cb83d965c34.png)|
|:--|

4.5.ターゲットの選択にて、3章で作成したLambda関数を選択し、「次へ」を選択します。

|![050_ターゲットを編集する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/a98cc10c-8579-b31e-87d9-4d2b48e8f998.png)|
|:--|

4.6.「次へ」を選択します。

|![060_次へを選択する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/8987cc36-425c-75a3-4afa-d90549b02e6f.png)|
|:--|

4.7.以上で設定は完了です。

# 5.動作確認

以下が実際に送信されたメールとなります。

|![100_送信されるメール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/1107ae30-d231-bf5f-7826-fbe07a1a8cdf.png)|
|:--|

**件名、本文が分かりやすくなり、1クリックでAmazonConnectの録音を聞く画面にアクセスできます。**

|![110_録音を確認できる画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/31b38a84-137e-56ac-ab4e-227d8586aa07.png)|
|:--|

# 6.おわりに
ここまで読んで下さり、ありがとうございます！！！
(^^)

以前の内容ではメールの内容が少々分かりにくかったですが、
今回の様にLambda関数をはさむことで、何が原因でメールが送信されたのか等が分かりやすくなりました！

次回も何かしら記事を書いていきたいと思います♪
(:3_ヽ)_