

 適用於 JavaScript 的 AWS SDK v2 已end-of-support。我們建議您遷移至 [適用於 JavaScript 的 AWS SDK 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 Simple Notification Service 範例
<a name="sns-examples"></a>

Amazon Simple Notification Service (Amazon SNS) 是一種 Web 服務，可協調和管理訊息傳遞或傳送至訂閱端點或用戶端。

在 Amazon SNS 中，有兩種類型的用戶端：發佈者和訂閱者，也稱為生產者和消費者。

![\[JavaScript 環境、軟體開發套件和 Amazon SNS 之間的關係\]](http://docs.aws.amazon.com/zh_tw/sdk-for-javascript/v2/developer-guide/images/code-samples-sns.png)


發佈者透過製作並傳送訊息到主題 (其為邏輯存取點和通訊管道) 與訂閱者進行非同步的通訊。訂閱者 (Web 伺服器、電子郵件地址、Amazon SQS 佇列、Lambda 函數） 會在訂閱主題時，透過其中一個支援的通訊協定 (Amazon SQS、HTTP/S、電子郵件、SMS AWS Lambda) 取用或接收訊息或通知。

Amazon SNS 的 JavaScript API 透過 公開[https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html)。

**Topics**
+ [

# 在 Amazon SNS 中管理主題
](sns-examples-managing-topics.md)
+ [

# 在 Amazon SNS 中發佈訊息
](sns-examples-publishing-messages.md)
+ [

# 在 Amazon SNS 中管理訂閱
](sns-examples-subscribing-unubscribing-topics.md)
+ [

# 使用 Amazon SNS 傳送簡訊
](sns-examples-sending-sms.md)

# 在 Amazon SNS 中管理主題
<a name="sns-examples-managing-topics"></a>

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

**這個 Node.js 程式碼範例會說明：**
+ 如何在 Amazon SNS 中建立主題，您可以將通知發佈到這些主題。
+ 如何刪除在 Amazon SNS 中建立的主題。
+ 如何取得可用主題的清單。
+ 如何取得和設定主題屬性。

## 使用案例
<a name="sns-examples-managing-topics-scenario"></a>

在此範例中，您可以使用一系列 Node.js 模組來建立、列出和刪除 Amazon SNS 主題，以及處理主題屬性。Node.js 模組使用適用於 JavaScript 的 SDK 來管理使用下列`AWS.SNS`用戶端類別方法的主題：
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#createTopic-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#createTopic-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#listTopics-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#listTopics-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#deleteTopic-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#deleteTopic-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#getTopicAttributes-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#getTopicAttributes-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#setTopicAttributes-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#setTopicAttributes-property)

## 先決條件任務
<a name="sns-examples-managing-topics-prerequisites"></a>

若要設定和執行此範例，您必須先完成這些任務：
+ 安裝 Node.js。如需安裝 Node.js 的詳細資訊，請參閱 [Node.js 網站](http://nodejs.org)。
+ 透過使用者登入資料建立共用組態檔。如需有關提供登入資料 JSON 檔案的詳細資訊，請參閱 [從共用登入資料檔案中在 Node.js 中載入登入資料](loading-node-credentials-shared.md)。

## 建立主題
<a name="sns-examples-managing-topics-createtopic"></a>

在此範例中，使用 Node.js 模組來建立 Amazon SNS 主題。以檔名 `sns_createtopic.js` 建立一個 Node.js 模組。依前述內容設定軟體開發套件。

建立一個物件，藉此將新主題的 `Name` 傳遞至 `AWS.SNS` 用戶端類別的 `createTopic` 方法。若要呼叫 `createTopic`方法，請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後，在 promise 回呼中處理 `response`。promise 所傳回的 `data` 會包含主題 ARN。

```
// 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 createTopicPromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .createTopic({ Name: "TOPIC_NAME" })
  .promise();

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

若要執行範例，請在命令列中輸入以下內容。

```
node sns_createtopic.js
```

您可以在 [GitHub 上](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_createtopic.js)找到這個範本程式碼。

## 列出 主題
<a name="sns-examples-managing-topics-listtopics"></a>

在此範例中，使用 Node.js 模組列出所有 Amazon SNS 主題。以檔名 `sns_listtopics.js` 建立一個 Node.js 模組。依前述內容設定軟體開發套件。

建立空白物件，並將其傳遞至 `AWS.SNS` 用戶端類別的 `listTopics` 方法。若要呼叫 `listTopics`方法，請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後，在 promise 回呼中處理 `response`。promise 所傳回的 `data` 會包含主題 ARN 陣列。

```
// 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 listTopicsPromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .listTopics({})
  .promise();

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

若要執行範例，請在命令列中輸入以下內容。

```
node sns_listtopics.js
```

您可以在 [GitHub 上](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_listtopics.js)找到這個範本程式碼。

## 刪除主題
<a name="sns-examples-managing-topics-deletetopic"></a>

在此範例中，使用 Node.js 模組來刪除 Amazon SNS 主題。以檔名 `sns_deletetopic.js` 建立一個 Node.js 模組。依前述內容設定軟體開發套件。

建立包含欲刪除主題 `TopicArn` 的物件，並將其傳遞至 `AWS.SNS` 用戶端類別的 `deleteTopic` 方法。若要呼叫 `deleteTopic`方法，請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後，在 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 deleteTopicPromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .deleteTopic({ TopicArn: "TOPIC_ARN" })
  .promise();

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

若要執行範例，請在命令列中輸入以下內容。

```
node sns_deletetopic.js
```

您可以在 [GitHub 上](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_deletetopic.js)找到這個範本程式碼。

## 取得主題屬性
<a name="sns-examples-managing-topicsgetttopicattributes"></a>

在此範例中，使用 Node.js 模組擷取 Amazon SNS 主題的屬性。以檔名 `sns_gettopicattributes.js` 建立一個 Node.js 模組。依前述內容設定軟體開發套件。

建立包含欲刪除主題 `TopicArn` 的物件，並將其傳遞至 `AWS.SNS` 用戶端類別的 `getTopicAttributes` 方法。若要呼叫 `getTopicAttributes`方法，請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後，在 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 getTopicAttribsPromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .getTopicAttributes({ TopicArn: "TOPIC_ARN" })
  .promise();

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

若要執行範例，請在命令列中輸入以下內容。

```
node sns_gettopicattributes.js
```

您可以在 [GitHub 上](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_gettopicattributes.js)找到這個範本程式碼。

## 設定主題屬性
<a name="sns-examples-managing-topicsstttopicattributes"></a>

在此範例中，使用 Node.js 模組來設定 Amazon SNS 主題的可變屬性。以檔名 `sns_settopicattributes.js` 建立一個 Node.js 模組。依前述內容設定軟體開發套件。

建立一個物件，其中包含用來更新屬性的參數，包括要設定屬性的主題 `TopicArn`、要設定的屬性名稱，以及該屬性的新數值。您只能設定 `Policy`、`DisplayName` 和 `DeliveryPolicy` 屬性。接著，將參數傳遞至 `AWS.SNS` 用戶端類別的 `setTopicAttributes` 方法。若要呼叫 `setTopicAttributes`方法，請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後，在 promise 回呼中處理 `response`。

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

// Create setTopicAttributes parameters
var params = {
  AttributeName: "ATTRIBUTE_NAME" /* required */,
  TopicArn: "TOPIC_ARN" /* required */,
  AttributeValue: "NEW_ATTRIBUTE_VALUE",
};

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

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

若要執行範例，請在命令列中輸入以下內容。

```
node sns_settopicattributes.js
```

您可以在 [GitHub 上](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_settopicattributes.js)找到這個範本程式碼。

# 在 Amazon SNS 中發佈訊息
<a name="sns-examples-publishing-messages"></a>

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

**這個 Node.js 程式碼範例會說明：**
+ 如何將訊息發佈至 Amazon SNS 主題。

## 使用案例
<a name="sns-examples-publishing-messages-scenario"></a>

在此範例中，您可以使用一系列 Node.js 模組，將訊息從 Amazon SNS 發佈到主題端點、電子郵件或電話號碼。Node.js 模組使用適用於 JavaScript 的 SDK，使用此`AWS.SNS`用戶端類別的方法傳送訊息：
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#publish-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#publish-property)

## 先決條件任務
<a name="sns-examples-publishing-messages-prerequisites"></a>

若要設定和執行此範例，您必須先完成這些任務：
+ 安裝 Node.js。如需安裝 Node.js 的詳細資訊，請參閱 [Node.js 網站](http://nodejs.org)。
+ 透過使用者登入資料建立共用組態檔。如需有關提供登入資料 JSON 檔案的詳細資訊，請參閱 [從共用登入資料檔案中在 Node.js 中載入登入資料](loading-node-credentials-shared.md)。

## 將訊息發佈至 Amazon SNS 主題
<a name="sns-examples-publishing-text-messages"></a>

在此範例中，使用 Node.js 模組將訊息發佈至 Amazon SNS 主題。以檔名 `sns_publishtotopic.js` 建立一個 Node.js 模組。依前述內容設定軟體開發套件。

建立包含發佈訊息參數的物件，包括訊息文字和 Amazon SNS 主題的 ARN。如需可用簡訊屬性的詳細資訊，請參閱 [SetSMSAttributes](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#setSMSAttributes-property)。

接著，將參數傳遞至 `AWS.SNS` 用戶端類別的 `publish` 方法。建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。接著在 promise 回呼中處理回應。

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

// Create publish parameters
var params = {
  Message: "MESSAGE_TEXT" /* required */,
  TopicArn: "TOPIC_ARN",
};

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

// Handle promise's fulfilled/rejected states
publishTextPromise
  .then(function (data) {
    console.log(
      `Message ${params.Message} sent to the topic ${params.TopicArn}`
    );
    console.log("MessageID is " + data.MessageId);
  })
  .catch(function (err) {
    console.error(err, err.stack);
  });
```

若要執行範例，請在命令列中輸入以下內容。

```
node sns_publishtotopic.js
```

您可以在 [GitHub 上](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_publishtotopic.js)找到這個範本程式碼。

# 在 Amazon SNS 中管理訂閱
<a name="sns-examples-subscribing-unubscribing-topics"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/zh_tw/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 模組使用適用於 JavaScript 的 SDK 來管理使用下列`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 模組。依前述內容設定軟體開發套件。

建立一個物件，其中包含要列出訂閱的主題 `TopicArn` 參數。接著，將參數傳遞至 `AWS.SNS` 用戶端類別的 `listSubscriptionsByTopic` 方法。若要呼叫 `listSubscriptionsByTopic`方法，請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後，在 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 模組。依前述內容設定軟體開發套件。

建立包含 `Protocol` 參數的物件，以便指定 `email` 通訊協定、要訂閱的主題 `TopicArn`，以及要做為訊息 `Endpoint` 的電子郵件地址。接著，將參數傳遞至 `AWS.SNS` 用戶端類別的 `subscribe` 方法。您可以使用 `subscribe`方法將數個不同的端點訂閱 Amazon SNS 主題，這取決於傳遞的參數所使用的值，因為本主題中的其他範例會顯示。

若要呼叫 `subscribe`方法，請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後，在 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 模組。依前述內容設定軟體開發套件。

建立包含 `Protocol` 參數的物件，以便指定 `application` 通訊協定、要訂閱的主題 `TopicArn`，以及要做為 `Endpoint` 參數的行動應用程式端點 ARN。接著，將參數傳遞至 `AWS.SNS` 用戶端類別的 `subscribe` 方法。

若要呼叫 `subscribe`方法，請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後，在 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 主題的通知。以檔名 `sns_subscribelambda.js` 建立一個 Node.js 模組。依前述內容設定軟體開發套件。

建立包含 `Protocol` 參數的物件，指定要訂閱的`lambda`通訊協定、主題`TopicArn`的 ，以及 AWS Lambda 函數的 ARN 做為 `Endpoint` 參數。接著，將參數傳遞至 `AWS.SNS` 用戶端類別的 `subscribe` 方法。

若要呼叫 `subscribe`方法，請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後，在 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 模組。依前述內容設定軟體開發套件。

建立包含 `SubscriptionArn` 參數的物件，並指定要取消訂閱的訂閱 ARN。接著，將參數傳遞至 `AWS.SNS` 用戶端類別的 `unsubscribe` 方法。

若要呼叫 `unsubscribe`方法，請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後，在 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)找到這個範本程式碼。

# 使用 Amazon SNS 傳送簡訊
<a name="sns-examples-sending-sms"></a>

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

**這個 Node.js 程式碼範例會說明：**
+ 如何取得和設定 Amazon SNS 的簡訊偏好設定。
+ 如何檢查電話號碼是否選擇不要接收簡訊。
+ 如何取得選擇不要接收簡訊的電話號碼清單。
+ 如何傳送簡訊。

## 使用案例
<a name="sns-examples-sending-sms-scenario"></a>

您可以使用 Amazon SNS 傳送文字訊息或簡訊至啟用簡訊功能的裝置。您可以直接傳送訊息至一組電話號碼，或一次傳送一則訊息至多組電話號碼，只要訂閱那些電話號碼到主題並且傳送您的訊息到該主題即可。

在此範例中，您會使用一系列 Node.js 模組，將 SMS 文字訊息從 Amazon SNS 發佈至啟用 SMS 的裝置。Node.js 模組使用適用於 JavaScript 的 SDK，以`AWS.SNS`用戶端類別的下列方法發佈 SMS 訊息：
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#getSMSAttributes-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#getSMSAttributes-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#setSMSAttributes-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#setSMSAttributes-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#checkIfPhoneNumberIsOptedOut-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#checkIfPhoneNumberIsOptedOut-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#listPhoneNumbersOptedOut-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#listPhoneNumbersOptedOut-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#publish-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#publish-property)

## 先決條件任務
<a name="sns-examples-sending-sms-prerequisites"></a>

若要設定和執行此範例，您必須先完成這些任務：
+ 安裝 Node.js。如需安裝 Node.js 的詳細資訊，請參閱 [Node.js 網站](http://nodejs.org)。
+ 透過使用者登入資料建立共用組態檔。如需有關提供登入資料 JSON 檔案的詳細資訊，請參閱 [從共用登入資料檔案中在 Node.js 中載入登入資料](loading-node-credentials-shared.md)。

## 取得簡訊屬性
<a name="sending-sms-getattributes"></a>

使用 Amazon SNS 指定簡訊的偏好設定，例如如何最佳化交付 （用於成本或可靠交付）、每月花費限制、如何記錄訊息交付，以及是否訂閱每日簡訊用量報告。系統會擷取這些偏好設定，並將其設定為 Amazon SNS 的 SMS 屬性。

在此範例中，使用 Node.js 模組取得 Amazon SNS 中目前的 SMS 屬性。以檔名 `sns_getsmstype.js` 建立一個 Node.js 模組。依前述內容設定軟體開發套件。建立一個物件，其中包含用來取得簡訊屬性的參數，包括要擷取的個別屬性名稱。如需可用 SMS 屬性的詳細資訊，請參閱《Amazon Simple Notification Service API 參考》中的 [SetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html)。

此範例會取得 `DefaultSMSType` 屬性，其可控制簡訊的傳送方式；`Promotional` 會將訊息交付最佳化以降低成本，而 `Transactional` 則會將訊息交付最佳化以達到最高的可靠性。接著，將參數傳遞至 `AWS.SNS` 用戶端類別的 `setTopicAttributes` 方法。若要呼叫 `getSMSAttributes`方法，請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後，在 promise 回呼中處理 `response`。

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

// Create SMS Attribute parameter you want to get
var params = {
  attributes: [
    "DefaultSMSType",
    "ATTRIBUTE_NAME",
    /* more items */
  ],
};

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

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

若要執行範例，請在命令列中輸入以下內容。

```
node sns_getsmstype.js
```

您可以在 [GitHub 上](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_getsmstype.js)找到這個範本程式碼。

## 設定簡訊屬性
<a name="sending-sms-setattributes"></a>

在此範例中，使用 Node.js 模組取得 Amazon SNS 中目前的 SMS 屬性。以檔名 `sns_setsmstype.js` 建立一個 Node.js 模組。依前述內容設定軟體開發套件。建立一個物件，其中包含用來設定簡訊屬性的參數，包括要設定的個別屬性名稱，以及要為每個屬性設定的值。如需可用 SMS 屬性的詳細資訊，請參閱《Amazon Simple Notification Service API 參考》中的 [ SetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html)。

此範例將 `DefaultSMSType` 屬性設為 `Transactional`，藉此將訊息交付最佳化為達成最高的可靠性。接著，將參數傳遞至 `AWS.SNS` 用戶端類別的 `setTopicAttributes` 方法。若要呼叫 `getSMSAttributes`方法，請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後，在 promise 回呼中處理 `response`。

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

// Create SMS Attribute parameters
var params = {
  attributes: {
    /* required */
    DefaultSMSType: "Transactional" /* highest reliability */,
    //'DefaultSMSType': 'Promotional' /* lowest cost */
  },
};

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

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

若要執行範例，請在命令列中輸入以下內容。

```
node sns_setsmstype.js
```

您可以在 [GitHub 上](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_setsmstype.js)找到這個範本程式碼。

## 檢查電話號碼是否已停止接收
<a name="sending-sms-checkifphonenumberisoptedout"></a>

在此範例中，您可以使用 Node.js 模組來檢查電話號碼是否選擇不要接收簡訊。以檔名 `sns_checkphoneoptout.js` 建立一個 Node.js 模組。依前述內容設定軟體開發套件。建立一個物件，其中包含要以參數形式檢查的電話號碼。

此範例會設定 `PhoneNumber` 參數，藉此指定要檢查的電話號碼。接著，將物件傳遞至 `AWS.SNS` 用戶端類別的 `checkIfPhoneNumberIsOptedOut` 方法。若要呼叫 `checkIfPhoneNumberIsOptedOut`方法，請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後，在 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 phonenumPromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .checkIfPhoneNumberIsOptedOut({ phoneNumber: "PHONE_NUMBER" })
  .promise();

// Handle promise's fulfilled/rejected states
phonenumPromise
  .then(function (data) {
    console.log("Phone Opt Out is " + data.isOptedOut);
  })
  .catch(function (err) {
    console.error(err, err.stack);
  });
```

若要執行範例，請在命令列中輸入以下內容。

```
node sns_checkphoneoptout.js
```

您可以在 [GitHub 上](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_checkphoneoptout.js)找到這個範本程式碼。

## 列出已停止接收的電話號碼
<a name="sending-sms-listphonenumbersoptedout"></a>

在此範例中，您可以使用 Node.js 模組來取得選擇不要接收簡訊的電話號碼清單。以檔名 `sns_listnumbersoptedout.js` 建立一個 Node.js 模組。依前述內容設定軟體開發套件。建立空白物件做為參數。

接著，將物件傳遞至 `AWS.SNS` 用戶端類別的 `listPhoneNumbersOptedOut` 方法。若要呼叫 `listPhoneNumbersOptedOut`方法，請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後，在 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 phonelistPromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .listPhoneNumbersOptedOut({})
  .promise();

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

若要執行範例，請在命令列中輸入以下內容。

```
node sns_listnumbersoptedout.js
```

您可以在 [GitHub 上](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_listnumbersoptedout.js)找到這個範本程式碼。

## 發佈簡訊
<a name="sending-sms-publishsms"></a>

在此範例中，Node.js 模組可用來傳送簡訊至電話號碼。以檔名 `sns_publishsms.js` 建立一個 Node.js 模組。依前述內容設定軟體開發套件。建立包含 `Message` 和 `PhoneNumber` 參數的物件。

當您傳送簡訊時，請指定使用 E.164 格式的電話號碼。E。164 是電話號碼結構的標準，用於國際電信通訊。遵照此格式的電話號碼可以有 15 位數的上限限制，前面加上加號 (\$1) 字元和國碼。例如，E.164 格式的美國電話號碼顯示為 \$11001XXX5550100。

此範例會設定 `PhoneNumber` 參數，藉此指定要傳送訊息的電話號碼。接著，將物件傳遞至 `AWS.SNS` 用戶端類別的 `publish` 方法。若要呼叫 `publish`方法，請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後，在 promise 回呼中處理 `response`。

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

// Create publish parameters
var params = {
  Message: "TEXT_MESSAGE" /* required */,
  PhoneNumber: "E.164_PHONE_NUMBER",
};

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

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

若要執行範例，請在命令列中輸入以下內容。

```
node sns_publishsms.js
```

您可以在 [GitHub 上](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_publishsms.js)找到這個範本程式碼。