EventsBridge ルールのデフォルトの Amazon SNS メールの件名「AWS 通知メッセージ」を変更するにはどうすればよいですか?

最終更新日: 2021 年 12 月 14 日

複数のイベントソースを持つ Amazon EventsBridge ルールから E メール通知を受信するように、Amazon Simple Notification Service (Amazon SNS) を設定しました。通知をトリガーするイベントに基づいて、デフォルトの SNS メールの件名である「AWS 通知メッセージ」とメール本文をカスタマイズするにはどうすればよいですか?

簡単な説明

現時点では、Amazon SNS コンソールを使用して、特定の EventBridge ルールに基づいて Amazon SNS メールのメッセージをカスタマイズする方法はありません。

EventBridge ルールのターゲットとして、Amazon SNS トピックの代わりに Lambda 関数を使用します。次に、EventBridge ルールによってトリガーされたときに Amazon SNS トピックにカスタムメッセージを発行するように Lambda 関数を設定します。

ロジックの仕組みは次のとおりです。

  1. EventBridge ルールがトリガーされます。
  2. Lambda 関数は、EventBridge ルールのペイロードを使用して呼び出します。
  3. この関数は、Amazon SNS publish API を呼び出します。
  4. Amazon SNS は、カスタムの件名またはメッセージを含む E メール通知を配信します。

解決方法

注: AWS Command Line Interface (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

EventBridge ルールのターゲットとして設定された AWS Lambda 関数を作成する

詳細については、「チュートリアル: EventBridge を使用して AWS Lambda 関数をスケジュールする」を参照してください。

重要: Lambda 関数の実行ロールに Amazon SNS トピックへの公開権限があることを確認してください。例えば、関数の実行ロールに AWS マネージドポリシーAWSLambdaBasicExecutionRole がある場合は、実行ロールに AmazonSNSFullAccess ポリシーをアタッチする必要があります。

Lambda 関数が EventBridge ルールのターゲットとして設定されると、次のリソースベースのポリシーが自動的に関数に追加されます。

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "AWSEvents_CWRule_CustomEmailSubject_Id196649187337",
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "Lambda-function-ARN",
      "Condition": {
        "ArnLike": {
          "AWS:SourceArn": "Eventbridge-rule-ARN"
        }
      }
    }
  ]
}

Amazon SNS トピックにカスタムの E メールの件名またはメッセージを発行するように Lambda 関数を設定します

詳細については、「公開 (API リファレンス)」を参照してください。

重要: 次のコードスニペットは参考用です。テストする前に、本番稼働環境でコードスニペットを使用しないでください。

Python publish API コールの例

import boto3
import json
sns_arn = "SNS_TOPC_ARN"

def lambda_handler(event, context):
    client = boto3.client("sns")
    resp = client.publish(TargetArn=sns_arn, Message=json.dumps(event), Subject="CUSTOM_SUBJECT")

JavaScript/Node.js publish API コールの例

const AWS = require('aws-sdk');

exports.handler = (event, context, callback) => {
    let sns = new AWS.SNS();
    sns.publish({
    TopicArn: 'SNS_TOPIC_ARN',
    Message: JSON.stringify(event), 
    Subject: 'CUSTOM_SUBJECT'
    }, function(error, data){
       if(error) console.log(error, error.stack);
       callback(error, data);
     });
};

重要: SNS_TOPIC_ARNCUSTOM_SUBJECT の値は、独自の情報に置き換えてください。

このようにして、Lambda 関数を使用して EventBridge ルールの E メールの件名またはメッセージをカスタマイズして Amazon SNS トピックに転送できます。


この記事は役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?