Amazon EventBridge 알림의 표준 Amazon Simple Notification Service(SNS) 이메일 제목 줄인 “AWS 알림 메시지”를 수정하고 싶습니다.
간략한 설명
Amazon SNS는 AWS 서비스를 이벤트 소스로 사용하여 만든 EventBridge 규칙으로부터 알림을 수신하여 이메일로 전송합니다. 단, 제목 줄 ‘AWS 알림 메시지’와 이메일 본문은 고정되어 있습니다. AWS 서비스가 이메일 구독이 있는 Amazon SNS 토픽을 트리거하는 경우, 이를 직접 변경할 수 없습니다.
워크플로우
- 이벤트는 EventBridge 규칙을 트리거합니다.
- EventBridge 규칙의 페이로드는 Lambda 함수를 호출합니다.
- Lambda 함수는 Amazon SNS Publish API를 호출합니다.
- Amazon SNS는 사용자 지정 제목 및 본문이 포함된 메시지 또는 이메일 알림을 전송합니다.
해결 방법
아키텍처에 AWS Lambda를 포함하여 필요에 따라 기본 이메일 제목 줄과 메시지 본문을 사용자 지정합니다. Amazon SNS 토픽 대신 AWS Lambda를 EventBridge 규칙의 대상으로 사용할 수 있습니다. 그런 다음, Lambda 함수를 사용하여 사용자 지정 이메일 제목과 본문이 포함된 메시지를 구독자와 함께 Amazon SNS 토픽에 게시합니다.
알림을 사용자 지정하려면, 다음 단계를 따르세요.
SNS 토픽 생성 및 이메일 구독
- SNS 토픽 생성
- 이메일 구독을 생성하세요.
Lambda 함수 생성
-
Lambda 콘솔에서 함수 페이지를 엽니다.
-
함수 생성을 선택합니다.
-
처음부터 작성자를 선택합니다.
-
함수 이름을 제공한 다음, 런타임을 Python 3.10으로 선택합니다.
-
실행 역할을 생성합니다. 이 역할에는 지정된 SNS 토픽을 게시하는 데 필요한 권한이 있어야 합니다. 여기에서 Lambda 함수는 Lambda의 AWS 관리형 정책을 사용하여 생성되었습니다.
-
AWSLambdaBasicExecutionRole 및 AmazonSNSFullAccess 정책을 함수의 실행 역할에 연결합니다. Lambda에 대한 실행 정책을 연결하려면, Lambda 실행 역할을 참조하세요.
-
함수 생성을 선택합니다. 함수 코드 편집기에 다음 코드를 붙여 넣습니다.
**중요:**이 코드 스니펫은 참조용입니다. 테스트 전에 프로덕션 환경에서 예제 코드 스니펫을 사용하지 마세요.
예시: Python 샘플 코드
import boto3
import json
sns_arn = "sns_topic_arn"
def lambda_handler(event, context):
client = boto3.client("sns")
resp = client.publish(TargetArn=sns_arn, Message=json.dumps(event), Subject="This is the customized subject line")
참고:****sns_topic_arn을 SNS 토픽 및 이메일 알림 생성의 주제 ARN으로 대체하세요. **“이것은 사용자 지정된 제목 줄입니다”**를 따옴표 안의 제목 줄로 바꾸세요.
-
배포를 선택합니다.
EventBridge 규칙 생성
Amazon EventBridge 콘솔을 사용하여 EventBridge 규칙을 생성합니다.
참고:
- AWS 설명서의 11단계, 대상 선택에서는 Lambda 함수 생성에서 생성한 Lambda 함수를 선택합니다.
- Lambda 함수에 대해 원하는 페이로드 메시지를 제공하세요.
EventBridge 규칙이 호출되면, Lambda 함수는 Amazon SNS에 Publish API 호출을 수행합니다. 메시지를 전달하는 데 사용하는 제목을 변경하면서 이벤트 규칙의 메시지를 전달합니다. 그러면 구독자는 사서함에 사용자 지정된 제목이 포함된 이메일을 받게 됩니다.
관련 정보
Amazon SNS 토픽에서 이메일 알림을 받을 수 없는 이유는 무엇인가요?
AWS로부터 Amazon SNS 구독이 수동으로 비활성화되었다는 이메일을 받은 이유는 무엇인가요?
메일 목록 수신자가 내 Amazon SNS 토픽 이메일에서 목록에 있는 모든 사람의 구독을 취소하지 않도록 하려면 어떻게 해야 하나요?
CloudWatch 경보 트리거에 대한 SNS 알림을 받지 못한 이유는 무엇인가요?
Lambda와 Amazon SES를 사용하여 이메일을 보내려면 어떻게 해야 하나요?