Amazon Simple Notification Service 작업 - AWS SDK for Java 2.x

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

Amazon Simple Notification Service 작업

Amazon Simple Notification Service를 사용하면 여러 통신 채널을 통해 애플리케이션의 실시간 알림 메시지를 구독자에게 쉽게 푸시할 수 있습니다. 이 항목에서는 Amazon SNS의 기본 기능을 수행하는 방법을 설명합니다.

주제 생성

주제는 메시지를 전송할 시스템을 정의하는 통신 채널의 논리적 그룹화입니다(예: 메시지를 AWS Lambda 및 HTTP Webhook에 팬 아웃). 메시지를 Amazon SNS에 전송하면 메시지는 주제에 정의된 채널로 배포됩니다. 이렇게 하면 구독자가 메시지를 사용할 수 있게 됩니다.

주제를 생성하려면 먼저 빌더의 name() 메서드를 사용하여 세트 이름을 설정하여 CreateTopicRequest 객체를 빌드합니다. 그런 다음 SnsClientcreateTopic() 메서드를 사용하여 요청 객체를 Amazon SNS에 전송합니다. 다음 코드 조각과 같이, 이 요청의 결과를 CreateTopicResponse 객체로 캡처할 수 있습니다.

가져오기

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.CreateTopicRequest; import software.amazon.awssdk.services.sns.model.CreateTopicResponse; import software.amazon.awssdk.services.sns.model.SnsException;

코드

