다른 계정의 Amazon SQS 대기열로 Amazon SNS 메시지 전송 - Amazon Simple Notification Service

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

다른 계정의 Amazon SQS 대기열로 Amazon SNS 메시지 전송

이 문서에서는 다른 계정의 Amazon SQS 대기열에 하나 이상의 구독을 가진 Amazon SNS 주제에 알림을 게시하는 방법을 설명합니다. 동일한 계정에서와 같은 방법으로 주제 및 대기열을 설정합니다(Amazon SQS 대기열로 팬아웃 참조). 주요 차이점은 구독 확인을 처리하는 방법이며 주제에 대한 대기열을 구독하는 방법에 따라 다릅니다.

대기열 소유자가 구독을 생성할 때 확인이 자동으로 이루어지므로, 가능하다면 대기열 소유자가 구독 생성 섹션에서 참조하는 단계를 따르는 것이 좋습니다.

참고

Amazon SQS 대기열의 메시지 양이 많은 경우 대기열 소유자가 구독을 생성하는 것이 좋습니다.

대기열 소유자 구독 생성

Amazon SQS 대기열을 생성한 계정이 대기열 소유자입니다. 대기열 소유자가 구독을 생성할 경우 구독 확인은 필요하지 않습니다. 대기열은 Subscribe 작업이 완료되자마자 주제로부터의 알림 수신을 시작합니다. 대기열 소유자가 주제 소유자의 주제를 구독하려면 해당 주제 소유자가 대기열 소유자의 계정에 해당 주제에 대한 Subscribe 작업을 호출할 수 있는 권한을 부여해야 합니다.

1단계: AWS Management Console을 사용하여 주제 정책을 설정하려면

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

  2. 탐색 창에서 주제(Topics)를 선택합니다.

  3. 주제를 선택한 다음 편집을 선택합니다.

  4. MyTopic 편집 페이지에서 액세스 정책 섹션을 확장합니다.

  5. 다음 정책을 입력합니다.

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": "sns:Subscribe", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }

    이 정책은 계정 111122223333에 계정 123456789012에서 MyTopic에 대해 sns:Subscribe를 호출할 수 있는 권한을 부여합니다.

    계정 111122223333에 대한 자격 증명을 가진 사용자가 MyTopic을 구독할 수 있습니다. 이 권한을 사용하면 계정 ID에서 해당 IAM 사용자/역할에 권한을 위임할 수 있습니다. 루트 계정 또는 관리자 사용자만 sns:Subscribe를 호출할 수 있습니다. IAM 사용자/역할도 대기열에서 구독하려면 sns:subscribe 권한이 있어야 합니다.

  6. 변경 사항 저장을 선택합니다.

    계정 111122223333에 대한 자격 증명을 가진 사용자가 MyTopic을 구독할 수 있습니다.

2단계: AWS Management Console을 사용하여 다른 AWS 계정의 주제에 Amazon SQS 대기열 구독을 추가하려면

시작하기 전에 주제 및 대기열에 대한 ARN이 있고 대기열에 메시지를 보낼 수 있는 주제에 대한 권한을 부여했는지 확인합니다.

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

  2. 탐색 창에서 대기열(Queues)을 선택합니다.

  3. 대기열 목록에서 Amazon SNS 주제를 구독할 대기열을 선택합니다.

  4. Subscribe to Amazon SNS topic(Amazon SNS 주제 구독)을 선택합니다.

  5. 이 대기열 메뉴에 사용 가능한 Amazon SNS 주제 지정(Specify an Amazon SNS topic available for this queue menu)에서 대기열에 대해 Amazon SNS 주제(Amazon SNS topic)를 선택합니다.

  6. Amazon SNS 주제 ARN 입력(Enter Amazon SNS topic ARN)을 선택한 다음 주제의 Amazon 리소스 이름(ARN)을 입력합니다.

  7. 저장을 선택합니다.

    참고
    • 서비스와 통신할 수 있으려면 대기열에 Amazon SNS에 대한 권한이 있어야 합니다.

    • 사용자가 대기열의 소유자이므로 구독을 확인할 필요가 없습니다.

대기열을 소유하지 않지만 구독을 생성하는 사용자

구독을 생성하지만 대기열 소유자가 아닌 사용자는 구독을 확인해야 합니다.

Subscribe 작업을 사용하면 Amazon SNS에서 대기열에 구독 확인을 보냅니다. 구독이 Amazon SNS 콘솔에 표시되고 해당 구독 ID가 확인 보류 중으로 설정되어 있습니다.

구독을 확인하려면 대기열로부터의 메시지를 읽을 수 있는 권한이 있는 사용자가 구독 확인 URL을 검색해야 하며, 구독 소유자는 구독 확인 URL을 사용하여 구독을 확인해야 합니다. 구독이 확인되기 전에는 주제에 게시된 알림은 대기열로 전송되지 않습니다. 구독을 확인하려면 Amazon SQS 콘솔 또는 ReceiveMessage 작업을 사용합니다.

