Amazon SES 전송 결과를 DynamoDB에 저장하는 Lambda 함수
Introduction
시스템에서 메일을 배달하는 경우 Bounce 또는 Complaint가 된 메일 주소에 대한 조치가 필요합니다.
Amazon SES의 경우 Sandbox에서 Production에서 사용할 때 어떤 프로세스를 구현하는지 신청해야 합니다.
AWS 공식에서는 다음과 같은 지식이 소개되어 있습니다.
How do I create an AWS Lambda function to store Amazon SNS notification contents for Amazon SES to an Amazon DynamoDB database?
개요로서는, 다음과 같은 처리가 됩니다.
1. 이메일 반송, 불만, 배달 등을 Amazon SNS에서 통지하도록 설정
2. SNS에서 알림을 받고 Lambda 실행
3. Lambda 처리로 DynamoDB에 저장
이번에는 위의 기사를 SAM으로 구현한 것을 소개합니다.
리포지토리
SAM에서 배포할 수 있는 항목을 위 리포지토리에 게시합니다.
런타임은 Python3.7
설정 방법
1. 알림에 사용할 SNS 만들기
$ aws sns create-topic --name ses-messages --region us-east-1
※ 이때 Amazon SES와 동일한 리전 내에서 SNS를 생성해야 합니다.
2. SES 설정에서 반송, 불만, 배달을 알리는 SNS 설정
bounces, complaints, deliveries에 대한 알림을 받기 위한 SNS로서,
1. 에서 만든 SNS를 설정합니다.
3. 전송 결과를 저장하는 DynamoDB 만들기
DynamoDB의 스키마를 정의한 json 파일을 두고 있습니다.
$ aws dynamodb create-table --cli-input-json file://dynamodb_table.json
※ 위에서 작성한 DynamoDB의 테이블은 간이적인 것입니다. GSI 설정, READ/WRITE Capacity 설정 등은 운용에 맞춰 필요합니다.
4. Lambda 함수 배포
환경 변수
S3_BUCKET
SAM 배포를위한 S3 버킷 TABLE_SES_NOTIFICATIONS
3.에서 만든 DynamoDB 테이블 이름 SNS_TOPIC_ARN
created sns topic2.에서 만든 SNS ARN
각 환경 변수를 설정하여 배포가 완료되었습니다.
$ S3_BUCKET=sam-app-artifacts \
TABLE_SES_NOTIFICATIONS=SESNotifications \
SNS_TOPIC_ARN=arn:aws:sns:us-east-1:xxx:ses-messages \
make deploy
메일 전송 결과
다음과 같이 전송할 때마다 DynamoDB에 저장됩니다.
그리고는 이 테이블을 사용해, DynamoDB Triggers나 다른 배치 처리를 써 각각의 처리를 실시합니다.
이제 Bounce, Complaint 등에 대처할 수 있습니다.
Lambda 함수로 처리
특히 손이 굳은 처리는 하지 않습니다.
자주 있는 SNS로부터의 통지 내용을 파스 해 보존하는 형태입니다.
Bounce, Complaint와 같은 각 시나리오에서 테스트를 원한다면 다음 주소를 사용할 수 있습니다.
이것을 사용하면 디버깅도 원활하게 할 수 있습니다.
htps : // / cs. 아 ws. 아마존. 이 m/그럼 _jp/세 s/아 st/로 HTML
Reference
이 문제에 관하여(Amazon SES 전송 결과를 DynamoDB에 저장하는 Lambda 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yyoshiki41/items/a0c1f393d2b8f4d96c51텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)