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

帮助我们改进Amazon SDK for JavaScript版本 3 (V3) 文档,方法是使用反馈链接,或者在上创建议题或拉取请求GitHub.

这些区域有:Amazon SDK for JavaScriptV3 API 参考指南详细描述了Amazon SDK for JavaScript版本 3 (V3)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon SNS 中管理订阅


                    JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何列出对 Amazon SNS 主题的所有订阅。

  • 如何订阅电子邮件地址、应用程序终端节点或Amazon Lambda函数到 Amazon SNS 主题。

  • 如何取消订阅 Amazon SNS 主题。

情景

在本示例中,您使用一系列 Node.js 模块将通知消息发布到 Amazon SNS 主题。Node.js 模块使用 JavaScript 开发工具包,通过以下方法来管理主题:SNS客户端类:

先决条件任务

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

  • 设置项目环境以运行这些 Node TypeScript 示例,然后安装所需的Amazon SDK for JavaScript和第三方模块。按照上的说明操作GitHub.

  • 使用用户凭证创建共享配置文件。有关提供凭证 JSON 文件的更多信息,请参阅从共享凭证文件加载 Node.js 中的凭证

重要

这些示例演示了如何使用 ECMASCRIPT6 (ES6) 导入/导出客户端服务对象和命令。

列出对主题的订阅

在本示例中,使用 Node.js 模块以列出对 Amazon SNS 主题的所有订阅。

创建libs创建文件名为的 Node.js 模块。snsClient.js. 将以下代码复制并粘贴到其中,这将创建 Amazon SNS 客户端对象。Replace领域与您的Amazon区域。

import { SNSClient } from "@aws-sdk/client-sns"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SNS service object. const snsClient = new SNSClient({ region: REGION }); export { snsClient };

可以找到以下示例代码:GitHub 上的这里.

创建文件名为 sns_listsubscriptions.js 的 Node.js 模块。按前面所示配置开发工具包。

创建一个对象,其中包含您要列出其订阅的主题的 TopicArn 参数。将参数传递到 SNS 客户端类的 ListSubscriptionsByTopicCommand 方法。调用ListSubscriptionsByTopicCommand方法,请创建一个异步函数,调用 Amazon SNS 客户端服务对象并传递参数对象。

注意

ReplaceTOPIC_ARN对于要列出其订阅的主题的 Amazon 资源名称 (ARN)。

// Import required AWS SDK clients and commands for Node.js import {ListSubscriptionsByTopicCommand } from "@aws-sdk/client-sns"; import {snsClient } from "./libs/snsClient.js"; // Set the parameters const params = { TopicArn: "TOPIC_ARN" }; //TOPIC_ARN const run = async () => { try { const data = await snsClient.send(new ListSubscriptionsByTopicCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); } }; run();

要运行示例,请在命令提示符下输入以下内容。

node sns_listsubscriptions.js

可以找到以下示例代码:GitHub 上的这里.

将电子邮件地址订阅到主题

在本示例中,使用 Node.js 模块来订阅电子邮件地址,使其从 Amazon SNS 主题接收 SMTP 电子邮件。

创建libs创建文件名为的 Node.js 模块。snsClient.js. 将以下代码复制并粘贴到其中,这将创建 Amazon SNS 客户端对象。Replace领域与您的Amazon区域。

import { SNSClient } from "@aws-sdk/client-sns"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SNS service object. const snsClient = new SNSClient({ region: REGION }); export { snsClient };

可以找到以下示例代码:GitHub 上的这里.

创建文件名为 sns_subscribeemail.js 的 Node.js 模块。按前面所示配置开发工具包。

创建包含 Protocol 参数的对象,用于指定 email 协议、要订阅到的主题的 TopicArn 以及作为邮件 Endpoint 的电子邮件地址。将参数传递到 SNS 客户端类的 SubscribeCommand 方法。您可以使用subscribe方法,根据在所传递参数中使用的值,将多种不同的终端节点订阅到某个 Amazon SNS 主题,如本主题中的其他示例所示。

调用SubscribeCommand方法,请创建一个异步函数,调用 Amazon SNS 客户端服务对象并传递参数对象。

注意

ReplaceTOPIC_ARN使用主题的 Amazon 资源名称 (ARN),以及EMAIL _ 地址使用要订阅的电子邮件地址。

