Gestion des abonnements sur Amazon SNS - AWS SDK for JavaScript

Le guide de API référence AWS SDK for JavaScript V3 décrit en détail toutes les API opérations de la AWS SDK for JavaScript version 3 (V3).

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gestion des abonnements sur Amazon SNS

JavaScript code example that applies to Node.js execution

Cet exemple de code Node.js présente :

  • Comment répertorier tous les abonnements à une rubrique Amazon SNS

  • Comment abonner une adresse e-mail, un point de terminaison d'application ou une AWS Lambda fonction à une rubrique Amazon SNS.

  • Comment se désabonner des rubriques Amazon SNS

Scénario

Dans cet exemple, vous utilisez une série de modules Node.js pour publier des messages de notification dans les rubriques Amazon SNS. Les modules Node.js utilisent le SDK pour gérer les sujets JavaScript à l'aide des méthodes suivantes de la classe SNS client :

Tâches prérequises

Pour configurer et exécuter cet exemple, vous devez d'abord :

  • Configurez l'environnement du projet pour exécuter ces TypeScript exemples de nœuds et installez les modules requis AWS SDK for JavaScript et tiers. Suivez les instructions figurant sur GitHub.

  • Créez un fichier de configurations partagé avec vos informations d'identification utilisateur. Pour plus d'informations sur la fourniture d'un fichier d'informations d'identification partagé, consultez la section Fichiers de configuration et d'informations d'identification partagés dans le Guide de référence AWS des SDK et des outils.

Important

Ces exemples montrent comment importer/exporter des objets et des commandes du service client à l'aide d'ECMAScript6 (ES6).

Liste des abonnements à une rubrique

Dans cet exemple, utilisez un module Node.js pour répertorier tous les abonnements à une rubrique Amazon SNS.

Créez un libs répertoire et créez un module Node.js avec le nom du fichiersnsClient.js. Copiez-collez le code ci-dessous pour créer l'objet client Amazon SNS. Remplacez REGION par votre AWS région.

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({});

Cet exemple de code se trouve ici GitHub.

Créez un module Node.js nommé list-subscriptions-by-topic.js. Configurez le kit SDK comme illustré précédemment.

Créez un objet contenant le paramètre TopicArn pour la rubrique dont vous souhaitez répertorier les abonnements. Transmettez les paramètres à la méthode ListSubscriptionsByTopicCommand de la classe client SNS. Pour appeler la ListSubscriptionsByTopicCommand méthode, créez une fonction asynchrone invoquant un objet de service client Amazon SNS et transmettant l'objet de paramètres.

Note

Remplacez TOPIC_ARN par le nom de ressource Amazon (ARN) du sujet dont vous souhaitez répertorier les abonnements.

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; };

Pour exécuter l'exemple, entrez ce qui suit à l'invite de commande.

node list-subscriptions-by-topic.js

Cet exemple de code se trouve ici GitHub.

Abonnement d'une adresse e-mail à une rubrique

Dans cet exemple, utilisez un module Node.js pour abonner une adresse e-mail afin qu'elle reçoive des e-mails SMTP provenant d'une rubrique Amazon SNS.

Créez un libs répertoire et créez un module Node.js avec le nom du fichiersnsClient.js. Copiez-collez le code ci-dessous pour créer l'objet client Amazon SNS. Remplacez REGION par votre AWS région.

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({});

Cet exemple de code se trouve ici GitHub.

Créez un module Node.js nommé subscribe-email.js. Configurez le kit SDK comme illustré précédemment.

Créez un objet contenant le paramètre Protocol pour spécifier le protocole email, l'élément TopicArn pour la rubrique à laquelle s'abonner ainsi qu'une adresse e-mail comme message Endpoint. Transmettez les paramètres à la méthode SubscribeCommand de la classe client SNS. Vous pouvez utiliser subscribe cette méthode pour abonner plusieurs points de terminaison différents à une rubrique Amazon SNS, en fonction des valeurs utilisées pour les paramètres transmis, comme le montrent d'autres exemples présentés dans cette rubrique.

Pour appeler la SubscribeCommand méthode, créez une fonction asynchrone invoquant un objet de service client Amazon SNS et transmettant l'objet de paramètres.

Note

Remplacez TOPIC_ARN par le nom de ressource Amazon (ARN) du sujet et EMAIL_ADDRESS par l'adresse e-mail à laquelle vous souhaitez vous abonner.

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' // } };

Pour exécuter l'exemple, entrez ce qui suit à l'invite de commande.

node subscribe-email.js

Cet exemple de code se trouve ici GitHub.

Confirmation des abonnements

Dans cet exemple, utilisez un module Node.js pour vérifier l'intention du propriétaire d'un terminal de recevoir des e-mails en validant le jeton envoyé au point de terminaison par une action d'abonnement précédente.

Créez un libs répertoire et créez un module Node.js avec le nom du fichiersnsClient.js. Copiez-collez le code ci-dessous pour créer l'objet client Amazon SNS. Remplacez REGION par votre AWS région.

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({});

Cet exemple de code se trouve ici GitHub.

Créez un module Node.js nommé confirm-subscription.js. Configurez le SDK comme indiqué précédemment, notamment en installant les clients et les packages requis.

Définissez les paramètres, y compris le TOPIC_ARN etTOKEN, et définissez une valeur de TRUE ou FALSE pourAuthenticateOnUnsubscribe.