참고

주제에 엔드포인트를 구독하기 전에 대기열에 대한 sqs:SendMessage 권한을 설정하여 대기열이 주제로부터 메시지를 받을 수 있는지 확인합니다. 자세한 내용은 2단계: Amazon SQS 대기열에 메시지를 전송하도록 Amazon SNS 주제에 권한 부여 섹션을 참조하세요.

1단계: AWS Management Console을 사용하여 다른 AWS 계정의 주제에 Amazon SQS 대기열 구독을 추가하려면

시작하기 전에 주제 및 대기열에 대한 ARN이 있고 대기열에 메시지를 보낼 수 있는 주제에 대한 권한을 부여했는지 확인합니다.

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

  2. 탐색 창에서 구독을 선택합니다.

  3. 구독 페이지에서 구독 생성을 선택합니다.

  4. 구독 생성 페이지의 세부 정보 섹션에서 다음을 수행합니다.

    1. 주제 ARN에 주제의 ARN을 입력합니다.

    2. 프로토콜에서 Amazon SQS를 선택합니다.

    3. 엔드포인트에 대기열의 ARN을 입력합니다.

    4. 구독 생성을 선택합니다.

      참고
      • 서비스와 통신할 수 있으려면 대기열에 Amazon SNS에 대한 권한이 있어야 합니다.

다음은 Amazon SNS 주제가 Amazon SQS 대기열에 메시지를 전송하도록 허용하는 정책 문 예제입니다.

{ "Sid": "Stmt1234", "Effect": "Allow", "Principal": "*", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-west-2:111111111111:QueueName", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-west-2:555555555555:TopicName" } } }

2단계: AWS Management Console을 사용하여 구독을 확인하려면

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

  2. 주제에 대한 대기 중인 구독을 보유한 대기열을 선택합니다.

  3. Send and receive messages(메시지 보내기 및 받기)를 선택한 다음 Poll for messages(메시지 폴링)를 선택합니다.

    대기열에서 구독 확인 메시지가 수신됩니다.

  4. 본문 열에서 다음을 수행합니다.

    1. 추가 정보를 선택합니다.

    2. 메시지 세부 정보(Message Details) 대화 상자에서 SubscribeURL 값을 찾아서 확인합니다. 이 링크는 구독 링크입니다(아래 예). API 토큰 유효성 검사에 대한 자세한 내용은 Amazon SNS API 참조의 ConfirmSubscription 섹션을 참조하세요.

      https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-east-2:123456789012:MyTopic&Token=2336412f37fb...
    3. 구독 확인 링크를 기록해 둡니다. URL을 대기열 소유자에서 구독 소유자에게로 전달해야 합니다. 구독 소유자는 URL을 Amazon SNS 콘솔에 입력해야 합니다.

  5. 구독 소유자Amazon SNS 콘솔에 로그인하여 구독 소유자가 확인을 수행합니다.

  6. 관련 주제를 선택합니다.

  7. 주제의 구독 목록 테이블에서 관련 구독을 선택합니다. '확인 보류 중(Pending confirmation)'으로 표시됩니다.

  8. 구독 확인(Confirm subscription)을 선택합니다.

  9. 구독 확인 링크를 요청하는 모달이 나타납니다. 구독 확인 링크를 붙여넣습니다.

  10. 모달에서 구독 확인(Confirm subscription)을 선택합니다.

    XML 응답이 표시됩니다. 예를 들면 다음과 같습니다.

    <ConfirmSubscriptionResponse> <ConfirmSubscriptionResult> <SubscriptionArn>arn:aws:sns:us-east-2:123456789012:MyTopic:1234a567-bc89-012d-3e45-6fg7h890123i</SubscriptionArn> </ConfirmSubscriptionResult> <ResponseMetadata> <RequestId>abcd1efg-23hi-jkl4-m5no-p67q8rstuvw9</RequestId> </ResponseMetadata> </ConfirmSubscriptionResponse>

    구독된 대기열은 주제로부터 메시지를 수신할 준비가 되었습니다.

  11. (선택 사항) Amazon SNS 콘솔에서 주제 구독을 보는 경우 확인 보류 중 메시지가 구독 ID 열의 구독 ARN으로 대체되었음을 확인할 수 있습니다.

구독 취소 요청에 대한 인증을 요구하도록 구독을 강제하려면 어떻게 해야 합니까?

구독 소유자는 구독 확인 시 AuthenticateOnUnsubscribe 플래그를 true로 설정해야 합니다.

  • AuthenticateOnUnsubscribe는 대기열 소유자가 구독을 생성할 때 자동으로 true로 설정됩니다.

  • 인증 없이 구독 확인 링크로 이동하는 경우 AuthenticateOnUnsubscribe를 true로 설정할 수 없습니다.