Amazon SNS 메시지 전송 재시도 - Amazon Simple Notification Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon SNS 메시지 전송 재시도

Amazon은 각 전송 프로토콜에 대한 전송 정책을 SNS 정의합니다. 전송 정책은 서버 측 오류가 발생할 때(구독된 엔드포인트를 호스팅하는 시스템을 사용할 수 없게 되는 경우) Amazon이 메시지 전송을 SNS 재시도하는 방법을 정의합니다. 전송 정책이 소진되면 Amazon은 구독에 데드 레터 대기열이 연결되지 않는 한 전송 재시도를 SNS 중지하고 메시지를 삭제합니다. 자세한 내용은 Amazon SNS 데드 레터 대기열 단원을 참조하십시오.

전송 프로토콜 및 정책

참고
  • 를 제외하고 는 사용자 지정 정책을 HTTP/S, you can't change Amazon SNS-defined delivery policies. Only HTTP/S 지원합니다. HTTP/S 전송 정책 생성을 참조하세요.

  • Amazon은 전송 재시도에 지터링을 SNS 적용합니다. 자세한 정보는 AWS 아키텍처 블로그지수 백오프 및 지터 게시물을 참조하세요.

  • HTTP/S 엔드포인트의 총 정책 재시도 시간은 3,600초를 초과할 수 없습니다. 이 값은 고정 한도이며 늘릴 수 없습니다.

[엔드포인트 유형] 전송 프로토콜 즉각 재시도(지연 없음) 단계 프리 백오프 단계 백오프 단계 포스트 백오프 단계 총 시도 횟수
AWS 관리형 엔드포인트 Amazon Data Firehose1 3회, 지연 없음 2회, 1초 간격 10회, 1초~20초 범위에서 지수 백오프 사용 100,000회, 20초 간격 100,015회, 23일 동안
AWS Lambda
Amazon SQS
고객 관리형 엔드포인트 SMTP 0회, 지연 없음 2회, 10초 간격 10회, 10초~600초(10분) 범위에서 지수 백오프 사용 38회, 600초(10분) 간격 50회 시도, 6시간 동안
SMS
모바일 푸시

1 Firehose 프로토콜의 제한 오류의 경우 Amazon은 고객 관리형 엔드포인트와 동일한 전송 정책을 SNS 사용합니다.

전송 정책 단계

다음 다이어그램은 전송 정책의 단계를 보여줍니다.

시간을 x 값으로, 초기 전송 시도를 y 값으로 표시하는 x y 축 다이어그램입니다. 전송 정책은 y축의 즉시 재시도 단계로 시작되고, x축의 경우 백업 전 단계, 백업 단계, 백업 후 단계 순입니다.

각 전송 정책은 4단계로 구성됩니다.

  1. 즉각 재시도 단계(지연 없음) – 이 단계는 첫 전송 시도 직후에 발생합니다. 이 단계에서는 재시도 간에 지연이 없습니다.

  2. 프리 백오프 단계 – 이 단계는 즉시 재시도 단계 후에 이어집니다. AmazonSNS은 이 단계를 사용하여 백오프 함수를 적용하기 전에 재시도 세트를 시도합니다. 이 단계에서는 재시도 횟수와 재시도 간의 지연 시간을 지정합니다.

  3. 백오프 단계 – 이 단계에서는 재시도 백오프 함수를 사용하여 재시도 간 지연을 제어합니다. 최소 지연 시간과 최대 지연 시간을 설정한 다음 재시도 백오프 함수를 설정하여 최소 지연 시간부터 최대 지연 시간까지 어느 정도 간격으로 지연을 늘릴 것인지를 정의합니다. 백오프 함수는 Arithmetic, Exponential, Geometric 또는 Linear가 될 수 있습니다.

  4. 포스트 백오프 단계 – 백오프 단계 뒤에 오는 이 단계에서는 재시도 횟수와 재시도 간의 지연 시간을 지정합니다. 이것이 마지막 단계입니다.

HTTP/S 전송 정책 생성

전송 정책 및 4단계를 사용하여 Amazon이 HTTP/S 엔드포인트로의 메시지 전송을 SNS 재시도하는 방법을 정의할 수 있습니다. Amazon을 SNS 사용하면 예를 들어 HTTP 서버 용량에 따라 정책을 사용자 지정하려는 경우 HTTP 엔드포인트의 기본 재시도 정책을 재정의할 수 있습니다.