Le jeton est un jeton de courte durée envoyé au propriétaire d'un point de terminaison lors d'une SUBSCRIBE action précédente. Par exemple, pour un point de terminaison de messagerie, TOKEN cela se trouve dans l'URL de l'e-mail de confirmation d'abonnement envoyé au propriétaire de l'e-mail. Par exemple, le jeton abc123 se trouve dans l'URL suivante.

Pour appeler la ConfirmSubscriptionCommand méthode, créez une fonction asynchrone invoquant un objet de service client Amazon SNS, en transmettant l'objet de paramètres.

Note

Remplacez TOPIC_ARN par le nom de ressource Amazon (ARN) du sujet, TOKEN par la valeur du jeton provenant de l'URL envoyée au propriétaire du point de terminaison lors d'une Subscribe action précédente, et définissez AuthenticateOnUnsubscribe. par la valeur ou. TRUE 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; };

Pour exécuter l'exemple, entrez ce qui suit à l'invite de commande.

node confirm-subscription.js

Cet exemple de code se trouve ici GitHub.

Abonnement d'un point de terminaison d'application à une rubrique

Dans cet exemple, utilisez un module Node.js pour abonner un point de terminaison d'application mobile afin qu'il reçoive les notifications d'une rubrique Amazon SNS.

Créez un libs répertoire et créez un module Node.js avec le nom du fichiersnsClient.js. Copiez-collez le code ci-dessous pour créer l'objet client Amazon SNS. Remplacez REGION par votre AWS région.

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({});

Cet exemple de code se trouve ici GitHub.

Créez un module Node.js nommé subscribe-app.js. Configurez le SDK comme indiqué précédemment, notamment en installant les modules et packages requis.

Créez un objet contenant le Protocol paramètre TopicArn pour spécifier le application protocole, le sujet auquel vous souhaitez vous abonner et le nom de ressource Amazon (ARN) d'un point de terminaison d'application mobile pour le Endpoint paramètre. Transmettez les paramètres à la méthode SubscribeCommand de la classe client SNS.

Pour appeler la SubscribeCommand méthode, créez une fonction asynchrone invoquant un objet de service Amazon SNS, en transmettant l'objet de paramètres.

Note

Remplacez TOPIC_ARN par le nom de ressource Amazon (ARN) du sujet, et MOBILE_ENDPOINT_ARN par le point de terminaison auquel vous êtes abonné au sujet.

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; };

Pour exécuter l'exemple, entrez ce qui suit à l'invite de commande.

node subscribe-app.js

Cet exemple de code se trouve ici GitHub.

Abonnement d'une fonction Lambda à une rubrique

Dans cet exemple, utilisez un module Node.js pour abonner une AWS Lambda fonction afin qu'elle reçoive des notifications d'une rubrique Amazon SNS.

Créez un libs répertoire et créez un module Node.js avec le nom du fichiersnsClient.js. Copiez-collez le code ci-dessous pour créer l'objet client Amazon SNS. Remplacez REGION par votre AWS région.

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({});

Cet exemple de code se trouve ici GitHub.

Créez un module Node.js nommé subscribe-lambda.js. Configurez le kit SDK comme illustré précédemment.

Créez un objet contenant le Protocol paramètre, spécifiant le lambda protocole, le TopicArn sujet auquel vous souhaitez vous abonner et le nom de ressource Amazon (ARN) d'une AWS Lambda fonction en tant que Endpoint paramètre. Transmettez les paramètres à la méthode SubscribeCommand de la classe client SNS.

Pour appeler la SubscribeCommand méthode, créez une fonction asynchrone invoquant un objet de service client Amazon SNS, en transmettant l'objet de paramètres.

Note

Remplacez TOPIC_ARN par le nom de ressource Amazon (ARN) du sujet, et LAMBDA_FUNCTION_ARN par le nom de ressource Amazon (ARN) de la fonction 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; };

Pour exécuter l'exemple, entrez ce qui suit à l'invite de commande.

node subscribe-lambda.js

Cet exemple de code se trouve ici GitHub.

Désabonnement d'une rubrique

Dans cet exemple, utilisez un module Node.js pour vous désabonner d'un abonnement à une rubrique Amazon SNS.

Créez un libs répertoire et créez un module Node.js avec le nom du fichiersnsClient.js. Copiez-collez le code ci-dessous pour créer l'objet client Amazon SNS. Remplacez REGION par votre AWS région.

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({});

Cet exemple de code se trouve ici GitHub.

Créez un module Node.js nommé unsubscribe.js. Configurez le SDK comme indiqué précédemment, notamment en installant les clients et les packages requis.

Créez un objet contenant le SubscriptionArn paramètre, en spécifiant le nom de ressource Amazon (ARN) de l'abonnement à désabonner. Transmettez les paramètres à la méthode UnsubscribeCommand de la classe client SNS.

Pour appeler la UnsubscribeCommand méthode, créez une fonction asynchrone invoquant un objet de service client Amazon SNS, en transmettant l'objet de paramètres.

Note

Remplacez TOPIC_SUBSCRIPTION_ARN par le nom de ressource Amazon (ARN) de l'abonnement pour vous désabonner.

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; };

Pour exécuter l'exemple, entrez ce qui suit à l'invite de commande.

node unsubscribe.js

Cet exemple de code se trouve ici GitHub.