Amazon SNS 주제에 대한 Amazon SQS 대기열 구독 - Amazon Simple Notification Service

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

Amazon SNS 주제에 대한 Amazon SQS 대기열 구독

Amazon SNS 주제가 Amazon SQS 대기열로 메시지를 보내도록 하려면 다음 중 하나를 수행합니다.

다른 AWS계정의 대기열에 메시지를 보내기 위해 주제를 생성하는 방법은 다른 계정의 Amazon SQS 대기열로 Amazon SNS 메시지 전송에서 확인하세요.

메시지를 두 대기열로 보내는 주제를 생성하는 AWS CloudFormation 템플릿을 보려면 섹션을 참조하세요SNS 를 사용하여 Amazon에서 Amazon SQS 메시징으로 자동화 AWS CloudFormation.

1단계: 대기열 및 주제ARN의 가져오기

주제에 대한 대기열을 구독할 때는 대기열에 ARN 대한 의 사본이 필요합니다. 마찬가지로 주제가 대기열로 메시지를 보낼 수 있는 권한을 부여할 때 주제에 ARN 대한 의 사본이 필요합니다.

대기열을 가져오려면 Amazon SQS 콘솔 또는 GetQueueAttributes API 작업을 사용할 ARN수 있습니다.

Amazon SQS 콘솔ARN에서 대기열을 가져오려면
  1. 에 로그인 AWS Management Console 하고 에서 Amazon SQS 콘솔을 엽니다https://console.aws.amazon.com/sqs/.

  2. 가져오ARN려는 대기열의 상자를 선택합니다.

  3. 세부 정보 섹션에서 ARN 값을 복사하여 Amazon SNS 주제를 구독하는 데 사용할 수 있도록 합니다.

주제 를 가져오려면 Amazon SNS 콘솔ARN, sns-get-topic-attributes 명령 또는 GetQueueAttributes API 작업을 사용할 수 있습니다.

Amazon SNS 콘솔ARN에서 주제를 가져오려면
  1. Amazon SNS 콘솔 에 로그인합니다.

  2. 탐색 패널에서 가져오ARN려는 주제를 선택합니다.

  3. 세부 정보 섹션에서 ARN 값을 복사하여 Amazon SNS 주제가 대기열로 메시지를 보낼 수 있는 권한을 부여하는 데 사용할 수 있습니다.

2단계: Amazon SNS 주제에 Amazon SQS 대기열로 메시지를 보낼 수 있는 권한을 부여합니다.

Amazon SNS 주제가 대기열로 메시지를 보낼 수 있으려면 Amazon SNS 주제가 sqs:SendMessage 작업을 수행할 수 있도록 대기열에 정책을 설정해야 합니다.

대기열에서 주제를 구독하기 전에 주제 및 대기열이 필요합니다. 주제 또는 대기열을 아직 생성하지 않은 경우, 지금 생성합니다. 자세한 정보는 주제 생성을 참조하고 Amazon Simple Queue Service 개발자 안내서대기열 생성을 참조하세요.

대기열에 정책을 설정하려면 Amazon SQS 콘솔 또는 SetQueueAttributes API 작업을 사용할 수 있습니다. 시작하기 전에 가 대기열로 메시지를 보내도록 허용할 주제에 ARN 대한 가 있는지 확인합니다. 대기열에서 여러 주제를 구독하는 경우 정책은 각 주제에 대해 하나의 Statement 요소를 포함해야 합니다.

