7월 24, 2021

AWS SES - SNS 알림 연결

AWS SES - SNS 알림 연결

Ghost 메일 보내기 - AWS SES 설정
AWS Lightsail 에 고스트 블로그를 올렸습니다. 관리자 페이지에서 테마도 업로드하고, 글도 쓰고.. 이제 얼추 블로그 느낌이 납니다. 하지만 회원가입을 하고 싶어도 메일 전송이 안되서 회원 가입을 할 수 없는 상황입니다. 처음에는 고스트에서 안내하는대로 Mailgun 을 사용하려고 했습니다만 (추후 뉴스레터 발송도 고려하고 있습니다), 도메인으로 이메일 계정 하나 만드려고 했더니 월 35달러
지난 포스트 - AWS SES 설정

* 지난 포스트인 AWS SES 설정 글에 추가하여 AWS SNS 알림 글을 붙입니다.

지난 글에서 저는 AWS SES 에 계정을 생성하고, sandbox 에서 탈출했습니다. 하지만 sandbox 를 탈출했더라도 불량(?) 메일의 수가 5~10%를 넘어가면 AWS 에서는 메일 발송을 차단해버리는데요, 따라서 우리는 불량 메일을 체크할 필요가 있습니다.

저는 존재하지 않는 이메일 주소로 메일이 발송되어 반송된 반송 메일(bounces),

제대로 된 주소로 전송되었으나 스팸처리 또는 차단 당한 경우(complaints)

이 두 경우에 대해서 체크를 하고, 잘못된 메일로는 전송되지 않도록 할 생각입니다.

a

AWS SNS: Amazon Simple Notification Service

AWS SNS(Simple Notification Service)는 아마존에서 사용 중인 시스템에 대하여 알람을 설정하고 받을 수 있는 서비스입니다. 저는 반송메일(bounces)과 차단&스팸메일(complaints)에 대해서 알람을 설정하고 받아보겠습니다.

먼저 AWS SNS 화면으로 이동하세요. SNS가 처음이라면 아래와 같은 화면이 표시됩니다. 여기서 오른쪽에 있는 주제 생성 [다음단계] 버튼을 클릭하세요.

[그림1] AWS SNS 메인 화면

AWS SNS 에는 주제구독 개념이 있습니다. 특정 계정으로 알람에 대한 주제를 만들어 놓으면, 원하는 주제에 대하여 다른 계정들이 구독하여 해당 알람을 받아볼 수 있습니다.

주제(topic) 생성 화면이 나오면 표준 유형을 선택하고, 주제 이름을 붙여줍니다.

첫 화면 캡쳐를 못해서 아래 화면을 넣었습니다만, 저는 먼저 topic-blog-ses-bounces 라는 이름의 주제를 만들어 주었습니다. (아래는 두번째 주제 -  topic-blog-ses-complaints 생성시의 캡쳐 화면입니다.)

[그림2] topic(주제)를 생성합니다.

아래 옵션 항목은 다른 계정이 구독할 수 있게 할 것인지에 대한 설정이므로 패스하고 지나갑니다.

주제가 생성되면 그 아래에 구독 0 이라고 표시됩니다. 방금 생성한 주제에 대하여 구독 생성을 해줍니다.

[그림3] 구독 생성 버튼을 눌러주세요.
[그림4] 구독 생성 입력란

이메일로 알람을 받을 것이므로 프로토콜을 이메일로 선택합니다. 그리고 엔드포인트에 알람을 받을 이메일 주소를 입력합니다.

아래 파란 상자에 '구독을 생성한 후에는 확인해야 합니다.' 라고 안내가 나옵니다. 맞습니다. 확인하지 않으면 구독이 되지 않습니다. 응?

구독 생성 후 입력한 이메일로 가서 메일이 왔는지 확인하세요. 아마존에서 메일이 와있으면 confirm 링크를 클릭하여 내가 수신자가 맞다는 것을 확인해줍니다.

[그림5] 구독 이메일이 확인되었습니다.

저는 스팸 및 차단 메일(complaints)에 대해서도 알람을 받을 것이기 때문에 주제와 구독을 하나씩 더 생성했습니다.

[그림6] 저는 주제 2개, 구독 2개를 생성했습니다.

아참! SNS 사용 요금은 요청 100만 개당 월 0.5달러입니다. (하지만 가랑비에 옷 젖는 줄 모르는 법이니 조심하셔요. 아래 aws 로고가 씨익 웃고 있는 듯한 느낌이 드는 것은 단지 기분탓이겠죠?)

Amazon Simple Notification Service(SNS) 요금 | 메시징 서비스 | AWS
Amazon SNS 상세 요금. 사용한 만큼만 비용을 지불합니다. 최소 요금이 없습니다. AWS 월 사용량 계산기를 사용해 월별 청구액을 추산할 수 있습니다.
AES SNS 요금정책

주제와 구독을 만들었으니 서비스에 연결하러 SES 화면으로 이동합니다.

저는 사실 이 부분에서 알림을 Domains 에 연결해야 하는 것인지, Email Addresses 에 연결해야 하는 것인지 헤깔렸는데요, 아래 문구를 보고 Domains 에 연결하였습니다. 제 도메인 계정에서 보내는 메일에 대해서 반송, 차단 체크를 할 것이라 Domains 를 선택했는데 확신이 있는 것은 아니라서 좀 살펴봐야 할 것 같습니다.

2. In the navigation pane, under Identity Management, choose Email Addresses if you want to configure bounce and complaint notifications for an email address, or choose Domains if you want to configure bounce and complaint notifications for a domain. (출처: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity-using-notifications-email.html)

SES 화면 왼쪽 메뉴에서 Domains 선택 > Notifications 탭의 [Edit Configuration] 버튼을 클릭합니다.

[그림7] AWS SES > Domains 화면

팝업이 뜨면 SNS Topic Configuration 항목에서, 위에서 생성한 SNS 주제를 선택하여 연결해주세요.

[그림8] SNS 주제(topic) 연결

[Save Config] 버튼을 눌러 저장하시면 Notification 이 연결되었다는 메일이 옵니다. SES - SNS 연결이 완료되었습니다.


저는 오늘 어머니께서 보내주신 갈비탕과 쇠고기를 택배로 받았습니다. 더운 날씨에 딸내미 밥해먹기 힘들까봐 보내주셨다네요. 바쁘다는 핑계로 연락도 잘 안하는 못난 딸내미 걱정을 왜 하시는지.. 감사함과 죄송한 마음에 울컥, 눈물이 났습니다.

마음이 어지러운 금요일 밤입니다. 제 포스트를 봐주시는 분들 모두, 한 주 마무리 잘 하시고 편안한 주말 보내셔요.


Featured Photo by Brett Jordan on Unsplash