FIFO 주제 구독자를 위한 메시지 재생 - Amazon Simple Notification Service

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

FIFO 주제 구독자를 위한 메시지 재생

Amazon SNS 재생 기능을 사용하면 주제 구독자가 주제 데이터 스토어에서 아카이브된 메시지를 검색하고 구독한 엔드포인트에 다시 전송(또는 재생)할 수 있습니다. 구독이 생성되는 즉시 메시지를 재생할 수 있습니다. 재생된 메시지에는 원본과 동일한 콘텐츠, MessageIdTimestamp가 있으며 재생된 메시지임을 식별하는 데 도움이 되는 Replayed 속성도 포함되어 있습니다. 일부 메시지만 재생하려는 경우 구독에 필터 정책을 추가할 수 있습니다. 메시지 필터링에 대한 자세한 내용은 재생된 메시지 필터링 섹션을 참조하세요.

AWS Management Console을 사용하여 메시지 재생 정책 생성

AWS Management Console을 사용하여 새 재생 정책을 생성하려면 이 옵션을 사용합니다.

  1. Amazon SNS 콘솔에 로그인합니다.

  2. 주제 구독을 선택하거나 새 주제 구독을 생성합니다. 구독 생성에 대한 자세한 내용은 Amazon SNS 주제 구독 섹션을 참조하세요.

  3. 메시지 재생을 시작하려면 재생 드롭다운으로 이동하여 재생 시작을 선택합니다.

  4. 재생 기간 모달에서 다음과 같이 선택합니다.

    1. 재생 시작 날짜 및 시간 선택 - 아카이브된 메시지의 재생을 시작할 날짜(YYYY/MM/DD 형식)와 시간(24시간 hh:mm:ss 형식)을 선택합니다. 시작 시간은 대략적인 아카이브 시간의 시작 시간보다 이후여야 합니다.

    2. (선택 사항) 재생 종료 날짜 및 시간 선택 - 아카이브된 메시지의 재생을 중지할 날짜(YYYY/MM/DD 형식)와 시간(24시간 hh:mm:ss 형식)을 선택합니다.

    3. 재생 시작을 선택합니다.

  5. (선택 사항) 메시지 재생을 중지하려면 구독 세부 정보 페이지로 이동한 다음 재생 드롭다운에서 재생 중지를 선택합니다.

  6. (선택 사항) CloudWatch를 사용하여 이 워크플로 내에서 메시지 재생 지표를 모니터링하려면 Amazon CloudWatch를 사용하여 메시지 재생 지표 모니터링 섹션을 참조하세요.

메시지 재생 정책을 확인하고 편집하려면

구독 세부 정보 페이지에서 다음 작업을 수행할 수 있습니다.

  • 메시지 재생 상태를 확인하려는 경우, 재생 상태 필드에 다음 값이 표시됩니다.

    • 완료 - 재생 기능이 모든 메시지를 성공적으로 다시 전송했으며 이제 새로 게시된 메시지를 전송하고 있습니다.

    • 진행 중 - 현재 선택한 메시지가 재생 중입니다.

    • 실패 - 재생을 완료할 수 없습니다.

    • 보류 중 - 재생이 시작되는 동안의 기본 상태입니다.

  • (선택 사항) 메시지 재생 정책을 수정하려면 구독 세부 정보 페이지로 이동한 다음 재생 드롭다운에서 재생 시작을 선택합니다. 재생을 시작하면 기존 재생이 대체됩니다.

API를 사용하여 구독에 재생 정책 추가

아카이브된 메시지를 재생하려면 ReplayPolicy 속성을 사용합니다. ReplayPolicySubscribeSetSubscriptionAttributes API 작업과 함께 사용할 수 있습니다. 이 정책에는 다음 값이 포함되어 있습니다.

  • StartingPoint(필수) - 메시지 재생을 시작할 위치를 나타냅니다.

  • EndingPoint(선택 사항) - 메시지 재생을 중지할 시기를 나타냅니다. EndingPoint를 생략하면 현재 시간에 도달할 때까지 재생이 계속됩니다.

  • PointType(필수) - 시작점과 종료점의 유형을 설정합니다. 현재 PointType에 지원되는 값은 Timestamp입니다.

