在 Amazon SNS 中管理主题 - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

我们已宣布即将终止对 Amazon SDK for JavaScript v2 的支持。建议您迁移到 Amazon SDK for JavaScript v3。有关日期、其他详细信息以及如何迁移的信息,请参阅链接的公告。

在 Amazon SNS 中管理主题

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何在 Amazon SNS 中创建可以将通知发布到的主题。

  • 如何删除在 Amazon SNS 中创建的主题。

  • 如何获取可用主题的列表。

  • 如何获取和设置主题属性。

情景

在本示例中,您使用一系列 Node.js 模块来创建、列出和删除 Amazon SNS 主题,以及处理主题属性。这些 Node.js 模块使用 SDK for JavaScript,通过 AWS.SNS 客户端类的以下方法管理主题:

先决条件任务

要设置和运行此示例,您必须先完成以下任务:

创建主题

本示例使用 Node.js 模块创建 Amazon SNS 主题。创建文件名为 sns_createtopic.js 的 Node.js 模块。按前面所示配置 SDK。

创建对象,将新主题的 Name 传递到 AWS.SNS 客户端类的 createTopic 方法。要调用 createTopic 方法,请创建一个 promise 来调用 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 上的此处找到。

列出主题

本示例使用 Node.js 模块列出所有 Amazon SNS 主题。创建文件名为 sns_listtopics.js 的 Node.js 模块。按前面所示配置 SDK。

创建一个空对象以传递到 AWS.SNS 客户端类的 listTopics 方法。要调用 listTopics 方法,请创建一个 promise 来调用 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 上的此处找到。

删除主题

本示例使用 Node.js 模块删除 Amazon SNS 主题。创建文件名为 sns_deletetopic.js 的 Node.js 模块。按前面所示配置 SDK。

创建包含要删除的主题的 TopicArn 的对象,将其传递到 AWS.SNS 客户端类的 deleteTopic 方法。要调用 deleteTopic 方法,请创建一个 promise 来调用 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 上的此处找到。

获取主题属性

本示例使用 Node.js 模块检索 Amazon SNS 主题的属性。创建文件名为 sns_gettopicattributes.js 的 Node.js 模块。按前面所示配置 SDK。

创建包含要删除主题的 TopicArn 的对象,将其传递到 AWS.SNS 客户端类的 getTopicAttributes 方法。要调用 getTopicAttributes 方法,请创建一个 promise 来调用 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 上的此处找到。

设置主题属性

本示例使用 Node.js 模块设置 Amazon SNS 主题的可变属性。创建文件名为 sns_settopicattributes.js 的 Node.js 模块。按前面所示配置 SDK。

创建包含用于属性更新参数的对象,这包括要设置其属性的主题的 TopicArn、要设置的属性的名称以及该属性的新值。您只能设置 PolicyDisplayNameDeliveryPolicy 属性。将参数传递到 AWS.SNS 客户端类的 setTopicAttributes 方法。要调用 setTopicAttributes 方法,请创建一个 promise 来调用 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 上的此处找到。