

AWS SDK for JavaScript v2가 지원 종료에 도달했습니다. [AWS SDK for JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/)로 마이그레이션하실 것을 권장합니다. 마이그레이션 방법에 대한 자세한 내용은 해당 [공지 사항](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)을 참조하세요.

# Amazon SNS에서 구독 관리
<a name="sns-examples-subscribing-unubscribing-topics"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**이 Node.js 코드 예제는 다음을 보여 줍니다.**
+ Amazon SNS 주제의 모든 구독을 나열하는 방법
+ 이메일 주소, 애플리케이션 엔드포인트 또는 AWS Lambda 함수에서 Amazon SNS 주제를 구독하는 방법
+ Amazon SNS 주제의 구독을 취소하는 방법

## 시나리오
<a name="sns-examples-subscribing-unubscribing-yopics-scenario"></a>

이 예에서는 일련의 Node.js 모듈을 사용하여 Amazon SNS 주제에 알림 메시지를 게시합니다. Node.js 모듈은 SDK for JavaScript로 `AWS.SNS` 클라이언트 클래스의 다음 메서드를 사용하여 주제를 관리합니다.
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#subscribe-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#subscribe-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#confirmSubscription-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#confirmSubscription-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#listSubscriptionsByTopic-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#listSubscriptionsByTopic-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#unsubscribe-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#unsubscribe-property)

## 사전 필수 작업
<a name="sns-examples-subscribing-unubscribing-topics-prerequisites"></a>

이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.
+ Node.js를 설치합니다. Node.js 설치에 대한 자세한 내용은 [Node.js 웹 사이트](http://nodejs.org)를 참조하세요.
+ 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 [공유 인증 자격 증명 파일에서 Node.js에 인증 자격 증명 로드](loading-node-credentials-shared.md) 섹션을 참조하세요.

## 주제에 대한 구독 나열
<a name="sns-examples-list-subscriptions-email"></a>

이 예에서는 Node.js 모듈을 사용하여 Amazon SNS 주제에 대한 모든 구독을 나열합니다. 파일 이름이 `sns_listsubscriptions.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.

구독을 나열할 주제에 대한 `TopicArn` 파라미터를 포함하는 객체를 생성합니다. `listSubscriptionsByTopic` 클라이언트 클래스의 `AWS.SNS` 메서드에 파라미터를 전달합니다. `listSubscriptionsByTopic` 메서드를 직접 호출하려면 파라미터 객체를 전달하는 Amazon SNS 서비스 객체를 간접 호출하기 위한 promise를 생성합니다. 그런 다음 promise 콜백에서 `response`를 처리합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set region
AWS.config.update({ region: "REGION" });

const params = {
  TopicArn: "TOPIC_ARN",
};

// Create promise and SNS service object
var subslistPromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .listSubscriptionsByTopic(params)
  .promise();

// Handle promise's fulfilled/rejected states
subslistPromise
  .then(function (data) {
    console.log(data);
  })
  .catch(function (err) {
    console.error(err, err.stack);
  });
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node sns_listsubscriptions.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_listsubscriptions.js)에서 찾을 수 있습니다.

## 이메일 주소에서 주제 구독
<a name="sns-examples-subscribing-email"></a>

이 예에서는 Node.js 모듈을 사용하여 이메일 주소에서 Amazon SNS 주제의 SMTP 이메일 메시지를 수신하도록 이메일 주소에서 주제를 구독합니다. 파일 이름이 `sns_subscribeemail.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.

`Protocol` 프로토콜, 구독할 주제의 `email`, 메시지 `TopicArn`로 사용되는 이메일 주소를 지정하기 위한 `Endpoint` 파라미터를 포함하는 객체를 생성합니다. `subscribe` 클라이언트 클래스의 `AWS.SNS` 메서드에 파라미터를 전달합니다. 이 항목의 다른 예에 나와 있듯이, `subscribe` 메서드를 사용하면 전달된 파라미터에 사용되는 값에 따라 여러 다양한 엔드포인트에서 Amazon SNS 주제를 구독할 수 있습니다.

`subscribe` 메서드를 직접 호출하려면 파라미터 객체를 전달하는 Amazon SNS 서비스 객체를 간접 호출하기 위한 promise를 생성합니다. 그런 다음 promise 콜백에서 `response`를 처리합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set region
AWS.config.update({ region: "REGION" });

// Create subscribe/email parameters
var params = {
  Protocol: "EMAIL" /* required */,
  TopicArn: "TOPIC_ARN" /* required */,
  Endpoint: "EMAIL_ADDRESS",
};

// Create promise and SNS service object
var subscribePromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .subscribe(params)
  .promise();

// Handle promise's fulfilled/rejected states
subscribePromise
  .then(function (data) {
    console.log("Subscription ARN is " + data.SubscriptionArn);
  })
  .catch(function (err) {
    console.error(err, err.stack);
  });
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node sns_subscribeemail.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_subscribeemail.js)에서 찾을 수 있습니다.