예를 들어 다운스트림 오류를 복구하고 2023년 10월 1일에 2시간 동안 모든 메시지를 다시 보내려면 SetSubscriptionAttributes API 작업을 사용하여 다음과 같이 ReplayPolicy를 설정합니다.

{ "PointType":"Timestamp", "StartingPoint":"2023-10-01T10:00:00.000Z", "EndingPoint":"2023-10-01T12:00:00.000Z" }

2023년 10월 1일 현재 주제에 전송된 모든 메시지를 재생하고 주제에 새로 게시된 모든 메시지를 계속 수신하려면 SetSubscriptionAttributes API 작업을 사용하여 다음과 같이 구독에 ReplayPolicy를 설정합니다.

{ "PointType":"Timestamp", "StartingPoint":"2023-10-01T00:00:00.000Z" }

메시지가 재생되었는지 확인하기 위해 재생된 각 메시지에 부울 속성 Replayed가 추가됩니다.

SDK를 사용하여 구독에 재생 정책 추가

AWS SDK를 사용하려면 자격 증명을 사용하여 구성해야 합니다. 자세한 정보는 AWS SDK 및 도구 참조 가이드공유 configcredentials 파일을 참조하세요.

다음 코드 예제는 2023년 10월 1일 2시간 동안 Amazon SNS FIFO 주제 아카이브에서 메시지를 재전송하도록 구독에 ReplayPolicy를 설정하는 방법을 보여줍니다.

// Specify the ARN of the Amazon SNS subscription to initiate the ReplayPolicy on. String subscriptionArn = "arn:aws:sns:us-east-2:123456789012:MyArchiveTopic.fifo:1d2a3e9d-7f2f-447c-88ae-03f1c68294da"; // Set the ReplayPolicy to replay messages from the topic's archive // for a 2 hour time period on October 1st 2023 between 10am and 12pm UTC. String replayPolicy = "{\"PointType\":\"Timestamp\",\"StartingPoint\":\"2023-10-01T10:00:00.000Z\",\"EndingPoint\":\"2023-10-01T12:00:00.000Z\"}"; // Set the ArchivePolicy for the Amazon SNS topic SetSubscriptionAttributesRequest request = new SetSubscriptionAttributesRequest() .withSubscriptionArn(subscriptionArn) .withAttributeName("ReplayPolicy") .withAttributeValue(replayPolicy); sns.setSubscriptionAttributes(request);

재생된 메시지 필터링

Amazon SNS 메시지 필터링을 사용하면 Amazon SNS가 구독자 엔드포인트에 재생하는 재생된 메시지를 제어할 수 있습니다. 메시지 필터링과 메시지 보관이 모두 활성화된 경우 Amazon SNS는 먼저 주제의 데이터 스토어에서 메시지를 검색한 다음 구독의 FilterPolicy에 대해 메시지를 적용합니다. 일치하는 항목이 있으면 메시지가 구독된 엔드포인트로 전송되고 그렇지 않으면 메시지가 필터링됩니다. 자세한 내용은 Amazon SNS 구독 필터 정책 섹션을 참조하세요.

Amazon CloudWatch를 사용하여 메시지 재생 지표 모니터링

Amazon CloudWatch에서 다음 지표를 사용하여 재생 메시지를 모니터링할 수 있습니다. 워크로드의 이상 현상에 대한 알림을 받고 관련 영향을 방지하기 위해 이러한 지표에 Amazon CloudWatch 경보를 구성할 수 있습니다. 자세한 내용은 Amazon SNS의 로깅 및 모니터링을(를) 참조하십시오.

지표 Description

NumberOfReplayedNotificationsDelivered

구독자에게 주제 아카이브에서 재생된 총 메시지 수를 1분 단위로 제공합니다.

NumberOfReplayedNotificationsFailed

구독자에게 주제 아카이브에서 전송에 실패한 재생된 총 메시지 수를 1분 단위로 제공합니다.