Amazon SQS 콘솔을 사용하여 대기열에 SendMessage 정책을 설정하려면
  1. 에 로그인 AWS Management Console 하고 에서 Amazon SQS 콘솔을 엽니다https://console.aws.amazon.com/sqs/.

  2. 정책을 설정하려는 대기열의 상자를 선택하고 액세스 정책 탭을 선택한 다음 편집을 선택합니다.

  3. 액세스 정책 섹션에서 대기열에 액세스할 수 있는 사람을 정의합니다.

    • 주제의 작업을 허용하는 조건을 추가합니다.

    • 아래 예제와 같이 Principal를 Amazon SNS 서비스로 설정합니다.

    • 혼동된 대리자 시나리오를 방지하기 위해 aws:SourceArn 또는 aws:SourceAccount 전역 조건 키를 사용합니다. 이러한 조건 키를 사용하려면 값을 주제ARN의 로 설정합니다. 대기열에서 여러 주제를 구독하는 경우 aws:SourceAccount를 대신 사용할 수 있습니다.

    예를 들어, 다음 정책은 MyTopic 가 메시지를 로 전송할 수 있도록 허용합니다 MyQueue.

    { "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-2:123456789012:MyQueue", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:MyTopic" } } } ] }

3단계: Amazon SNS 주제에 대한 대기열 구독

주제를 통해 대기열로 메시지를 보내려면 Amazon SNS 주제에 대한 대기열을 구독해야 합니다. 대기열을 로 지정합니다ARN. 주제를 구독하려면 Amazon SNS 콘솔, sns-subscribe CLI 명령 또는 Subscribe API 작업을 사용할 수 있습니다. 시작하기 전에 구독하려는 대기열에 ARN 대한 가 있는지 확인합니다.

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

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

  3. 주제 페이지에서 주제를 선택합니다.

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

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

    1. 주제 ARN를 확인합니다.

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

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

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

    구독이 확인되면 새 구독의 구독 ID는 구독 ID를 표시합니다. 대기열 소유자가 구독을 생성하면 구독은 자동으로 확인되며 거의 즉시 활성화됩니다.

    일반적으로 사용자는 소유한 주제에 대해 사용자 계정의 자체 대기열을 구독합니다. 하지만 다른 계정의 대기열에서 주제를 구독할 수도 있습니다. 구독을 생성한 사용자가 대기열의 소유자가 아닐 경우(예. 계정 A의 사용자가 계정 A의 주제에 대해 계정 B의 대기열을 구독할 경우) 구독이 확인되어야 합니다. 다른 계정에서 대기열 구독 및 구독 확인에 대한 자세한 정보는 다른 계정의 Amazon SQS 대기열로 Amazon SNS 메시지 전송에서 확인하세요.

4단계: 사용자에게 적절한 주제 및 대기열 작업에 대한 권한 부여

적절한 사용자만 Amazon SNS 주제에 게시하고 Amazon SQS 대기열에서 메시지를 읽거나 삭제할 수 있도록 하려면 AWS Identity and Access Management (IAM)를 사용해야 합니다. IAM 사용자의 주제 및 대기열에 대한 작업 제어에 대한 자세한 내용은 Amazon Simple Queue Service 개발자 안내서의 Amazon에서 자격 증명 기반 정책 사용 SNSAmazon의 자격 증명 및 액세스 관리를 SQS 참조하세요.

주제 또는 대기열에 대한 액세스를 제어하는 다음의 두 가지 방법이 있습니다.

  • IAM 사용자 또는 그룹에 정책을 추가합니다. 사용자에게 주제 또는 대기열에 대한 권한을 부여하는 가장 간단한 방법은 그룹을 생성하고 그룹에 적절한 정책을 추가한 후 사용자를 추가하는 것입니다. 그룹에서 사용자를 추가하거나 제거하는 것이 각각의 사용자에 대해 설정한 정책을 추적하는 것보다 훨씬 쉽습니다.

  • 주제 또는 대기열에 대한 정책을 추가합니다. 주제 또는 대기열에 대한 권한을 다른 AWS 계정에 부여하려는 경우 권한을 부여 AWS 계정 하려는 보안 주체가 인 정책을 추가하는 것이 유일한 방법입니다.

사용자는 대부분의 경우 첫 번째 방법을 사용해야 합니다(그룹에 정책을 적용하여 해당 그룹에 적절한 사용자를 추가 및 제거함으로써 사용자에 대한 권한을 관리). 또 다른 계정의 사용자에게 권한을 부여해야할 경우에는 두 번째 방법을 사용해야 합니다.

IAM 사용자 또는 그룹에 정책 추가

IAM 사용자 또는 그룹에 다음 정책을 추가한 경우 해당 사용자 또는 해당 그룹의 구성원에게 주제에 대한 sns:Publish 작업을 수행할 수 있는 권한을 부여해야 합니다 MyTopic.

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

IAM 사용자 또는 그룹에 다음 정책을 추가한 경우 해당 사용자 또는 해당 그룹의 멤버에게 대기열 MyQueue1 및 MyQueue2에서 sqs:ReceiveMessagesqs:DeleteMessage 작업을 수행할 수 있는 권한을 부여해야 합니다.

{ "Statement": [ { "Effect": "Allow", "Action": [ "sqs:ReceiveMessage", "sqs:DeleteMessage" ], "Resource": [ "arn:aws:sqs:us-east-2:123456789012:MyQueue1", "arn:aws:sqs:us-east-2:123456789012:MyQueue2" ] } ] }

주제 또는 대기열에 대한 정책 추가

다음의 정책 예제는 또 다른 계정에 주제 및 대기열에 대한 권한을 부여하는 방법을 보여줍니다.

참고

계정의 리소스에 대한 다른 AWS 계정 액세스 권한을 부여하면 해당 리소스에 대한 관리자 수준 액세스 권한(와일드카드 액세스 권한)을 가진 IAM 사용자에게도 부여됩니다. 다른 계정의 다른 모든 IAM 사용자는 리소스에 대한 액세스가 자동으로 거부됩니다. 해당 AWS 계정 리소스의 특정 IAM 사용자에게 리소스에 대한 액세스 권한을 부여하려면 계정 또는 관리자 수준 액세스 권한이 있는 IAM 사용자가 해당 IAM 사용자에게 리소스에 대한 권한을 위임해야 합니다. 교차 계정 위임에 대한 자세한 내용은 사용 IAM 설명서교차 계정 액세스 활성화를 참조하세요.

계정 123456789012 MyTopic 의 주제에 다음 정책을 추가한 경우 계정 111122223333에 해당 주제에 대한 sns:Publish 작업을 수행할 수 있는 권한을 부여합니다.

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

계정 123456789012의 대기열 MyQueue 에 다음 정책을 추가한 경우 계정 111122223333에 해당 대기열에서 sqs:ReceiveMessagesqs:DeleteMessage 작업을 수행할 수 있는 권한을 부여합니다.

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": [ "sqs:DeleteMessage", "sqs:ReceiveMessage" ], "Resource": [ "arn:aws:sqs:us-east-2:123456789012:MyQueue" ] } ] }

5단계: 주제의 대기열 구독 테스트

주제를 게시하고 주제가 대기열에 전송한 메시지를 확인함으로써 주제의 대기열 구독을 테스트할 수 있습니다.

Amazon SNS 콘솔을 사용하여 주제에 게시하려면
  1. 주제에 게시할 권한이 있는 AWS 계정 또는 IAM 사용자의 보안 인증을 사용하여 에 로그인 AWS Management Console 하고 에서 Amazon SNS 콘솔을 엽니다https://console.aws.amazon.com/sns/.

  2. 탐색 창에서 주제를 선택하고 주제 게시를 선택합니다.

  3. 제목 상자에 제목을 입력하고(예: Testing publish to queue), 메시지 상자에 텍스트를 입력한 후(예: Hello world!), 메시지 게시를 선택합니다. 다음의 메시지가 나타납니다. Your message has been successfully published.

Amazon SQS 콘솔을 사용하여 주제의 메시지를 보려면
  1. 대기열에서 메시지를 볼 수 있는 권한이 있는 AWS 계정 또는 IAM 사용자의 자격 증명을 사용하여 에 로그인 AWS Management Console 하고 에서 Amazon SQS 콘솔을 엽니다https://console.aws.amazon.com/sqs/.

  2. 주제를 구독하는 대기열을 선택합니다.

  3. Send and receive messages(메시지 보내기 및 받기)를 선택한 다음 Poll for messages(메시지 폴링)를 선택합니다. 알림 유형으로 된 메시지가 표시됩니다.

  4. 본문 열에서 추가 정보를 선택합니다. 메시지 세부 정보 상자에는 주제에 게시한 주제와 메시지가 포함된 JSON 문서가 포함되어 있습니다. 메시지는 다음 JSON 문서와 비슷합니다.

    { "Type" : "Notification", "MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Subject" : "Testing publish to subscribed queues", "Message" : "Hello world!", "Timestamp" : "2012-03-29T05:12:16.901Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEnTrFPa3...", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem", "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee" }
  5. 닫기를 선택하세요. 대기열에 알림 메시지를 전송하는 주제를 성공적으로 게시했습니다.