Amazon SDK for JavaScriptV3 API 参考指南详细描述了Amazon SDK for JavaScript版本 3 (V3) 的所有 API 操作。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在Amazon SNS 中管理订阅
此 Node.js 代码示例演示:
-
如何列出 Amazon SNS 主题的所有订阅内容。
-
如何将 Amazon SNS 主题订阅电子邮件地址、应用程序终端节点或Amazon Lambda函数。
-
如何取消订阅 Amazon SNS 主题。
情景
在此示例中,您使用一系列 Node.js 模块向 Amazon SNS 主题发布通知消息。Node.js 模块使用的 JavaScript SDK 使用SNS
客户端类的以下方法管理主题:
先决条件任务
要设置和运行此示例,您必须先完成以下任务:
-
设置项目环境以运行这些节点 TypeScript 示例,并安装所需的模块Amazon SDK for JavaScript和第三方模块。按照上的说明进行操作 GitHub
。 -
使用用户凭证创建共享配置文件。有关提供凭证 JSON 文件的更多信息,请参阅从共享凭证文件加载 Node.js 中的凭证。
这些示例演示了如何使用 ECMAScript6 (ES6) 导入/导出客户端服务对象和命令。
这需要 Node.js 13.x 或更高版本。要下载并安装最新版本的 Node.js,请参阅 Node.js
。 如果你更喜欢使用 CommonJS 语法,请参阅JavaScript es6/CommonJS 语法。
列出对主题的订阅
在此示例中,使用 Node.js 模块列出 Amazon SNS 主题的所有订阅。
创建一个libs
目录,然后使用该文件名创建 Node.js 模块snsClient.js
。将以下代码复制并粘贴到其中,这将创建 Amazon SNS 客户端对象。将 RE G
ION 替换为您的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 客户端服务对象并传递参数对象的异步函数。
将 TOPIC_ARN
替换为要列出订阅主题的 Amazon Resource Name (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 客户端对象。将 RE G
ION 替换为您的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 客户端服务对象并传递参数对象的异步函数。
将 TOPIC_ARN
替换为主题的亚马逊资源名称 (ARN),将 EMA IL_
ADDRESS 替换为要订阅的电子邮件地址。
// 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 客户端对象。将 RE G
ION 替换为您的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_ARN
和TOKEN
,然后定义TRUE
或FALSE
的值AutheticateOnUnsubscribe
。如果设置为TRUE
,则Confirm Subscription
操作需要Amazon签名。
该令牌是先前SUBSCRIBE
操作期间发送给终端节点所有者的短期令牌。例如,对于电子邮件端点,TOKEN
位于发送给电子邮件所有者的确认订阅电子邮件的 URL 中。例如,abc123
是以下 URL 中的标记。

要调用该ConfirmSubscriptionCommand
方法,请创建一个调用 Amazon SNS 客户端服务对象并传递参数对象的异步函数。
将 TOPIC_ARN
替换为主题的亚马逊资源名称 (ARN),将 TO K
EN 替换为先前Subscribe
操作中发送给终端节点所有者的 URL 中的令牌值,然后将 AuthenticateOnUnsubscribe
. 定义为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 客户端对象。将 RE G
ION 替换为您的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,包括安装所需的模块和软件包。
创建一个对象,其中包含TopicArn
用于指定application
协议的Protocol
参数、要订阅的主题的参数以及该Endpoint
参数的移动应用程序终端节点的 Amazon 资源名称 (ARN)。将参数传递到 SNS
客户端类的 SubscribeCommand
方法。
要调用该SubscribeCommand
方法,请创建一个调用 Amazon SNS 服务对象并传递参数对象的异步函数。
将 TOPIC_ARN
替换为主题的亚马逊资源名称 (ARN),将 MOB ILE_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 主题的通知,以接收来自 Amazon SNS 主题的通知。
创建一个libs
目录,然后使用该文件名创建 Node.js 模块snsClient.js
。将以下代码复制并粘贴到其中,这将创建 Amazon SNS 客户端对象。将 RE G
ION 替换为您的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
参数的对象,TopicArn
为要订阅的主题指定lambda
协议,并将Amazon Lambda函数的 Amazon 资源名称 (ARN) 指定为Endpoint
参数。将参数传递到 SNS
客户端类的 SubscribeCommand
方法。
要调用该SubscribeCommand
方法,请创建一个调用 Amazon SNS 客户端服务对象并传递参数对象的异步函数。
将 TOPIC_ARN
替换为主题的亚马逊资源名称 (ARN),将 LAMBDA_FUNCTION_ARN
替换为 Lambda 函数的亚马逊资源名称 (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 客户端对象。将 RE G
ION 替换为您的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 Resource Name (ARN)。将参数传递到 SNS
客户端类的 UnsubscribeCommand
方法。
要调用该UnsubscribeCommand
方法,请创建一个调用 Amazon SNS 客户端服务对象并传递参数对象的异步函数。
将 TOPIC_Subrciple Name (ARN) 替换为订阅的 Amazon Resourc
e Name (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