## 애플리케이션 엔드포인트에서 주제 구독
<a name="sns-examples-subscribing-apps"></a>

이 예에서는 Node.js 모듈을 사용하여 모바일 애플리케이션 엔드포인트에서 Amazon SNS 주제의 알림을 수신하도록 모바일 애플리케이션 엔드포인트에서 주제를 구독합니다. 파일 이름이 `sns_subscribeapp.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.

`Protocol` 프로토콜, 구독할 주제의 `application`, `TopicArn` 파라미터에 대한 모바일 애플리케이션 엔드포인트의 ARN을 지정하기 위한 `Endpoint` 파라미터를 포함하는 객체를 생성합니다. `subscribe` 클라이언트 클래스의 `AWS.SNS` 메서드에 파라미터를 전달합니다.

`subscribe` 메서드를 직접 호출하려면 파라미터 객체를 전달하는 Amazon SNS 서비스 객체를 간접 호출하기 위한 promise를 생성합니다. 그런 다음 promise 콜백에서 `response`를 처리합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set region
AWS.config.update({ region: "REGION" });

// Create subscribe/email parameters
var params = {
  Protocol: "application" /* required */,
  TopicArn: "TOPIC_ARN" /* required */,
  Endpoint: "MOBILE_ENDPOINT_ARN",
};

// Create promise and SNS service object
var subscribePromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .subscribe(params)
  .promise();

// Handle promise's fulfilled/rejected states
subscribePromise
  .then(function (data) {
    console.log("Subscription ARN is " + data.SubscriptionArn);
  })
  .catch(function (err) {
    console.error(err, err.stack);
  });
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node sns_subscribeapp.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_subscribeapp.js)에서 찾을 수 있습니다.

## Lambda 함수에서 주제 구독
<a name="sns-examples-subscribing-lambda"></a>

이 예에서는 Node.js 모듈을 사용하여 AWS Lambda 함수에서 Amazon SNS 주제의 알림을 수신하도록 Lambda 함수에서 주제를 구독합니다. 파일 이름이 `sns_subscribelambda.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.

`Protocol` 프로토콜, 구독할 주제의 `lambda`, `TopicArn` 파라미터로 사용되는 AWS Lambda 함수의 ARN을 지정하는 `Endpoint` 파라미터를 포함하는 객체를 생성합니다. `subscribe` 클라이언트 클래스의 `AWS.SNS` 메서드에 파라미터를 전달합니다.

`subscribe` 메서드를 직접 호출하려면 파라미터 객체를 전달하는 Amazon SNS 서비스 객체를 간접 호출하기 위한 promise를 생성합니다. 그런 다음 promise 콜백에서 `response`를 처리합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set region
AWS.config.update({ region: "REGION" });

// Create subscribe/email parameters
var params = {
  Protocol: "lambda" /* required */,
  TopicArn: "TOPIC_ARN" /* required */,
  Endpoint: "LAMBDA_FUNCTION_ARN",
};

// Create promise and SNS service object
var subscribePromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .subscribe(params)
  .promise();

// Handle promise's fulfilled/rejected states
subscribePromise
  .then(function (data) {
    console.log("Subscription ARN is " + data.SubscriptionArn);
  })
  .catch(function (err) {
    console.error(err, err.stack);
  });
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node sns_subscribelambda.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_subscribelambda.js)에서 찾을 수 있습니다.

## 주제의 구독 취소
<a name="sns-examples-unsubscribing"></a>

이 예에서는 Node.js 모듈을 사용하여 Amazon SNS 주제 구독을 취소합니다. 파일 이름이 `sns_unsubscribe.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.

구독 해제할 구독의 ARN을 지정하는 `SubscriptionArn` 파라미터를 포함하는 객체를 생성합니다. `unsubscribe` 클라이언트 클래스의 `AWS.SNS` 메서드에 파라미터를 전달합니다.

`unsubscribe` 메서드를 직접 호출하려면 파라미터 객체를 전달하는 Amazon SNS 서비스 객체를 간접 호출하기 위한 promise를 생성합니다. 그런 다음 promise 콜백에서 `response`를 처리합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set region
AWS.config.update({ region: "REGION" });

// Create promise and SNS service object
var subscribePromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .unsubscribe({ SubscriptionArn: TOPIC_SUBSCRIPTION_ARN })
  .promise();

// Handle promise's fulfilled/rejected states
subscribePromise
  .then(function (data) {
    console.log(data);
  })
  .catch(function (err) {
    console.error(err, err.stack);
  });
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node sns_unsubscribe.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_unsubscribe.js)에서 찾을 수 있습니다.