주제와 연결된 HTTP/S delivery policy as a JSON object at the subscription or topic level. When you define the policy at the topic level, it applies to all HTTP/S 구독을 설정할 수 있습니다. 전송 정책을 구독 수준에서 설정하려면 Subscribe 또는 SetSubscriptionAttributes API 작업을 사용할 수 있습니다. 주제 수준에서 전송 정책을 설정하려면 CreateTopic 또는 SetTopicAttributes API 작업을 사용할 수 있습니다. 또는 AWS CloudFormation 템플릿에서 AWS::SNS::Subscription 리소스를 사용할 수도 있습니다.

정책이 대상으로 하는 HTTP/S server's capacity. You can set the policy as a topic attribute or a subscription attribute. If all HTTP/S subscriptions in your topic target the same HTTP/S server, we recommend that you set the delivery policy as a topic attribute, so that it remains valid for all HTTP/S subscriptions in the topic. Otherwise, you must compose a delivery policy for each HTTP/S subscription in your topic, according the capacity of the HTTP/S 서버에 따라 전송 정책을 사용자 지정해야 합니다.

요청 정책에서 Content-Type 헤더에 대해서도 알림의 미디어 유형을 지정할 수 있습니다. 기본적으로 Amazon은 콘텐츠 유형이 로 설정된 HTTP/S 엔드포인트에 모든 알림을 SNS 보냅니다text/plain; charset=UTF-8. Amazon을 SNS 사용하면 기본 요청 정책을 재정의할 수 있습니다. 지원 headerContentType 및 제한 사항은 아래 표를 참조하세요.

다음 JSON 객체는 Amazon에 다음과 같이 실패한 HTTP/S 전송 시도를 다시 시도SNS하도록 지시하는 전송 정책을 나타냅니다.

  1. 지연 없음 단계에서 즉시 3회

  2. 프리 백오프 단계에서 2회(1초 간격)

  3. 10회(1초~60초 범위에서 지수 백오프 사용)

  4. 포스트 백오프 단계에서 35회(60초 간격)

이 샘플 전송 정책에서 AmazonSNS은 메시지를 삭제하기 전에 총 50회 시도합니다. 전송 정책에 지정된 재시도가 소진된 후에도 메시지를 유지하려면 전송되지 않은 메시지를 데드 레터 대기열()로 이동하도록 구독을 구성합니다DLQ. 자세한 내용은 Amazon SNS 데드 레터 대기열 단원을 참조하십시오.

참고

또한 이 전송 정책은 Amazon에 maxReceivesPerSecond 속성을 사용하여 초당 10개 이하로 전송을 제한SNS하도록 지시합니다. 이 자체 제한 속도로 인해 전달된 메시지(아웃바운드 트래픽)보다 더 많은 메시지(인바운드 트래픽)가 게시될 수 있습니다. 아웃바운드 트래픽보다 인바운드 트래픽이 더 많은 경우 구독에 큰 메시지 백로그가 누적되어 메시지 전송 대기 시간이 길어질 수 있습니다. 전송 정책에서는 maxReceivesPerSecond에 대해 워크로드에 부정적인 영향을 미치지 않는 값을 지정해야 합니다.

참고

이 전송 정책은 에 대한 HTTP/S 알림의 기본 콘텐츠 유형을 재정의합니다application/json.

{ "healthyRetryPolicy": { "minDelayTarget": 1, "maxDelayTarget": 60, "numRetries": 50, "numNoDelayRetries": 3, "numMinDelayRetries": 2, "numMaxDelayRetries": 35, "backoffFunction": "exponential" }, "throttlePolicy": { "maxReceivesPerSecond": 10 }, "requestPolicy": { "headerContentType": "application/json" } }

전송 정책은 재시도 정책과 제한 정책, 요청 정책으로 구성됩니다. 전송 정책에는 총 9개의 속성이 있습니다.

정책 설명 Constraint
minDelayTarget 재시도의 최소 지연 시간입니다.

단위:

1~최대 지연 시간

기본값: 20

