기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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 사용합니다.
전송 정책 단계
다음 다이어그램은 전송 정책의 단계를 보여줍니다.
각 전송 정책은 4단계로 구성됩니다.
-
즉각 재시도 단계(지연 없음) – 이 단계는 첫 전송 시도 직후에 발생합니다. 이 단계에서는 재시도 간에 지연이 없습니다.
-
프리 백오프 단계 – 이 단계는 즉시 재시도 단계 후에 이어집니다. AmazonSNS은 이 단계를 사용하여 백오프 함수를 적용하기 전에 재시도 세트를 시도합니다. 이 단계에서는 재시도 횟수와 재시도 간의 지연 시간을 지정합니다.
-
백오프 단계 – 이 단계에서는 재시도 백오프 함수를 사용하여 재시도 간 지연을 제어합니다. 최소 지연 시간과 최대 지연 시간을 설정한 다음 재시도 백오프 함수를 설정하여 최소 지연 시간부터 최대 지연 시간까지 어느 정도 간격으로 지연을 늘릴 것인지를 정의합니다. 백오프 함수는 Arithmetic, Exponential, Geometric 또는 Linear가 될 수 있습니다.
-
포스트 백오프 단계 – 백오프 단계 뒤에 오는 이 단계에서는 재시도 횟수와 재시도 간의 지연 시간을 지정합니다. 이것이 마지막 단계입니다.
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하도록 지시하는 전송 정책을 나타냅니다.
-
지연 없음 단계에서 즉시 3회
-
프리 백오프 단계에서 2회(1초 간격)
-
10회(1초~60초 범위에서 지수 백오프 사용)
-
포스트 백오프 단계에서 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가지 옵션 중 하나:
기본값: Linear |
maxReceivesPerSecond
|
구독별 초당 최대 전송 수입니다. | 1 이상 기본값: 제한 없음 |
headerContentType
|
HTTP/S 엔드포인트로 전송되는 알림의 콘텐츠 유형입니다. |
요청 정책이 정의되지 않은 경우 콘텐츠 유형의 기본값은 구독에 대해 원시 메시지 전송을 비활성화하거나(기본값) 전송 정책이 주제 수준에서 정의된 경우 지원되는 헤더 콘텐츠 유형은 구독에서 원시 메시지 전송을 활성화하면 다음과 같은 콘텐츠 유형이 지원됩니다.
|
AmazonSNS은 다음 공식을 사용하여 백오프 단계의 재시도 횟수를 계산합니다.
numRetries - numNoDelayRetries - numMinDelayRetries - numMaxDelayRetries
3가지 파라미터를 사용하여 백오프 단계의 재시도 빈도를 제어할 수 있습니다.
-
minDelayTarget
– 백오프 단계에서 처음 수행하는 재시도에 대한 지연을 정의합니다. -
maxDelayTarget
– 백오프 단계에서 마지막으로 수행하는 재시도에 대한 지연을 정의합니다. -
backoffFunction
- Amazon이 백오프 단계의 첫 번째 재시도와 마지막 재시도 간의 모든 재시도와 관련된 지연을 계산하는 데 SNS 사용하는 알고리즘을 정의합니다. 4가지 재시도 백오프 함수 중 하나를 사용할 수 있습니다.
다음 다이어그램은 백오프 단계에서 각 재시도 백오프 함수에 따라 재시도 관련 지연이 어떻게 달라지는지를 보여줍니다. 전송 정책의 총 재시도 횟수는 10회, 최소 지연 시간은 5초, 최대 지연 시간은 260초로 설정되어 있습니다. 세로 축은 10번의 재시도 각각에 대한 지연(초)을 나타냅니다. 가로 축은 첫 번째 시도에서 열 번째 시도까지의 재시도 횟수를 나타냅니다.