내용으로 건너뛰기

Amazon SNS에서 이메일 구독이 반복적으로 취소(Unsubscribe)되는 문제를 해결하는 방법은 무엇인가요?

4분 분량
콘텐츠 수준: 기초
0

Amazon SNS 토픽에 이메일 구독을 생성했으나, 구독이 반복적으로 취소(Unsubscribed)되는 현상을 해결하고 싶습니다.

Short Description

Amazon SNS에서 이메일 구독이 의도치 않게 취소되는 현상은 주로 다음과 같은 원인으로 발생합니다:

  1. 이메일 보안 솔루션(스팸 필터, 링크 스캐너 등)이 SNS 알림 이메일 내의 "Unsubscribe" 링크를 자동으로 클릭하여 구독이 취소되는 경우
  2. 이메일 수신자가 실수로 Unsubscribe 링크를 클릭한 경우 특히 기업 환경에서는 이메일 보안 솔루션이 수신 이메일의 모든 링크를 사전 검사(pre-fetch/pre-click)하는 경우가 많으며, 이 과정에서 Unsubscribe 링크가 자동으로 호출되어 구독이 취소됩니다. 이 문제를 해결하기 위해 Amazon SNS 콘솔에서 인증 기반 구독 취소(Authenticated Unsubscribe) 모드로 구독을 생성할 수 있습니다. 이 모드를 사용하면 구독 취소 시 AWS 자격 증명을 통한 인증이 필요하므로, 이메일 내 링크 클릭만으로는 구독이 취소되지 않습니다.

중요: 기존 구독을 인증이 필요한 구독으로 변경하려면, 기존 구독을 먼저 삭제(구독 취소)한 후 아래 절차에 따라 새 구독을 생성해야 합니다.

Resolution

사전 조건

  • Amazon SNS 토픽이 이미 생성되어 있어야 합니다.
  • SNS 토픽에 대한 sns:Subscribe 권한이 있는 IAM 사용자 또는 역할이 필요합니다.
  • 구독할 이메일 주소에 접근할 수 있어야 합니다 (구독 확인 이메일 수신 필요).
  • 새 구독을 확인하고 설정을 완료하려면 구독 확인 이메일 메시지에 대한 액세스 권한이 있어야 합니다. 참고: 토픽에 대한 메일링 리스트를 구독하는 경우, 먼저 메일링 리스트에 이메일 주소를 추가하여 구독 확인 이메일을 수신할 수 있도록 하십시오.

1단계: 기존 구독 삭제

기존에 인증 없이 생성된 구독이 있다면 먼저 삭제합니다. 구독이 아직 활성(Confirmed) 상태인 경우:

  1. Amazon SNS 콘솔에 로그인합니다.
  2. 왼쪽 탐색 창에서 "구독(Subscriptions)"을 선택합니다.
  3. 삭제할 구독을 선택하고 "삭제(Delete)"를 선택합니다. 구독이 이미 취소(Unsubscribed)된 경우: 구독이 이미 취소된 상태라면, 해당 구독은 콘솔에서 바로 삭제할 수 없을 수 있습니다. 이 경우 다음 두 가지 방법 중 하나를 사용합니다:
  • 방법 A: 구독 취소 시 수신된 Unsubscribe 확인 이메일에 포함된 "click here to resubscribe" 링크를 클릭하여 재구독을 생성한 뒤, SNS 콘솔에서 해당 구독을 삭제합니다.
  • 방법 B: 약 48시간을 대기하면 취소된 구독이 SNS에서 자동으로 삭제됩니다. 삭제가 완료된 후 2단계부터 진행합니다.

2단계: 새 이메일 구독 생성

  1. Amazon SNS 콘솔의 왼쪽 탐색 창에서 "구독(Subscriptions)"을 선택합니다.
  2. "구독 생성(Create subscription)"을 선택합니다.
  3. 다음과 같이 설정합니다:
    • 토픽 ARN: 구독할 SNS 토픽의 ARN을 선택합니다.
    • 프로토콜: 이메일(Email)을 선택합니다.
    • 엔드포인트: 구독할 이메일 주소를 입력합니다.
  4. "구독 생성(Create subscription)"을 선택합니다. Create subscription

