Amazon Simple Notification Service
개발자 안내서 (API 버전 2010-03-31)

HTTP/HTTPS 엔드포인트에 대한 Amazon SNS 전송 재시도 정책 설정

HTTP/HTTPS 엔드포인트에 Amazon SNS를 성공적으로 전송하려면 한 번 넘게 시도해야 하는 경우가 있습니다. 예를 들어 구독 엔드포인트를 호스팅하는 웹 서버가 점검을 위해 다운되는 경우 또는 트래픽이 매우 많은 경우에 이럴 수 있습니다. 첫 전송 시도에서 구독자로부터 성공적인 응답을 받지 못하면 Amazon SNS가 메시지를 다시 전송하려고 시도합니다. 이를 재시도라고 합니다. 다시 말해서 재시도란 첫 전송 시도 후에 시도되는 전송입니다.

Amazon SNS는 전송 시도가 실패해야만 재시도를 수행합니다. Amazon SNS는 다음과 같은 경우에 전송 시도가 실패했다고 간주합니다.

  • HTTP 상태 범위가 500-599인 경우.

  • HTTP 상태 범위가 200-599를 벗어난 경우.

  • 요청 시간이 초과된 경우(15초). 요청 시간이 초과되면 지정된 간격에 따라 다음 재시도가 수행됩니다. 예를 들어 재시도 간격이 20초일 경우 요청 시간이 초과되면 다음 요청은 시간 초과된 요청이 시작한 지 35초 후에 시작됩니다.

  • 연결 시간 초과, 엔드포인트 접속 불가, SSL 인증서 오류 등과 같은 연결 오류가 발생한 경우

전송 정책을 사용하여 총 재시도 횟수뿐만 아니라 각 재시도 간의 지연 시간을 제어할 수 있습니다. 최대 총 100회의 재시도를 지정할 수 있으며 이 횟수는 별개의 네 단계에 분배됩니다. 시스템 메시지의 최대 수명은 1시간입니다. 이 1시간 제한은 전송 정책으로 연장할 수 없습니다.

 Amazon SNS 전송 정책 4단계의 그림.
  1. 즉각 재시도 단계지연 없음 단계라고도 하는 이 단계는 첫 전송 시도 직후에 발생합니다. [Retries with no delay]에 설정한 값은 첫 전송 시도 직후의 재시도 횟수를 정의합니다. 이 단계에서는 재시도 간에 지연이 없습니다.

  2. 프리 백오프 단계즉시 재시도 단계 후에는 프리 백오프 단계가 옵니다. 이 단계를 사용하여 재시도에 백오프 함수가 적용되기 전에 수행할 일련의 재시도를 생성합니다. 프리 백오프 단계의 재시도 횟수를 지정하려면 [Minimum delay retries] 설정을 사용합니다. 이 단계에서는 [Minimum delay] 설정을 사용하여 재시도 간의 시간 지연을 제어할 수 있습니다.

  3. 백오프 단계이 단계는 재시도 백오프 함수를 사용하여 이 단계에서 수행되는 재시도 간의 지연을 제어할 수 있기 때문에 백오프 단계라고 합니다. [Minimum delay]와 [Maximum delay]를 설정한 다음 [Retry backoff function]을 선택하여 최소 지연부터 최대 지연까지 어느 정도 간격으로 지연을 증가할 것인지를 정의합니다.

  4. 포스트 백오프 단계백오프 단계 뒤에는 포스트 백오프 단계가 옵니다. [Maximum delay retries] 설정을 사용하여 포스트 백오프 단계의 재시도 횟수를 지정합니다. 이 단계에서는 [Maximum delay] 설정을 사용하여 재시도 간의 시간 지연을 제어할 수 있습니다.

백오프 단계는 가장 많이 사용되는 단계입니다. 전송 정책을 설정하지 않을 경우 백오프 단계에서 기본 재시도 횟수는 3회이고, 각 재시도 간의 시간 지연은 20초입니다. [Minimum delay]와 [Maximum delay]의 기본값은 모두 20입니다. 기본 재시도 횟수는 3이며, 따라서 기본 재시도 정책에서는 총 3회의 재시도를 각각 20초 간격으로 호출합니다. 다음 그림은 각 재시도와 연결된 지연을 보여 줍니다.

 Amazon SNS 기본 전송 정책의 그림.

재시도 백오프 함수가 재시도 간의 시간 지연에 어떤 영향을 주는지 보려면 최대 지연을 40초로 설정하고 나머지 설정을 기본값으로 놔둬 봅니다. 이렇게 하면 전송 정책에서 백오프 단계 동안 3회의 재시도, 최소 지연 시간 20초, 최대 지연 시간 40초를 지정합니다. 기본 백오프 함수는 직선형이기 때문에 메시지 간의 지연은 백오프 단계가 진행됨에 따라 일정한 비율로 증가합니다. Amazon SNS는 20초 후에 첫 재시도를 하고, 30초 후에 두 번째 재시도를 하며, 40초 후에 마지막 재시도를 합니다. 다음 그림은 각 재시도와 연결된 지연을 보여 줍니다.

 최대 지연이 40으로 설정된 Amazon SNS 기본 전송 정책의 그림.