// Import required AWS SDK clients and commands for Node.js import {SubscribeCommand } from "@aws-sdk/client-sns"; import {snsClient } from "./libs/snsClient.js"; // Set the parameters const params = { Protocol: "email" /* required */, TopicArn: "TOPIC_ARN", //TOPIC_ARN Endpoint: "EMAIL_ADDRESS", //EMAIL_ADDRESS }; const run = async () => { try { const data = await snsClient.send(new SubscribeCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); } }; run();

要运行示例,请在命令提示符下输入以下内容。

node sns_subscribeemail.js

可以找到以下示例代码:GitHub 上的这里.

确认订阅

在本示例中,使用 Node.js 模块,通过之前的订阅操作验证发送到终端节点的令牌,从而验证终端节点所有者接收电子邮件的意图。

创建libs创建文件名为的 Node.js 模块。snsClient.js. 将以下代码复制并粘贴到其中,这将创建 Amazon SNS 客户端对象。Replace领域与您的Amazon区域。

import { SNSClient } from "@aws-sdk/client-sns"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SNS service object. const snsClient = new SNSClient({ region: REGION }); export { snsClient };

可以找到以下示例代码:GitHub 上的这里.

创建文件名为 sns_confirmsubscription.js 的 Node.js 模块。如前所示配置 SDK,包括安装所需的客户端和软件包。

定义参数,包括TOPIC_ARNTOKEN,然后定义一个值TRUE要么FALSE为了AutheticateOnUnsubscribe. 如果设置为TRUEConfirm Subscription操作需要Amazon签名。

令牌是在之前一个期间发送给终端节点所有者的短命令牌SUBSCRIBEaction. 例如,对于电子邮件终端节点TOKEN位于发送给电子邮件所有者的确认订阅电子邮件的 URL 中。例如,abc123是以下 URL 中的令牌。

调用ConfirmSubscriptionCommand方法中,请创建一个异步函数,调用 Amazon SNS 客户端服务对象并传递参数对象。

注意

ReplaceTOPIC_ARN使用主题的 Amazon 资源名称 (ARN),代币使用之前发送给终端节点所有者的 URL 中的令牌值Subscribe行动,然后定义在取消订阅时进行身份验证。价值为TRUE要么FALSE.

// Import required AWS SDK clients and commands for Node.js import {ConfirmSubscriptionCommand } from "@aws-sdk/client-sns"; import {snsClient } from "./libs/snsClient.js"; // Set the parameters const params = { Token: "TOKEN", // Required. Token sent to the endpoint by an earlier Subscribe action. */ TopicArn: "TOPIC_ARN", // Required AuthenticateOnUnsubscribe: "true", // 'true' or 'false' }; const run = async () => { try { const data = await snsClient.send(new ConfirmSubscriptionCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); } }; run();

要运行示例,请在命令提示符处输入以下内容。

node sns_confirmsubscription.js

可以找到这个示例代码GitHub 上的.

将应用程序终端节点订阅到主题

在本示例中,使用 Node.js 模块来订阅移动应用程序终端节点,使其从 Amazon SNS 主题接收通知。

创建libs创建文件名为的 Node.js 模块。snsClient.js. 将以下代码复制并粘贴到其中,这将创建 Amazon SNS 客户端对象。Replace领域与您的Amazon区域。

import { SNSClient } from "@aws-sdk/client-sns"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SNS service object. const snsClient = new SNSClient({ region: REGION }); export { snsClient };

可以找到这个示例代码GitHub 上的.

创建文件名为 sns_confirmsubscription.js 的 Node.js 模块。如前所示配置 SDK,包括安装所需的模块和软件包。

创建一个包含Protocol参数来指定application协议TopicArn要订阅的主题,以及用于的移动应用程序终端节点的 Amazon 资源名称 (ARN)Endpoint参数。将参数传递到 SNS 客户端类的 SubscribeCommand 方法。

调用SubscribeCommand方法中,请创建一个异步函数,调用 Amazon SNS 服务对象并传递参数对象。

注意

ReplaceTOPIC_ARN使用主题的 Amazon 资源名称 (ARN),以及MOBILE_ENDPOINT_ARN使用您正在订阅该主题的终端节点。

