AWS SDK for JavaScript V3 API 참조 가이드는 버전 3(V3)의 모든 API 작업에 대해 AWS SDK for JavaScript 자세히 설명합니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon SNS에서 구독 관리
이 Node.js 코드 예제는 다음을 보여 줍니다.
-
Amazon SNS 주제의 모든 구독을 나열하는 방법
-
이메일 주소, 애플리케이션 엔드포인트 또는 AWS Lambda 함수에서 Amazon SNS 주제를 구독하는 방법
-
Amazon SNS 주제의 구독을 취소하는 방법
시나리오
이 예에서는 일련의 Node.js 모듈을 사용하여 Amazon SNS 주제에 알림 메시지를 게시합니다. 이 Node.js 모듈은 SDK for JavaScript에서 SNS
클라이언트 클래스의 다음 메서드를 사용하여 주제를 관리합니다.
사전 필수 작업
이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.
-
이러한 노드 TypeScript 예를 실행하도록 프로젝트 환경을 설정하고 필수 AWS SDK for JavaScript 모듈과 타사 모듈을 설치합니다. GitHub
의 지침을 따릅니다. -
사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 보안 인증 파일 제공에 관한 자세한 내용은 AWS SDK 및 도구 참조 가이드의 Shared config and credentials files 단원을 참조하세요.
중요
이 예는 ECMAScript6(ES6)를 사용하여 클라이언트 서비스 객체 및 명령을 가져오거나 내보내는 방법을 보여줍니다.
따라서 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js를 다운로드하여 설치하려면 Node.js downloads
를 참조하세요. CommonJS 구문을 사용하려는 경우 JavaScript ES6/CommonJS 구문 단원을 참조하세요.
주제에 대한 구독 나열
이 예에서는 Node.js 모듈을 사용하여 Amazon SNS 주제에 대한 모든 구독을 나열합니다.
libs
디렉터리를 생성하고 파일 이름이 snsClient.js
인 Node.js 모듈을 생성합니다. 이 모듈에 아래 코드를 복사하여 붙여 넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. REGION
을 AWS 리전으로 바꿉니다.
import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});
이 코드 예는 여기 GitHub에서
파일 이름이 list-subscriptions-by-topic.js
인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.
구독을 나열할 주제에 대한 TopicArn
파라미터를 포함하는 객체를 생성합니다. SNS
클라이언트 클래스의 ListSubscriptionsByTopicCommand
메서드에 파라미터를 전달합니다. ListSubscriptionsByTopicCommand
메서드를 직접적으로 호출하려면 Amazon SNS 클라이언트 서비스 객체를 간접적으로 호출하는 비동기 함수를 생성하여 파라미터 객체를 전달합니다.
참고
TOPIC_ARN
을 구독을 나열하려는 주제의 Amazon 리소스 이름(ARN)으로 바꿉니다.
import { ListSubscriptionsByTopicCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} topicArn - The ARN of the topic for which you wish to list subscriptions. */ export const listSubscriptionsByTopic = async (topicArn = "TOPIC_ARN") => { const response = await snsClient.send( new ListSubscriptionsByTopicCommand({ TopicArn: topicArn }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '0934fedf-0c4b-572e-9ed2-a3e38fadb0c8', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // Subscriptions: [ // { // SubscriptionArn: 'PendingConfirmation', // Owner: '901487484989', // Protocol: 'email', // Endpoint: 'corepyle@amazon.com', // TopicArn: 'arn:aws:sns:us-east-1:901487484989:mytopic' // } // ] // } return response; };
예를 실행하려면 명령 프롬프트에서 다음을 입력합니다.
node list-subscriptions-by-topic.js
이 코드 예는 여기 GitHub에서
이메일 주소에서 주제 구독
이 예에서는 Node.js 모듈을 사용하여 이메일 주소에서 Amazon SNS 주제의 SMTP 이메일 메시지를 수신하도록 이메일 주소에서 주제를 구독합니다.
libs
디렉터리를 생성하고 파일 이름이 snsClient.js
인 Node.js 모듈을 생성합니다. 이 모듈에 아래 코드를 복사하여 붙여 넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. REGION
을 AWS 리전으로 바꿉니다.
import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});
이 코드 예는 여기 GitHub에서
파일 이름이 subscribe-email.js
인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.
email
프로토콜, 구독할 주제의 TopicArn
, 메시지 Endpoint
로 사용되는 이메일 주소를 지정하기 위한 Protocol
파라미터를 포함하는 객체를 생성합니다. SNS
클라이언트 클래스의 SubscribeCommand
메서드에 파라미터를 전달합니다. 이 항목의 다른 예에 나와 있듯이, subscribe
메서드를 사용하면 전달된 파라미터에 사용되는 값에 따라 여러 다양한 엔드포인트에서 Amazon SNS 주제를 구독할 수 있습니다.
SubscribeCommand
메서드를 직접적으로 호출하려면 Amazon SNS 클라이언트 서비스 객체를 간접적으로 호출하는 비동기 함수를 생성하여 파라미터 객체를 전달합니다.
참고
TOPIC_ARN
을 주제의 Amazon 리소스 이름(ARN)으로 바꾸고, EMAIL_ADDRESS
를 구독할 이메일 주소로 바꿉니다.
import { SubscribeCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} topicArn - The ARN of the topic for which you wish to confirm a subscription. * @param {string} emailAddress - The email address that is subscribed to the topic. */ export const subscribeEmail = async ( topicArn = "TOPIC_ARN", emailAddress = "usern@me.com", ) => { const response = await snsClient.send( new SubscribeCommand({ Protocol: "email", TopicArn: topicArn, Endpoint: emailAddress, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: 'c8e35bcd-b3c0-5940-9f66-06f6fcc108f0', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // SubscriptionArn: 'pending confirmation' // } };
예를 실행하려면 명령 프롬프트에서 다음을 입력합니다.
node subscribe-email.js
이 코드 예는 여기 GitHub에서
구독 확인
이 예에서는 Node.js 모듈을 사용하여 이전 구독 작업에서 엔드포인트로 전송한 토큰을 검증함으로써 엔드포인트 소유자의 이메일 수신 의도를 확인합니다.
libs
디렉터리를 생성하고 파일 이름이 snsClient.js
인 Node.js 모듈을 생성합니다. 이 모듈에 아래 코드를 복사하여 붙여 넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. REGION
을 AWS 리전으로 바꿉니다.
import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});
이 코드 예는 여기 GitHub에서
파일 이름이 confirm-subscription.js
인 Node.js 모듈을 생성합니다. 필수 클라이언트 및 패키지 설치를 포함하여 앞서 나와 있는 것처럼 SDK를 구성합니다.
TOPIC_ARN
및 TOKEN
을 포함한 파라미터를 정의하고, AuthenticateOnUnsubscribe
에 대해 TRUE
또는 FALSE
값을 정의합니다.
토큰은 이전 SUBSCRIBE
작업 중에 엔드포인트 소유자에게 전송된 수명이 짧은 토큰입니다. 예를 들어 이메일 엔드포인트의 경우 TOKEN
은 이메일 소유자에게 전송된 구독 확인 이메일의 URL에 있습니다. 예를 들어 abc123
은 다음 URL의 토큰입니다.
ConfirmSubscriptionCommand
메서드를 직접적으로 호출하려면 Amazon SNS 클라이언트 서비스 객체를 간접적으로 호출하는 비동기 함수를 생성하여 파라미터 객체를 전달합니다.
참고
TOPIC_ARN
을 주제의 Amazon 리소스 이름(ARN)으로 바꾸고, TOKEN
을 이전 Subscribe
작업에서 엔드포인트 소유자에게 전송한 URL의 토큰 값으로 바꾸고 AuthenticateOnUnsubscribe
를 정의합니다. TRUE
또는 FALSE
값을 사용합니다.
import { ConfirmSubscriptionCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} token - This token is sent the subscriber. Only subscribers * that are not AWS services (HTTP/S, email) need to be confirmed. * @param {string} topicArn - The ARN of the topic for which you wish to confirm a subscription. */ export const confirmSubscription = async ( token = "TOKEN", topicArn = "TOPIC_ARN", ) => { const response = await snsClient.send( // A subscription only needs to be confirmed if the endpoint type is // HTTP/S, email, or in another AWS account. new ConfirmSubscriptionCommand({ Token: token, TopicArn: topicArn, // If this is true, the subscriber cannot unsubscribe while unauthenticated. AuthenticateOnUnsubscribe: "false", }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '4bb5bce9-805a-5517-8333-e1d2cface90b', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // SubscriptionArn: 'arn:aws:sns:us-east-1:xxxxxxxxxxxx:TOPIC_NAME:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' // } return response; };
예를 실행하려면 명령 프롬프트에서 다음을 입력합니다.
node confirm-subscription.js
이 코드 예는 여기 GitHub에서
애플리케이션 엔드포인트에서 주제 구독
이 예에서는 Node.js 모듈을 사용하여 모바일 애플리케이션 엔드포인트에서 Amazon SNS 주제의 알림을 수신하도록 모바일 애플리케이션 엔드포인트에서 주제를 구독합니다.
libs
디렉터리를 생성하고 파일 이름이 snsClient.js
인 Node.js 모듈을 생성합니다. 이 모듈에 아래 코드를 복사하여 붙여 넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. REGION
을 AWS 리전으로 바꿉니다.
import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});
이 코드 예는 여기 GitHub에서
파일 이름이 subscribe-app.js
인 Node.js 모듈을 생성합니다. 필수 모듈 및 패키지 설치를 포함하여 앞서 나와 있는 것처럼 SDK를 구성합니다.
Protocol
파라미터가 포함된 객체를 생성하여 application
프로토콜, 구독할 주제의 TopicArn
, Endpoint
파라미터에 대한 모바일 애플리케이션 엔드포인트의 Amazon 리소스 이름(ARN)을 지정합니다. SNS
클라이언트 클래스의 SubscribeCommand
메서드에 파라미터를 전달합니다.
SubscribeCommand
메서드를 직접적으로 호출하려면 Amazon SNS 서비스 객체를 간접적으로 호출하는 비동기 함수를 생성하여 파라미터 객체를 전달합니다.
참고
TOPIC_ARN
을 주제의 Amazon 리소스 이름(ARN)으로 바꾸고, MOBILE_ENDPOINT_ARN
을 주제를 구독하는 엔드포인트로 바꿉니다.
import { SubscribeCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} topicArn - The ARN of the topic the subscriber is subscribing to. * @param {string} endpoint - The Endpoint ARN of an application. This endpoint is created * when an application registers for notifications. */ export const subscribeApp = async ( topicArn = "TOPIC_ARN", endpoint = "ENDPOINT", ) => { const response = await snsClient.send( new SubscribeCommand({ Protocol: "application", TopicArn: topicArn, Endpoint: endpoint, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: 'c8e35bcd-b3c0-5940-9f66-06f6fcc108f0', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // SubscriptionArn: 'pending confirmation' // } return response; };
예를 실행하려면 명령 프롬프트에서 다음을 입력합니다.
node subscribe-app.js
이 코드 예는 여기 GitHub에서
Lambda 함수에서 주제 구독
이 예에서는 Node.js 모듈을 사용하여 AWS Lambda 함수에서 Amazon SNS 주제의 알림을 수신하도록 Lambda 함수에서 주제를 구독합니다.
libs
디렉터리를 생성하고 파일 이름이 snsClient.js
인 Node.js 모듈을 생성합니다. 이 모듈에 아래 코드를 복사하여 붙여 넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. REGION
을 AWS 리전으로 바꿉니다.
import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});
이 코드 예는 여기 GitHub에서
파일 이름이 subscribe-lambda.js
인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.
Protocol
파라미터가 포함된 객체를 생성하여 lambda
프로토콜, 구독할 주제의 TopicArn
, AWS Lambda 함수의 Amazon 리소스 이름(ARN)을 Endpoint
파라미터로 지정합니다. SNS
클라이언트 클래스의 SubscribeCommand
메서드에 파라미터를 전달합니다.
SubscribeCommand
메서드를 직접적으로 호출하려면 Amazon SNS 클라이언트 서비스 객체를 간접적으로 호출하는 비동기 함수를 생성하여 파라미터 객체를 전달합니다.
참고
TOPIC_ARN
을 주제의 Amazon 리소스 이름(ARN)으로 바꾸고, LAMBDA_FUNCTION_ARN
을 Lambda 함수의 Amazon 리소스 이름(ARN)으로 바꿉니다.
import { SubscribeCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} topicArn - The ARN of the topic the subscriber is subscribing to. * @param {string} endpoint - The Endpoint ARN of and AWS Lambda function. */ export const subscribeLambda = async ( topicArn = "TOPIC_ARN", endpoint = "ENDPOINT", ) => { const response = await snsClient.send( new SubscribeCommand({ Protocol: "lambda", TopicArn: topicArn, Endpoint: endpoint, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: 'c8e35bcd-b3c0-5940-9f66-06f6fcc108f0', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // SubscriptionArn: 'pending confirmation' // } return response; };
예를 실행하려면 명령 프롬프트에서 다음을 입력합니다.
node subscribe-lambda.js
이 코드 예는 여기 GitHub에서
주제의 구독 취소
이 예에서는 Node.js 모듈을 사용하여 Amazon SNS 주제 구독을 취소합니다.
libs
디렉터리를 생성하고 파일 이름이 snsClient.js
인 Node.js 모듈을 생성합니다. 이 모듈에 아래 코드를 복사하여 붙여 넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. REGION
을 AWS 리전으로 바꿉니다.
import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});
이 코드 예는 여기 GitHub에서
파일 이름이 unsubscribe.js
인 Node.js 모듈을 생성합니다. 필수 클라이언트 및 패키지 설치를 포함하여 앞서 나와 있는 것처럼 SDK를 구성합니다.
SubscriptionArn
파라미터가 포함된 객체를 생성하여 취소할 구독의 Amazon 리소스 이름(ARN)을 지정합니다. SNS
클라이언트 클래스의 UnsubscribeCommand
메서드에 파라미터를 전달합니다.
UnsubscribeCommand
메서드를 직접적으로 호출하려면 Amazon SNS 클라이언트 서비스 객체를 간접적으로 호출하는 비동기 함수를 생성하여 파라미터 객체를 전달합니다.
참고
TOPIC_SUBSCRIPTION_ARN
을 취소할 구독의 Amazon 리소스 이름(ARN)으로 바꿉니다.
import { UnsubscribeCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} subscriptionArn - The ARN of the subscription to cancel. */ const unsubscribe = async ( subscriptionArn = "arn:aws:sns:us-east-1:xxxxxxxxxxxx:mytopic:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", ) => { const response = await snsClient.send( new UnsubscribeCommand({ SubscriptionArn: subscriptionArn, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '0178259a-9204-507c-b620-78a7570a44c6', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // } // } return response; };
예를 실행하려면 명령 프롬프트에서 다음을 입력합니다.
node unsubscribe.js
이 코드 예는 여기 GitHub에서