시스템 메시지의 최대 수명은 1시간입니다. 이 1시간 제한은 전송 정책으로 연장할 수 없습니다.

참고

전송 정책은 HTTP와 HTTPS 구독 유형만 지원합니다. 다른 Amazon SNS 구독 유형(예: 이메일, Amazon SQS, SMS)에 대한 지원은 현재 제공되지 않습니다.

주제와 구독에 전송 정책 적용

Amazon SNS 주제에 전송 정책을 적용할 수 있습니다. 주제에 전송 정책을 설정할 경우 이 정책은 주제의 모든 구독에 적용됩니다. 다음 그림은 한 주제와 이 주제에 연결된 세 개의 모든 구독에 적용되는 전송 정책을 보여 줍니다.

 Amazon SNS 주제와 세 개의 HTTP 구독 및 주제 전송 정책.

전송 정책을 개별 구독에 적용할 수도 있습니다. 구독에 전송 정책을 지정하면 구독 수준의 정책이 주제 수준의 전송 정책보다 우선 적용됩니다. 다음 그림에서는 한 구독에 구독 수준의 전송 정책이 있으며, 다른 두 개의 구독에는 전송 정책이 없습니다.

 Amazon SNS 주제와 세 개의 HTTP 구독, 주제 전송 정책 및 한 개의 구독 전송 정책.

경우에 따라 모든 구독 전송 정책을 무시하여 구독에 자체 전송 정책이 설정되어 있더라도 주제의 전송 정책이 모든 구독에 적용되도록 할 수도 있습니다. 주제 전송 정책을 모든 구독에 적용하도록 Amazon SNS를 구성하려면 [View/Edit Topic Delivery Policies] 대화 상자에서 [Ignore subscription override]를 클릭합니다. 다음 그림은 구독 수준 정책을 명시적으로 무시함에 따라 자체 구독 전송 정책을 가지고 있는 구독을 비롯한 모든 구독에 적용되는 주제 수준의 전송 정책을 보여 줍니다.

 Amazon SNS 주제와 세 개의 HTTP 구독, 주제 전송 정책 및 Amazon SNS에서 무시하는 한 개의 구독 전송 정책.

최대 수신 속도 설정

[Maximum receive rate] 설정을 설정하여 Amazon SNS에서 구독 엔드포인트에 보내는 초당 최대 메시지 수를 설정할 수 있습니다. Amazon SNS는 전송 대기 중인 메시지를 최대 1시간 동안 보관합니다. 1시간 넘게 보관된 메시지는 버려집니다.

  • 토픽의 모든 구독에 적용되는 최대 수신 속도를 설정하려면 [Edit Topic Delivery Policy] 대화 상자를 사용하여 토픽 수준에서 설정을 적용합니다. 자세한 내용은 주제에 대한 최대 수신 속도를 설정하려면 단원을 참조하십시오.

  • 특정 구독에 적용되는 최대 수신 속도를 설정하려면 [Edit Subscription Delivery Policy] 대화 상자를 사용하여 구독 수준에서 설정을 적용합니다. 자세한 내용은 구독에 대한 최대 수신 속도를 설정하려면를 참조하십시오.

주제에 대한 최대 수신 속도를 설정하려면

  1. AWS Management 콘솔에 로그인하고 https://console.aws.amazon.com/sns/v2/home에서 Amazon SNS 콘솔을 엽니다.

  2. 좌측 탐색 창에서 [Topics]를 클릭한 다음 주제를 선택합니다.

  3. [Other actions] 드롭다운 목록을 클릭하고 [Edit topic delivery policy]를 선택합니다.

  4. [Maximum receive rate] 상자에 정수 값(예: 2)을 입력합니다.

  5. [Update policy]를 클릭하여 변경한 설정을 저장합니다.

구독에 대한 최대 수신 속도를 설정하려면

  1. AWS Management 콘솔에 로그인하고 https://console.aws.amazon.com/sns/v2/home에서 Amazon SNS 콘솔을 엽니다.

  2. 좌측 탐색 창에서 [Topics]를 클릭한 다음 주제 ARN을 선택합니다.

  3. [Topic Details] 창에서 구독을 선택하고 [Edit topic delivery policy]를 클릭합니다.

  4. [Maximum receive rate] 상자에 정수 값(예: 2)을 입력합니다.

  5. [Update policy]를 클릭하여 변경한 설정을 저장합니다.

즉각 재시도 단계

즉각 재시도 단계는 첫 전송 시도 직후에 나타납니다. 이 단계는 재시도 간의 시간 지연이 없기 때문에 지연 없음 단계라고도 합니다. 이 단계의 기본 재시도 횟수는 0입니다.

즉각 재시도 단계의 재시도 횟수를 설정하려면

  1. AWS Management 콘솔에 로그인하고 https://console.aws.amazon.com/sns/v2/home에서 Amazon SNS 콘솔을 엽니다.

  2. 좌측 탐색 창에서 [Topics]를 클릭한 다음 주제 ARN을 선택합니다.

  3. [Topic Details] 창에서 [Other topic actions] 드롭다운 목록의 [Edit topic delivery policy]를 선택합니다.

  4. [Retries with no delay] 상자에 정수 값을 입력합니다.

  5. [Update policy]를 클릭하여 변경한 설정을 저장합니다.