// Import required AWS SDK clients and commands for Node.js import {SubscribeCommand } from "@aws-sdk/client-sns"; import {snsClient } from "./libs/snsClient.js"; // Set the parameters const params = { Protocol: "application" /* required */, TopicArn: "TOPIC_ARN", //TOPIC_ARN Endpoint: "MOBILE_ENDPOINT_ARN", // MOBILE_ENDPOINT_ARN }; const run = async () => { try { const data = await snsClient.send(new SubscribeCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); } }; run();

要运行示例,请在命令提示符处输入以下内容。

node sns_subscribeapp.js

可以找到这个示例代码GitHub 上的.

将 Lambda 函数订阅到主题

在本示例中,使用 Node.js 模块订阅Amazon Lambda函数,以便接收来自 Amazon SNS 主题的通知。

创建libs创建文件名为的 Node.js 模块。snsClient.js. 将以下代码复制并粘贴到其中,这将创建 Amazon SNS 客户端对象。Replace领域与您的Amazon区域。

import { SNSClient } from "@aws-sdk/client-sns"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SNS service object. const snsClient = new SNSClient({ region: REGION }); export { snsClient };

可以找到这个示例代码GitHub 上的.

创建文件名为 sns_subscribelambda.js 的 Node.js 模块。按前面所示配置开发工具包。

创建一个包含Protocol参数,指定lambda协议TopicArn要订阅的主题 ARN 及Amazon Lambda作为Endpoint参数。将参数传递到 SNS 客户端类的 SubscribeCommand 方法。

调用SubscribeCommand方法中,请创建一个异步函数,调用 Amazon SNS 客户端服务对象并传递参数对象。

注意

ReplaceTOPIC_ARN使用主题的 Amazon 资源名称 (ARN),以及LAMBDA_FUNCTION_ARN使用 Lambda 函数的 Amazon 资源名称 (ARN)。

// Import required AWS SDK clients and commands for Node.js import {SubscribeCommand } from "@aws-sdk/client-sns"; import {snsClient } from "./libs/snsClient.js"; // Set the parameters const params = { Protocol: "lambda" /* required */, TopicArn: "TOPIC_ARN", //TOPIC_ARN Endpoint: "LAMBDA_FUNCTION_ARN", //LAMBDA_FUNCTION_ARN }; const run = async () => { try { const data = await snsClient.send(new SubscribeCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); } }; run();

要运行示例,请在命令提示符处输入以下内容。

node sns_subscribelambda.js

可以找到这个示例代码GitHub 上的.

从主题取消订阅

在本示例中,使用 Node.js 模块取消订阅 Amazon SNS 主题订阅。

创建libs创建文件名为的 Node.js 模块。snsClient.js. 将以下代码复制并粘贴到其中,这将创建 Amazon SNS 客户端对象。Replace领域与您的Amazon区域。

import { SNSClient } from "@aws-sdk/client-sns"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SNS service object. const snsClient = new SNSClient({ region: REGION }); export { snsClient };

可以找到这个示例代码GitHub 上的.

创建文件名为 sns_unsubscribe.js 的 Node.js 模块。如前所示配置 SDK,包括安装所需的客户端和软件包。

创建一个包含SubscriptionArn参数,指定要取消订阅的订阅的 Amazon 资源名称 (ARN)。将参数传递到 SNS 客户端类的 UnsubscribeCommand 方法。

调用UnsubscribeCommand方法中,请创建一个异步函数,调用 Amazon SNS 客户端服务对象并传递参数对象。

注意

ReplaceTOPIC_订阅_ARN用于取消订阅的订阅的 Amazon 资源名称 (ARN)。

// Import required AWS SDK clients and commands for Node.js import {UnsubscribeCommand } from "@aws-sdk/client-sns"; import {snsClient } from "./libs/snsClient.js"; // Set the parameters const params = { SubscriptionArn: "TOPIC_SUBSCRIPTION_ARN" }; //TOPIC_SUBSCRIPTION_ARN const run = async () => { try { const data = await snsClient.send(new UnsubscribeCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); } }; run();

要运行示例,请在命令提示符处输入以下内容。

node sns_unsubscribe.js

可以找到这个示例代码GitHub 上的.