maxDelayTarget 재시도의 최대 지연 시간입니다.

단위:

최소 지연 시간~3,600

기본값: 20

numRetries 즉각 재시도, 프리 백오프, 백오프, 포스트 백오프 단계의 재시도를 모두 포함한 총 재시도 횟수입니다. 0~100

기본값: 3

numNoDelayRetries 재시도 간 지연 없이 즉각 수행되는 재시도 횟수입니다. 0 이상

기본값: 0

numMinDelayRetries 재시도 간 지정된 최소 지연 시간으로 프리 백오프 단계에서 수행되는 재시도 횟수입니다. 0 이상

기본값: 0

numMaxDelayRetries 재시도 간 지정된 최대 지연 시간으로 포스트 백오프 단계에서 수행되는 재시도 횟수입니다. 0 이상

기본값: 0

backoffFunction 재시도 간 백오프에 사용되는 모델입니다.

다음 4가지 옵션 중 하나:

  • Arithmetic

  • Exponential

  • Geometric

  • Linear

기본값: Linear

maxReceivesPerSecond 구독별 초당 최대 전송 수입니다. 1 이상

기본값: 제한 없음

headerContentType

HTTP/S 엔드포인트로 전송되는 알림의 콘텐츠 유형입니다.

요청 정책이 정의되지 않은 경우 콘텐츠 유형의 기본값은 text/plain; charset=UTF-8입니다.

구독에 대해 원시 메시지 전송을 비활성화하거나(기본값) 전송 정책이 주제 수준에서 정의된 경우 지원되는 헤더 콘텐츠 유형은 application/jsontext/plain입니다.

구독에서 원시 메시지 전송을 활성화하면 다음과 같은 콘텐츠 유형이 지원됩니다.

  • text/css

  • text/csv

  • text/html

  • text/plain

  • text/xml

  • application/atom+xml

  • application/json

  • application/octet-stream

  • application/soap+xml

  • 애플리케이션/x-www-form-urlencoded

  • application/xhtml+xml

  • application/xml

AmazonSNS은 다음 공식을 사용하여 백오프 단계의 재시도 횟수를 계산합니다.

numRetries - numNoDelayRetries - numMinDelayRetries - numMaxDelayRetries

3가지 파라미터를 사용하여 백오프 단계의 재시도 빈도를 제어할 수 있습니다.

  • minDelayTarget – 백오프 단계에서 처음 수행하는 재시도에 대한 지연을 정의합니다.

  • maxDelayTarget – 백오프 단계에서 마지막으로 수행하는 재시도에 대한 지연을 정의합니다.

  • backoffFunction - Amazon이 백오프 단계의 첫 번째 재시도와 마지막 재시도 간의 모든 재시도와 관련된 지연을 계산하는 데 SNS 사용하는 알고리즘을 정의합니다. 4가지 재시도 백오프 함수 중 하나를 사용할 수 있습니다.

다음 다이어그램은 백오프 단계에서 각 재시도 백오프 함수에 따라 재시도 관련 지연이 어떻게 달라지는지를 보여줍니다. 전송 정책의 총 재시도 횟수는 10회, 최소 지연 시간은 5초, 최대 지연 시간은 260초로 설정되어 있습니다. 세로 축은 10번의 재시도 각각에 대한 지연(초)을 나타냅니다. 가로 축은 첫 번째 시도에서 열 번째 시도까지의 재시도 횟수를 나타냅니다.

전송 정책의 백오프 단계 중 재시도 지연 시간으로, 10회 재시도 횟수가 표시됩니다. 지수, 산술, 선형 및 기하학이라는 4가지 서로 다른 백오프 함수가 서로 다른 색상으로 구분된 선으로 표시되며, 각 함수는 재시도할 때마다 지연이 증가하는 방식을 보여줍니다. 지수 백오프 함수는 가장 가파른 상승을 보여주며, 다른 것보다 최대 지연에 더 빨리 도달하는 반면 선형 함수는 일정한 속도로 증가합니다. 산술 및 기하 함수는 지연이 중간 수준으로 증가하지만 선형 모델보다 가파릅니다. 각 줄은 최소 지연 시간인 5초 정도부터 시작하여 10번째 재시도까지 최대 지연 시간인 260초로 이동합니다.