EventsBridge 규칙에 대한 기본 Amazon SNS 이메일 제목 줄 ‘AWS 알림 메시지’를 변경하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 12월 14일

여러 이벤트 소스가 있는 Amazon EventsBridge 규칙에서 이메일 알림을 수신하도록 Amazon Simple Notification Service(Amazon SNS)를 구성했습니다. 알림을 트리거하는 이벤트를 기반으로 기본 SNS 이메일 제목 줄 ‘AWS 알림 메시지’ 및 이메일 본문을 사용자 지정하려면 어떻게 해야 합니까?

간략한 설명

현재 Amazon SNS 콘솔을 사용하여 특정 EventBridge 규칙에 따라 Amazon SNS 이메일의 메시지를 사용자 지정할 수 있는 방법은 없습니다.

Amazon SNS 주제 대신 Lambda 함수를 EventBridge 규칙의 대상으로 사용합니다. 그런 다음 EventBridge 규칙으로 트리거할 때 Amazon SNS 주제에 사용자 지정 메시지를 게시하도록 Lambda 함수를 구성합니다.

로직의 작동 방식은 다음과 같습니다.

  1. EventBridge 규칙이 트리거됩니다.
  2. Lambda 함수는 EventBridge 규칙의 페이로드를 사용하여 호출합니다.
  3. 함수는 Amazon SNS 게시 API를 호출합니다.
  4. Amazon SNS는 사용자 지정 제목 또는 메시지가 포함된 이메일 알림을 전송합니다.

해결 방법

참고: AWS CLI(AWS Command Line Interface) 명령을 실행할 때 오류가 발생할 경우 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 주제에 사용자 지정 이메일 제목 또는 사용자 지정 메시지를 게시하도록 Lambda 함수 구성

자세한 내용은 게시(API 참조)를 참조하세요.

중요: 다음 코드 조각은 참조용입니다. 테스트 전에 프로덕션 환경에서 코드 조각을 사용해서는 안 됩니다.

예시 Python 게시 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 게시 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 규칙의 이메일 제목이나 메시지를 사용자 지정하고 Amazon SNS 주제에 전달할 수 있습니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?