public static String createSNSTopic(SnsClient snsClient, String topicName ) { CreateTopicResponse result = null; try { CreateTopicRequest request = CreateTopicRequest.builder() .name(topicName) .build(); result = snsClient.createTopic(request); return result.topicArn(); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }

GitHub의 전체 예제를 참조하세요.

Amazon SNS 주제 나열

기존 Amazon SNS 주제의 목록을 검색하려면 ListTopicsRequest 객체를 빌드합니다. 그런 다음 SnsClientlistTopics() 메서드를 사용하여 요청 객체를 Amazon SNS에 전송합니다. 이 요청의 결과를 ListTopicsResponse 객체로 캡처할 수 있습니다.

다음 코드 조각은 요청의 HTTP 상태 코드와 Amazon SNS 주제의 Amazon 리소스 이름(ARN) 목록을 인쇄합니다.

가져오기

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.ListTopicsRequest; import software.amazon.awssdk.services.sns.model.ListTopicsResponse; import software.amazon.awssdk.services.sns.model.SnsException;

코드

public static void listSNSTopics(SnsClient snsClient) { try { ListTopicsRequest request = ListTopicsRequest.builder() .build(); ListTopicsResponse result = snsClient.listTopics(request); System.out.println("Status was " + result.sdkHttpResponse().statusCode() + "\n\nTopics\n\n" + result.topics()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

GitHub의 전체 예제를 참조하세요.

주제에 엔드포인트 구독 설정

주제를 생성한 후 해당 주제의 엔드포인트가 될 통신 채널을 구성할 수 있습니다. Amazon SNS가 메시지를 수신한 후 메시지는 이러한 엔드포인트에 배포됩니다.

통신 채널을 주제의 엔드포인트로 구성하려면 해당 엔드포인트가 주제에 구독하도록 설정합니다. 시작하려면 SubscribeRequest 객체를 빌드합니다. 통신 채널(예: lambda 또는 email)을 protocol()로 지정합니다. endpoint()을 관련 출력 위치(예: Lambda 함수의 ARN 또는 이메일 주소)로 설정한 다음, 구독하려는 주제의 ARN을 topicArn()으로 설정합니다. 그런 다음 SnsClientsubscribe() 메서드를 사용하여 요청 객체를 Amazon SNS에 전송합니다. 이 요청의 결과를 SubscribeResponse 객체로 캡처할 수 있습니다.

다음 코드 조각은 전자 메일 주소가 주제를 구독하도록 설정하는 방법을 보여 줍니다.

가져오기

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.SnsException; import software.amazon.awssdk.services.sns.model.SubscribeRequest; import software.amazon.awssdk.services.sns.model.SubscribeResponse;

코드

public static void subEmail(SnsClient snsClient, String topicArn, String email) { try { SubscribeRequest request = SubscribeRequest.builder() .protocol("email") .endpoint(email) .returnSubscriptionArn(true) .topicArn(topicArn) .build(); SubscribeResponse result = snsClient.subscribe(request); System.out.println("Subscription ARN: " + result.subscriptionArn() + "\n\n Status is " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

GitHub의 전체 예제를 참조하세요.

주제에 메시지 게시

주제를 생성하고 주제에 대해 하나 이상의 엔드포인트를 구성한 후에는 메시지를 주제에 게시할 수 있습니다. 시작하려면 PublishRequest 객체를 빌드합니다. 전송할 message()와 메시지를 전송할 주제의 ARN(topicArn())을 지정합니다. 그런 다음 SnsClientpublish() 메서드를 사용하여 요청 객체를 Amazon SNS에 전송합니다. 이 요청의 결과를 PublishResponse 객체로 캡처할 수 있습니다.

가져오기

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.PublishRequest; import software.amazon.awssdk.services.sns.model.PublishResponse; import software.amazon.awssdk.services.sns.model.SnsException;

코드

public static void pubTopic(SnsClient snsClient, String message, String topicArn) { try { PublishRequest request = PublishRequest.builder() .message(message) .topicArn(topicArn) .build(); PublishResponse result = snsClient.publish(request); System.out.println(result.messageId() + " Message sent. Status is " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

GitHub의 전체 예제를 참조하세요.

주제에서 엔드포인트 구독 취소

주제의 엔드포인트로 구성된 통신 채널을 제거할 수 있습니다. 이렇게 한 후에도 주제 자체는 계속 존재하며 해당 주제에 대해 구성된 다른 엔드포인트에 메시지를 배포합니다.

주제의 엔드포인트로 구성된 통신 채널을 제거하려면 주제에서 해당 엔드포인트의 구독을 해지합니다. 시작하려면 UnsubscribeRequest 객체를 빌드하고 구독 해지할 주제의 ARN을 subscriptionArn()으로 설정합니다. 그런 다음 SnsClientunsubscribe() 메서드를 사용하여 요청 객체를 SNS에 전송합니다. 이 요청의 결과를 UnsubscribeResponse 객체로 캡처할 수 있습니다.

가져오기

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.SnsException; import software.amazon.awssdk.services.sns.model.UnsubscribeRequest; import software.amazon.awssdk.services.sns.model.UnsubscribeResponse;

코드

public static void unSub(SnsClient snsClient, String subscriptionArn) { try { UnsubscribeRequest request = UnsubscribeRequest.builder() .subscriptionArn(subscriptionArn) .build(); UnsubscribeResponse result = snsClient.unsubscribe(request); System.out.println("\n\nStatus was " + result.sdkHttpResponse().statusCode() + "\n\nSubscription was removed for " + request.subscriptionArn()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

GitHub의 전체 예제를 참조하세요.

주제 삭제

Amazon SNS 주제를 삭제하려면 먼저 빌더에서 주제 세트의 ARN을 topicArn() 메서드로 사용하여 DeleteTopicRequest 객체를 빌드합니다. 그런 다음 SnsClientdeleteTopic() 메서드를 사용하여 요청 객체를 Amazon SNS에 전송합니다. 다음 코드 조각과 같이, 이 요청의 결과를 DeleteTopicResponse 객체로 캡처할 수 있습니다.

가져오기

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.DeleteTopicRequest; import software.amazon.awssdk.services.sns.model.DeleteTopicResponse; import software.amazon.awssdk.services.sns.model.SnsException;

코드

public static void deleteSNSTopic(SnsClient snsClient, String topicArn ) { try { DeleteTopicRequest request = DeleteTopicRequest.builder() .topicArn(topicArn) .build(); DeleteTopicResponse result = snsClient.deleteTopic(request); System.out.println("\n\nStatus was " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

GitHub의 전체 예제를 참조하세요.

자세한 내용은 Amazon Simple Notification Service 개발자 안내서를 참조하세요.