[1] 배경
얼마 전, 신규 AWS Account를 런칭하였습니다. 안정적인 운영을 위해 aws eventlog 및 aws rds subscription 같은 중요한 Event Alert을 수신 받아야 하는데요.. AWS SNS를 구성하는 방법과 구독을 통해 원하는 수준의 알림 구성이 가능하도록 셋팅을 해보겠습니다. 주로 사용하는 Slack 과 Email 수신 방법에 관한 핸즈온 세션입니다.
[2] 작업 순서
1. AWS SNS 에서 주제(TOPIC)을 생성을 한다. 2. Email 구독 생성 > 구독 활성화 확인 3. SLACK 구독 생성 > 구독 활성화 확인 4. 정상 수신 확인 테스트 완료
[3] 작업 내용
3-1. SNS 주제 생성하기
: 먼저 원하는 (수신) 이벤트 정책을 설정한 SNS 주제가 활성화되면, Alert 을 받을 사용자의 Email 주소로 인증(Confirmation)을 받습니다. 인증이 완료되면 AWS에서 해당 구독을 통해 Alert를 발송할 수 있습니다.

- AWS Console > Service > SNS 검색 후 Simple Notification Service 선택합니다.

- 좌측 바 > 주제 생성 > 클릭

- 세부정보 > 표준
- 이름 > 자유롭게 Topic(주제) 명을 작성
- 표 이름 >사용자가 해당 주제를 식별하기 쉽게 작성

- 액세스 정책 > 고급(JSON 객체) > 클릭
- JSON 편집기가 생성됩니다. 아래와 같은 Template 형태로 작성
{
"Version": "2012-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Sid": "__default_statement_ID",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"SNS:GetTopicAttributes",
"SNS:SetTopicAttributes",
"SNS:AddPermission",
"SNS:RemovePermission",
"SNS:DeleteTopic",
"SNS:Subscribe",
"SNS:ListSubscriptionsByTopic",
"SNS:Publish",
"SNS:Receive"
],
"Resource": "arn:aws:sns:<RegionId>:<AwsAccountId-12digit>:<TopicName>",
"Condition": {
"StringEquals": {
"AWS:SourceOwner": "<AwsAccountId-12digit>"
}
}
},
{
"Sid": "__console_sub_0",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "sns:Publish",
"Resource": "arn:aws:sns:<RegionId>:<AwsAccountId-12digit>:<TopicName>"
}
]
}

- Tag Key 와 Value를 입력
- 주제 생성 > 클릭
3-2. 구독 생성하기 (Email)

- 일단 주제를 생성에 성공했다면 위와 같이 구독 생성 버튼을 클릭 해당 event 를 수신 받을 Email 을 생성합니다.
- 하단 > 주제 생성 > 클릭

- 주제 ARN 선택
- 프로토콜 > 이메일 선택
- 엔드포인트 > <수신 받고자 하는 이메일 주소 입력>
- 하단 > 구독 생성 > 클릭

- 일단 구독이 생성되면 입력한 이메일 주소의 유효성 검증 필요
- 이메일 수신 사서함에서 amazon으로 발송된 메일 본문에서 Confirmation 링크 클릭

- Confirmation 클릭 후 위와 같이 상태가 “확인됨” 으로 표시되면 성공
- <주제(Topic)>의 이벤트(Eventlog)를 이메일로 수신받습니다.
3-3. 구독 생성하기 (Slack)
[사전 준비물]
1. Console Browser에 Slack workspace 를 접속 로그인을 합니다. 2. 작업 중에 Chatbot을 등록할 Slack workspace를 선택하는 절차가 있습니다.

- AWS Service > AWS Chatbot > 클릭

- 채팅 클라이언트 구성 > 채팅 클라이언트 > Slack > 선택

- 클라이언트 구성 > 클릭
- 이후 Slack workspace로 권한 부여와 관련된 페이지로 리디렉션이 됨

- 우측 상단의 워크스페이스 > 수신 받고자 하는 워크 스페이스 선택

- 허용 > 클릭

- 새 채널 구성 > 클릭

- 구성 이름 > 작성
- Slack 채널 > 퍼블릭 (보유 중인 워크스페이스 및 채널은 Private 사용자만 초대하기 때문에 상관없음)
- 퍼블릭 채널 이름 > 사용자 지정 채널명 입력

- 채널 역할 > 템플릿을 사용하여 IAM 역할 생성
- 역할 이름 > 사용자 임의 생성
- 정책 템플릿 > 알림 권한, 읽기 전용 명령 권한 등등.. 지정 (lambda 호출은 제외하였음)

- 채널 가이드 레일 정책 > ReadOnlyAccess
- 알림 – 선택 사항에서 앞서 생성한 SNS 주제 > 선택
- 하단 구성 > 클릭

- 메시지 발송 연동이 되는 지 확인 필요
- 생성된 워크스페이스에서 구성 클릭 > 테스트 메시지 전송

- 성공적으로 발송됨을 확인

- 메시지가 정상적으로 수신되었으며, 다음 이벤트 로그는 해당 Workspace 에서 지정한 Slack Channel을 통해 수신될 예정
[4] 마지막으로
- 심심해서 작성해보았다.
- Notion에서 워드프레스로 넘어온지 2주차다.. 무슨 내용을 작성해야할지 고민중이다.
[…] [AWS SNS] AWS Event 알림 수신 구성(Slack, Email) – 지난 번 설정한 AWS SNS는 전체 리소스에 관한 Event Notification 을 수신할 수 있었으나, RDS의 리소스는 본 포스팅과 같이 추가 Event subscription을 설정해야하는 부분이 있다.– 아래 Source Settings에서는 위 링크에서 설명한 ARN 부분을 참고할 수 있다. […]