Administración de suscripciones en Amazon SNS - AWS SDK for JavaScript

La guía de API referencia de la versión AWS SDK for JavaScript 3 describe en detalle todas las API operaciones de la AWS SDK for JavaScript versión 3 (V3).

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Administración de suscripciones en Amazon SNS

JavaScript code example that applies to Node.js execution

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 de Amazon 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 de AWS SDK for JavaScript y de terceros necesarios. Siga las instrucciones en GitHub.

  • Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información sobre cómo proporcionar un archivo de credenciales compartido, consulte Archivos de configuración y credenciales compartidos en la Guía de referencia de SDK y herramientas de AWS.

importante

Estos ejemplos muestran cómo importar/exportar comandos y objetos del servicio de cliente mediante ECMAScript6 (ES6).

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 cree 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 muestra 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 muestra 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 cree 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 muestra 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 muestra 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 cree 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 SES. 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 muestra 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 muestra se puede encontrar aquí en GitHub.

Suscripción de un punto de enlace de aplicación a un tema

En este ejemplo, va a utilizar un módulo de Node.js para suscribir un punto de enlace de una aplicación móvil para que reciba notificaciones de un tema de Amazon SNS.

Cree un directorio libs y cree 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 muestra 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 muestra 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 cree 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 muestra 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 (RN) 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 muestra 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 cree 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 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 muestra 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 muestra se puede encontrar aquí en GitHub.