프리 백오프 단계

즉시 재시도 단계 후에는 프리 백오프 단계가 옵니다. 백오프 함수는 재시도 간의 지연에 영향을 주기 전에 하나 이상의 재시도를 수행하려면 이 단계를 사용합니다. 이 단계에서 재시도 간의 시간은 일정하며 [Minimum delay]로 설정한 시간과 동일합니다. [Minumum delay] 설정은 두 단계에서 재시도에 영향을 줍니다. 프리 백오프 단계에서는 모든 재시도에 적용되고, 백오프 단계에서는 재시도의 첫 시간 지연으로 적용됩니다. 이 단계의 기본 재시도 횟수는 0입니다.

프리 백오프 단계의 재시도 횟수를 설정하려면

  1. AWS Management 콘솔에 로그인하고 https://console.aws.amazon.com/sns/v2/home에서 Amazon SNS 콘솔을 엽니다.

  2. 좌측 탐색 창에서 [Topics]를 클릭한 다음 주제 ARN을 선택합니다.

  3. [Topic Details] 창에서 [Other topic actions] 드롭다운 목록의 [Edit topic delivery policy]를 선택합니다.

  4. [Minimum delay retries] 상자에 정수 값을 입력합니다.

  5. [Minimum delay] 상자에 정수 값을 입력하여 이 단계에서 메시지 간의 지연을 설정합니다.

    여기에서 설정하는 값은 [Maximum delay]에 설정한 값과 같거나 그보다 작아야 합니다.

  6. [Update policy]를 클릭하여 변경한 설정을 저장합니다.

백오프 단계

백오프 단계는 기본적으로 적용되는 유일한 단계입니다. [Number of retries]를 사용하여 백오프 단계에서의 재시도 횟수를 제어할 수 있습니다.

중요

[Number of retries]로 선택한 값은 [Retries with no delay], [Minimum delay retries] 및 [Maximum delay retries]에 대해 설정한 재시도를 포함하여 총 재시도 횟수를 나타냅니다.

백오프 단계에서 세 가지 매개 변수를 사용하여 재시도 간격을 제어할 수 있습니다.

  • Minimum delay—이 최소 지연은 백오프 단계에서 처음 시도하는 재시도에 대한 지연을 정의합니다.

  • Maximum delay—이 최대 지연은 백오프 단계에서 마지막으로 시도하는 재시도에 대한 지연을 정의합니다.

  • Retry backoff function—재시도 백오프 함수는 Amazon SNS가 백오프 단계의 첫 재시도부터 마지막 재시도까지의 모든 재시도에 대한 지연을 계산하는 데 사용할 알고리즘을 정의합니다.

네 가지 재시도 백오프 함수 중에서 선택할 수 있습니다.

  • Linear

  • Arithmetic

  • Geometric

  • Exponential

다음 스크린샷은 백오프 기간 중 각 재시도 백오프 함수가 메시지에 대한 지연에 어떻게 영향을 주는지를 보여 줍니다. 세로 축은 10번의 재시도 각각에 대한 지연(초)을 나타냅니다. 가로 축은 재시도 횟수를 나타냅니다. 최소 지연은 5초이고, 최대 지연은 260초입니다.

 네 가지 백오프 재시도 함수를 보여 주는 그래프.

포스트 백오프 단계

포스트 백오프 단계는 마지막 단계입니다. 백오프 함수가 재시도 간의 지연에 영향을 준 후에 하나 이상의 재시도를 수행하려면 이 단계를 사용합니다. 이 단계에서 재시도 간의 시간은 일정하며 [Maximum delay]로 설정한 시간과 동일합니다. [Maximum delay] 설정은 두 단계에서 재시도에 영향을 줍니다. 포스트 백오프 단계에서는 모든 재시도에 적용되고, 백오프 단계에서는 재시도의 마지막 시간 지연으로 적용됩니다. 이 단계의 기본 재시도 횟수는 0입니다.

포스트 백오프 단계의 재시도 횟수를 설정하려면

  1. AWS Management 콘솔에 로그인하고 https://console.aws.amazon.com/sns/v2/home에서 Amazon SNS 콘솔을 엽니다.

  2. 좌측 탐색 창에서 [Topics]를 클릭한 다음 주제 ARN을 선택합니다.

  3. [Topic Details] 창에서 [Other topic actions] 드롭다운 목록의 [Edit topic delivery policy]를 선택합니다.

  4. [Maximum delay retries] 상자에 정수 값을 입력합니다.

  5. [Maximum delay] 상자에 정수 값을 입력하여 이 단계에서 메시지 간의 지연을 설정합니다.

    여기서 설정하는 값은 [Minimum delay]에 설정한 값과 같거나 그보다 커야 합니다.

  6. [Update policy]를 클릭하여 변경한 설정을 저장합니다.