La Guía de referencia de la API de AWS SDK for JavaScript V3 describe en detalle todas las operaciones de la API para la versión 3 (V3) de AWS SDK for JavaScript.
Administración de suscripciones en Amazon SNS
Este ejemplo de código de Node.js muestra:
-
Cómo mostrar una lista de todas las suscripciones en un tema de Amazon SNS.
-
Cómo suscribir una dirección de correo electrónico, un punto de conexión de una aplicación o una función de Lambda a un tema de Amazon SNS.
-
Cómo cancelar una suscripción a temas de Amazon SNS.
El escenario
En este ejemplo, va a utilizar una serie de módulos de Node.js para publicar mensajes de notificación en temas de Amazon SNS. Los módulos de Node.js usan el SDK para JavaScript para administrar temas mediante los métodos de clase de cliente SNS siguientes:
Tareas previas necesarias
Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:
-
Configure el entorno del proyecto para ejecutar estos ejemplos de Node TypeScript e instale los módulos necesarios de AWS SDK for JavaScript y de terceros. Siga las instrucciones en GitHub
. -
Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información sobre proporcionar un archivo de credenciales compartido, consulte Archivos de configuración y credenciales compartidos en la Guía de referencia de las herramientas y los SDK de AWS.
importante
Estos ejemplos muestran cómo importar/exportar comandos y objetos del servicio de cliente mediante ECMAScript6 (ES6).
Requiere la versión 13.x o superior de Node.js. Para descargar e instalar la versión más reciente de Node.js, consulte Descargas de Node.js
. Si prefiere utilizar la sintaxis CommonJS, consulte Sintaxis ES6/commonJS de JavaScript.
Generación de una lista de suscripciones a un tema
En este ejemplo, utilice un módulo de Node.js para generar una lista de todas las suscripciones a un tema de Amazon SNS.
Cree un directorio libs y un módulo Node.js con el nombre de archivo snsClient.js. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. Sustituya REGION por su región de AWS.
import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});
Este código de ejemplo se puede encontrar aquí en GitHub
Cree un módulo de Node.js con el nombre de archivo list-subscriptions-by-topic.js. Configure el SDK como le hemos mostrado anteriormente.
Cree un objeto que contenga el parámetro TopicArn para el tema cuyas suscripciones desee incluir en la lista. Transfiera los parámetros al método ListSubscriptionsByTopicCommand de la clase de cliente de Amazon SNS. Para llamar al método ListSubscriptionsByTopicCommand, cree una función asíncrona que invoque un objeto de servicio de cliente de Amazon SNS y transfiera el objeto de los parámetros.
nota
Reemplace TOPIC_ARN por el nombre de recurso de Amazon (ARN) del tema cuyas suscripciones quiera incluir.
import { ListSubscriptionsByTopicCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} topicArn - The ARN of the topic for which you wish to list subscriptions. */ export const listSubscriptionsByTopic = async (topicArn = "TOPIC_ARN") => { const response = await snsClient.send( new ListSubscriptionsByTopicCommand({ TopicArn: topicArn }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '0934fedf-0c4b-572e-9ed2-a3e38fadb0c8', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // Subscriptions: [ // { // SubscriptionArn: 'PendingConfirmation', // Owner: '901487484989', // Protocol: 'email', // Endpoint: 'corepyle@amazon.com', // TopicArn: 'arn:aws:sns:us-east-1:901487484989:mytopic' // } // ] // } return response; };
Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.
node list-subscriptions-by-topic.js
Este código de ejemplo se puede encontrar aquí en GitHub
Suscripción de una dirección de correo electrónico a un tema
En este ejemplo, va a utilizar un módulo de Node.js para suscribir una dirección de correo electrónico para que reciba mensajes de correo electrónico SMTP de un tema de Amazon SNS.
Cree un directorio libs y un módulo Node.js con el nombre de archivo snsClient.js. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. Sustituya REGION por su región de AWS.
import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});
Este código de ejemplo se puede encontrar aquí en GitHub
Cree un módulo de Node.js con el nombre de archivo subscribe-email.js. Configure el SDK como le hemos mostrado anteriormente.
Cree un objeto que contenga el parámetro Protocol para especificar el protocolo de email, el TopicArn del tema al que se suscribirá y una dirección de correo electrónico como el mensaje Endpoint. Transfiera los parámetros al método SubscribeCommand de la clase de cliente de Amazon SNS. Puede utilizar el método subscribe para suscribir varios puntos de conexión diferentes a un tema de Amazon SNS, en función de los valores que se utilicen para los parámetros que se transfieran, tal y como se verá en otros ejemplos de este tema.
Para llamar al método SubscribeCommand, cree una función asíncrona que invoque un objeto de servicio de cliente de Amazon SNS y transfiera el objeto de los parámetros.
nota
Sustituya TOPIC_ARN por el Nombre de recurso de Amazon (ARN) para el tema y EMAIL_ADDRESS por la dirección de correo electrónico a la que desea suscribirse.
import { SubscribeCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} topicArn - The ARN of the topic for which you wish to confirm a subscription. * @param {string} emailAddress - The email address that is subscribed to the topic. */ export const subscribeEmail = async ( topicArn = "TOPIC_ARN", emailAddress = "usern@me.com", ) => { const response = await snsClient.send( new SubscribeCommand({ Protocol: "email", TopicArn: topicArn, Endpoint: emailAddress, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: 'c8e35bcd-b3c0-5940-9f66-06f6fcc108f0', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // SubscriptionArn: 'pending confirmation' // } };
Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.
node subscribe-email.js
Este código de ejemplo se puede encontrar aquí en GitHub
Confirmar suscripciones
En este ejemplo, use un módulo de Node.js para verificar la intención del propietario de un punto de conexión de recibir mensajes validando el token enviado al punto de conexión por una acción de suscripción previa.
Cree un directorio libs y un módulo Node.js con el nombre de archivo snsClient.js. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. Sustituya REGION por su región de AWS.
import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});
Este código de ejemplo se puede encontrar aquí en GitHub
Cree un módulo de Node.js con el nombre de archivo confirm-subscription.js. Configure el SDK como se mostró anteriormente, incluida la instalación de los clientes y paquetes necesarios.
Defina los parámetros, incluidos TOPIC_ARN y TOKEN, y defina un valor de TRUE o FALSE para AuthenticateOnUnsubscribe.
El token es un token de corta duración que se envía al propietario de un punto de conexión durante una acción SUBSCRIBE anterior. Por ejemplo, en el caso de un punto de conexión de correo electrónico, el TOKEN está en la URL del correo electrónico de confirmación de suscripción enviado al propietario del correo electrónico. Por ejemplo, abc123 es el token en la siguiente URL:
Para llamar al método ConfirmSubscriptionCommand, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros.
nota
Sustituya TOPIC_ARN por el Nombre de recurso de Amazon (ARN) del tema, TOKEN por el valor del token de la URL enviada al propietario del punto de conexión en una acción de Subscribe anterior y defina AuthenticateOnUnsubscribe con un valor de TRUE o FALSE.
import { ConfirmSubscriptionCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} token - This token is sent the subscriber. Only subscribers * that are not AWS services (HTTP/S, email) need to be confirmed. * @param {string} topicArn - The ARN of the topic for which you wish to confirm a subscription. */ export const confirmSubscription = async ( token = "TOKEN", topicArn = "TOPIC_ARN", ) => { const response = await snsClient.send( // A subscription only needs to be confirmed if the endpoint type is // HTTP/S, email, or in another AWS account. new ConfirmSubscriptionCommand({ Token: token, TopicArn: topicArn, // If this is true, the subscriber cannot unsubscribe while unauthenticated. AuthenticateOnUnsubscribe: "false", }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '4bb5bce9-805a-5517-8333-e1d2cface90b', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // SubscriptionArn: 'arn:aws:sns:us-east-1:xxxxxxxxxxxx:TOPIC_NAME:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' // } return response; };
Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.
node confirm-subscription.js
Este código de ejemplo se puede encontrar aquí en GitHub
Suscripción de un punto de conexión de aplicación a un tema
En este ejemplo, va a utilizar un módulo de Node.js para suscribir un punto de conexión de una aplicación móvil para que reciba notificaciones de un tema de Amazon SNS.
Cree un directorio libs y un módulo Node.js con el nombre de archivo snsClient.js. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. Sustituya REGION por su región de AWS.
import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});
Este código de ejemplo se puede encontrar aquí en GitHub
Cree un módulo de Node.js con el nombre de archivo subscribe-app.js. Configure el SDK como se mostró anteriormente, incluida la instalación de los módulos y paquetes necesarios.
Cree un objeto que contenga el parámetro Protocol para especificar el protocolo de la application, el TopicArn del tema al que va a suscribirse y el Nombre de recurso de Amazon (ARN) del punto de conexión de la aplicación móvil para el parámetro Endpoint. Transfiera los parámetros al método SubscribeCommand de la clase de cliente de Amazon SNS.
Para llamar al método SubscribeCommand, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros.
nota
Sustituya TOPIC_ARN por el nombre de recurso de Amazon (ARN) del tema y MOBILE_ENDPOINT_ARN por el punto de conexión al que está suscribiendo al tema.
import { SubscribeCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} topicArn - The ARN of the topic the subscriber is subscribing to. * @param {string} endpoint - The Endpoint ARN of an application. This endpoint is created * when an application registers for notifications. */ export const subscribeApp = async ( topicArn = "TOPIC_ARN", endpoint = "ENDPOINT", ) => { const response = await snsClient.send( new SubscribeCommand({ Protocol: "application", TopicArn: topicArn, Endpoint: endpoint, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: 'c8e35bcd-b3c0-5940-9f66-06f6fcc108f0', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // SubscriptionArn: 'pending confirmation' // } return response; };
Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.
node subscribe-app.js
Este código de ejemplo se puede encontrar aquí en GitHub
Suscripción de una función de Lambda a un tema
En este ejemplo, va a utilizar un módulo de Node.js para suscribir una función para que reciba notificaciones de un tema de Amazon SNS.
Cree un directorio libs y un módulo Node.js con el nombre de archivo snsClient.js. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. Sustituya REGION por su región de AWS.
import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});
Este código de ejemplo se puede encontrar aquí en GitHub
Cree un módulo de Node.js con el nombre de archivo subscribe-lambda.js. Configure el SDK como le hemos mostrado anteriormente.
Cree un objeto que contenga el parámetro Protocol y que especifique el protocolo lambda, el TopicArn del tema al que va a suscribirse y el Nombre de recurso de Amazon (ARN) de una función AWS Lambda como el parámetro Endpoint. Transfiera los parámetros al método SubscribeCommand de la clase de cliente de Amazon SNS.
Para llamar al método SubscribeCommand, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros.
nota
Sustituya TOPIC_ARN por el nombre de recurso de Amazon (ARN) del tema y LAMBDA_FUNCTION_ARN por el nombre de recurso de Amazon (ARN) de la función de Lambda.
import { SubscribeCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} topicArn - The ARN of the topic the subscriber is subscribing to. * @param {string} endpoint - The Endpoint ARN of and AWS Lambda function. */ export const subscribeLambda = async ( topicArn = "TOPIC_ARN", endpoint = "ENDPOINT", ) => { const response = await snsClient.send( new SubscribeCommand({ Protocol: "lambda", TopicArn: topicArn, Endpoint: endpoint, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: 'c8e35bcd-b3c0-5940-9f66-06f6fcc108f0', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // SubscriptionArn: 'pending confirmation' // } return response; };
Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.
node subscribe-lambda.js
Este código de ejemplo se puede encontrar aquí en GitHub
Cancelación de la suscripción a un tema
En este ejemplo, utilice un módulo de Node.js para cancelar la suscripción a un tema de Amazon SNS.
Cree un directorio libs y un módulo Node.js con el nombre de archivo snsClient.js. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. Sustituya REGION por su región de AWS.
import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});
Este código de ejemplo se puede encontrar aquí en GitHub
Cree un módulo de Node.js con el nombre de archivo unsubscribe.js. Configure el SDK como se mostró anteriormente, incluida la instalación de los clientes y paquetes necesarios.
Cree un objeto que contenga el parámetro SubscriptionArn que especifique el Nombre de recurso de Amazon (ARN) de la suscripción que desea cancelar. Transfiera los parámetros al método UnsubscribeCommand de la clase de cliente de Amazon SNS.
Para llamar al método UnsubscribeCommand, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros.
nota
Reemplace TOPIC_SUBSCRIPTION_ARN por el nombre de recurso de Amazon (ARN) de la suscripción para cancelar la suscripción.
import { UnsubscribeCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} subscriptionArn - The ARN of the subscription to cancel. */ const unsubscribe = async ( subscriptionArn = "arn:aws:sns:us-east-1:xxxxxxxxxxxx:mytopic:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", ) => { const response = await snsClient.send( new UnsubscribeCommand({ SubscriptionArn: subscriptionArn, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '0178259a-9204-507c-b620-78a7570a44c6', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // } // } return response; };
Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.
node unsubscribe.js
Este código de ejemplo se puede encontrar aquí en GitHub