# AWS SNS 바운스 수정

**URL:** https://meta.discourse.org/t/fix-aws-sns-bounce/303015
**Category:** Marketplace
**Created:** [4월 9, 2024, 11:22오전 UTC](https://meta.discourse.org/t/fix-aws-sns-bounce/303015 "2024-04-09T11:22:37Z")
**Posts on this page:** 1
**Showing post:** 2

<div class="post-metadata">

### Author: ![Mr.X\_Mr.X](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mr.x_mr.x/32/126610_2.png) [@Mr.X\_Mr.X](https://meta.discourse.org/u/Mr.X_Mr.X)
#### Post date: [4월 9, 2024, 11:23오전 UTC](https://meta.discourse.org/t/fix-aws-sns-bounce/303015/2 "2024-04-09T11:23:23Z")

</div>

12단계에서 막혀 있습니다

> [@AWS SES로 발신, 반송 및 수신 이메일 설정하기](https://meta.discourse.org/t/configuring-aws-ses-for-outgoing-bounce-and-incoming-email/263604):
>
> AWS SES를 발신, 반송 및 수신 이메일에 사용하기 위해 제가 구성한 설정을 공유하고자 합니다. SES 서비스에는 확실히 미묘한 부분이 있으며, 정확히 어떻게 작동하는지 이해하는 데 상당한 시행착오가 필요했습니다. 이는 단계별로 따를 수 있는 가이드라기보다 뇌가 덤프(brain-dump)에 가깝습니다. 필요 없을 수도 있지만, 사용은 본인의 책임 하에 이루어져야 합니다. 그리고 타인이 작성한 코드를 구현할 때는 반드시 항상 내용을 읽고 이해해야 합니다. 배경: 저는 AWS에서 Discourse를 배포하고, 신뢰성과 중복성을 보장하기 위해 가능한 모든 AWS 서비스를 활용하고 있습니다. 개발자로서 저는 명령줄과 코드에 더 익숙하며, [IaC](https://en.wikipedia.org/wiki/Infrastructure_as_code) 자동화를 사용하길 원했습니다. 제 전체 환경은 [Terraform](https://www.terraform.io)으로 배포되고 있지만, 웹 콘솔을 통해 항목들을 가능한 한 정렬해 보았습니다. IAM 및 정책 문서는 이 글의 범위를 벗어납니다만, 필요한 부분이 있는 곳은 언급해 두었습니다. 단…

### 단계

1. 이메일 수신 지원 AWS 리전 중 하나에서 Simple Email Service(SES) 도메인 ID _ **your.domain** _를 생성합니다

- [Regions and Amazon SES - Amazon Simple Email Service](https://docs.aws.amazon.com/ses/latest/dg/regions.html#region-receive-email)

1. 도메인 ID를 인증합니다

- [Verified identities in Amazon SES - Amazon Simple Email Service](https://docs.aws.amazon.com/ses/latest/dg/verify-addresses-and-domains.html)
- [Verifying your domain for Amazon SES email receiving - Amazon Simple Email Service](https://docs.aws.amazon.com/ses/latest/dg/receiving-email-verification.html)

1. 피드백 알림을 위해 Simple Notification Service(SNS) 토픽 _ **feedback-sns-topic** _을 생성합니다
2. _ **your.domain** _ 도메인 ID를 구성합니다  
a. 이메일 피드백 전달을 활성화합니다  
b. SNS _ **feedback-sns-topic** _ 토픽을 사용하여 바운스 및 컴플레인(배달이 아님) 피드백 알림을 구성합니다
3. SNS _ **feedback-sns-topic** _ 토픽에 구독을 생성합니다  
a. 프로토콜은 HTTPS입니다(아직도 HTTP를 사용 중이신가요?)  
b. 엔드포인트를 _https:// **your.domain** /webhooks/aws_로 설정합니다 ([VERP 게시물](https://meta.discourse.org/t/configure-verp-to-handle-bouncing-e-mails/45343) 참조)  
c. 원시 메시지 전달(raw message delivery)을 활성화하도록 선택합니다
4. 수신 이메일을 위해 다른 SNS 토픽 _ **incoming-sns-topic** _을 생성합니다
5. 기존 활성 규칙 세트가 없다면 SES 이메일 수신 규칙 세트 _ **inbound-mail-set** _을 생성합니다. 기존 활성 규칙 세트가 있다면 활성 규칙 세트는 하나만 존재할 수 있으므로 해당 세트를 사용합니다
6. _ **inbound-mail-set** _ 수신 규칙 세트에 수신 규칙을 생성합니다  
a. 수신자 조건을 _ **your.domain** _으로 설정합니다  
b. _Base64_ 인코딩을 사용하여 SNS 토픽 _ **incoming-sns-topic** _에 게시하는 작업을 추가합니다
7. _system_ 사용자를 위한 API 키를 Discourse 인스턴스에서 생성하고, _email_ 리소스에 대해 _receive email_ 작업을 허용합니다
8. Secret Manager에서 다음 키와 각각의 값을 가진 시크릿 _ **email-handler-secret** _을 생성합니다:

- _api\_endpoint_ - _https:// **your.domain** /admin/email/handle\_mail_
- _api\_key_ - 9단계에서 생성한 값
- _api\_username_ - 9단계에서 다른 값을 사용하지 않았다면 _system_

1. _requests_ 및 _aws-lambda-powertools_ 라이브러리를 포함하는 _python3.10_ 런타임용 Lambda 레이어 _ **lambda-receiver-layer** _을 생성합니다
2. 수신 코드와 함께 _python3.10_ 런타임용 Lambda 함수 _ **email-receiver-lambda** _을 생성합니다:

---

_[View the full topic](https://meta.discourse.org/t/fix-aws-sns-bounce/303015)._