3단계: 구독 확인 이메일에서 URL 복사

  1. 이메일에서 AWS 알림의 구독 확인 메시지를 찾습니다. 발신자는 보통 no-reply@sns.amazonaws.com입니다.

중요: 구독 확인 이메일에 있는 "Confirm subscription" 링크를 직접 클릭하지 마십시오. 링크를 직접 클릭하면 인증 없이 구독이 확인되어, 이후 이메일 내 Unsubscribe 링크로도 구독 취소가 가능해집니다.

  1. 구독 확인 링크를 마우스 오른쪽 버튼으로 클릭하고 링크 주소 복사를 선택합니다.

주의: 링크를 클릭하여 브라우저에서 접속하면 안 됩니다. 링크에 직접 접속하면 인증 없이 구독이 확인되어 AuthenticateOnUnsubscribefalse로 설정됩니다. 반드시 "링크 주소 복사"로 URL만 복사하세요.(마우스 우 클릭 - 링크 복사) Link Copy

4단계: SNS 콘솔에서 구독 확인 (인증 모드)

  1. Amazon SNS 콘솔의 왼쪽 탐색 창에서 "구독(Subscriptions)"을 선택합니다.
  2. 구독 목록에서 상태가 "확인 보류 중(Pending confirmation)"인 구독을 선택합니다.
  3. "구독 확인(Confirm subscription)"을 선택합니다.
  4. 구독 확인 대화 상자에서 3단계에서 복사한 구독 확인 URL을 붙여넣습니다.
  5. "구독 확인(Confirm subscription)"을 선택합니다. Confirm subscription 여기에 이미지 설명 입력

이 방식으로 구독을 확인하면 AuthenticateOnUnsubscribe가 자동으로 true로 설정됩니다. 이후 이메일 내 Unsubscribe 링크를 클릭해도 구독이 취소되지 않습니다.

5단계: 동작 확인

  1. 구독 상태가 "확인됨(Confirmed)"으로 변경되었는지 확인합니다. 구독 취소 인증이 활성화된 상태에서:
  • 이메일 내 Unsubscribe 링크를 클릭하면 구독 취소가 거부됩니다.
  • 구독을 취소하려면 AWS 콘솔에서 해당 구독을 선택하고 **삭제(Delete)**를 선택해야 합니다. Subscription not removed

주의사항

  • 구독 확인 이메일의 링크를 직접 클릭하면 인증 없는 구독으로 생성됩니다. 반드시 SNS 콘솔의 "구독 확인" 기능을 통해 URL을 붙여넣는 방식으로 확인해야 합니다.
  • 구독 확인 이메일이 스팸함으로 분류될 수 있으므로, 발신자 주소 no-reply@sns.amazonaws.com을 허용 목록에 추가하는 것을 권장합니다.
  • 인증 기반 구독 취소를 활성화하면 이메일 수신자가 직접 구독을 취소할 수 없습니다. 구독 관리는 AWS 콘솔 또는 API를 통해서만 가능합니다.
  • 이메일 보안 솔루션이 확인(Confirmation) 링크도 자동 클릭하는 경우가 있으므로, 보안 팀에 SNS 관련 도메인(sns.amazonaws.com)의 링크 스캔 예외 처리를 요청하는 것도 고려하세요.
  • 구독 확인 이메일은 48시간 내에 확인하지 않으면 자동 삭제됩니다.

Related Information

[1] 설명서 > Amazon SNS > 이메일 알림 구독 : https://docs.aws.amazon.com/ko_kr/sns/latest/dg/sns-email-notifications.html

[2] 설명서 > Amazon SNS > ConfirmSubscription API : https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html

[3] 설명서 > Amazon SNS > 보안 모범 사례 : https://docs.aws.amazon.com/ko_kr/sns/latest/dg/sns-security-best-practices.html

AWS
지원 엔지니어
게시됨 한 달 전26회 조회