Gestione degli abbonamenti in Amazon SNS - AWS SDK for JavaScript

La guida API di riferimento AWS SDK for JavaScript V3 descrive in dettaglio tutte le API operazioni per la AWS SDK for JavaScript versione 3 (V3).

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Gestione degli abbonamenti in Amazon SNS

JavaScript code example that applies to Node.js execution

Questo esempio di codice di Node.js illustra:

  • Come elencare tutti gli abbonamenti a un argomento di Amazon SNS.

  • Come sottoscrivere un indirizzo e-mail, un endpoint dell'applicazione o una AWS Lambda funzione a un argomento di Amazon SNS.

  • Come annullare l'iscrizione agli argomenti di Amazon SNS.

Lo scenario

In questo esempio, utilizzi una serie di moduli Node.js per pubblicare messaggi di notifica su argomenti di Amazon SNS. I moduli Node.js utilizzano l'SDK per JavaScript gestire gli argomenti utilizzando questi metodi della classe SNS client:

Attività prerequisite

Per configurare ed eseguire questo esempio, è necessario completare queste attività:

  • Configura l'ambiente di progetto per eseguire questi TypeScript esempi di Node e installa i moduli richiesti AWS SDK for JavaScript e di terze parti. Segui le istruzioni su GitHub.

  • Creazione di un file di configurazione condiviso con le credenziali utente. Per ulteriori informazioni sulla fornitura di un file di credenziali condiviso, consulta File di configurazione e credenziali condivisi nella Guida di riferimento agli AWSSDK e agli strumenti.

Importante

Questi esempi dimostrano come importare/esportare oggetti e comandi del servizio client utilizzando ECMAScript6 (ES6).

Elenco di sottoscrizioni a un argomento

In questo esempio, usa un modulo Node.js per elencare tutte le sottoscrizioni a un argomento di Amazon SNS.

Crea una libs directory e crea un modulo Node.js con il nome del file. snsClient.js Copia e incolla il codice seguente, che crea l'oggetto client Amazon SNS. Sostituisci REGION con la tua AWS regione.

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

Questo codice di esempio può essere trovato qui GitHub.

Crea un modulo Node.js con il nome del file list-subscriptions-by-topic.js. Configura l'SDK come mostrato in precedenza.

Crea un oggetto contenente il parametro TopicArn per l'argomento di cui si desideri elencare le sottoscrizioni. Trasferisci i parametri al metodo ListSubscriptionsByTopicCommand della classe client SNS. Per chiamare il ListSubscriptionsByTopicCommand metodo, crea una funzione asincrona che richiama un oggetto del servizio client Amazon SNS e passa l'oggetto parameters.

Nota

Sostituisci TOPIC_ARN con l'Amazon Resource Name (ARN) per l'argomento di cui desideri elencare gli abbonamenti.

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

Per eseguire l'esempio, inserisci quanto segue al prompt dei comandi.

node list-subscriptions-by-topic.js

Questo codice di esempio può essere trovato qui su GitHub.

Sottoscrizione di un indirizzo e-mail a un argomento

In questo esempio, usa un modulo Node.js per sottoscrivere un indirizzo e-mail in modo che riceva messaggi e-mail SMTP da un argomento di Amazon SNS.

Crea una libs directory e crea un modulo Node.js con il nome del file. snsClient.js Copia e incolla il codice seguente, che crea l'oggetto client Amazon SNS. Sostituisci REGION con la tua AWS regione.

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

Questo codice di esempio può essere trovato qui GitHub.

Crea un modulo Node.js con il nome del file subscribe-email.js. Configura l'SDK come mostrato in precedenza.

Crea un oggetto contenente il parametro Protocol per specificare il protocollo email, il parametro TopicArn per l'argomento a cui effettuare la sottoscrizione e un indirizzo e-mail come Endpoint del messaggio. Trasferisci i parametri al metodo SubscribeCommand della classe client SNS. Puoi utilizzare il subscribe metodo per sottoscrivere diversi endpoint a un argomento Amazon SNS, a seconda dei valori utilizzati per i parametri passati, come mostreranno altri esempi in questo argomento.

Per chiamare il SubscribeCommand metodo, crea una funzione asincrona che richiama un oggetto del servizio client Amazon SNS e passa l'oggetto parameters.

Nota

Sostituisci TOPIC_ARN con l'Amazon Resource Name (ARN) per l'argomento e EMAIL_ADDRESS con l'indirizzo e-mail a cui iscriverti.

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

Per eseguire l'esempio, inserisci quanto segue al prompt dei comandi.

node subscribe-email.js

Questo codice di esempio può essere trovato qui su GitHub.

Conferma delle sottoscrizioni

In questo esempio, utilizzate un modulo Node.js per verificare l'intenzione del proprietario di un endpoint di ricevere e-mail convalidando il token inviato all'endpoint con una precedente azione di sottoscrizione.

Crea una libs directory e crea un modulo Node.js con il nome del file. snsClient.js Copia e incolla il codice seguente, che crea l'oggetto client Amazon SNS. Sostituisci REGION con la tua AWS regione.

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

Questo codice di esempio può essere trovato qui GitHub.

Crea un modulo Node.js con il nome del file confirm-subscription.js. Configura l'SDK come mostrato in precedenza, inclusa l'installazione dei client e dei pacchetti richiesti.

Definite i parametri, incluso TOPIC_ARN eTOKEN, e definite un valore di TRUE o FALSE perAuthenticateOnUnsubscribe.

Il token è un token di breve durata inviato al proprietario di un endpoint durante un'azione precedenteSUBSCRIBE. Ad esempio, per un endpoint di posta elettronica, TOKEN si trova nell'URL dell'e-mail di conferma dell'iscrizione inviata al proprietario dell'e-mail. Ad esempio, abc123 è il token nel seguente URL.

Per chiamare il ConfirmSubscriptionCommand metodo, crea una funzione asincrona che richiama un oggetto del servizio client Amazon SNS, passando l'oggetto parameters.

Nota

Sostituisci TOPIC_ARN con l'Amazon Resource Name (ARN) per l'argomento, TOKEN con il valore del token dell'URL inviato al proprietario dell'endpoint in un'Subscribeazione precedente e definisci AuthenticateOnUnsubscribe. con un valore di o. 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; };

Per eseguire l'esempio, inserisci quanto segue al prompt dei comandi.

node confirm-subscription.js

Questo codice di esempio può essere trovato qui su GitHub.

Sottoscrizione di un endpoint di applicazione a un argomento

In questo esempio, usa un modulo Node.js per sottoscrivere un endpoint di applicazione mobile in modo che riceva notifiche da un argomento di Amazon SNS.

Crea una libs directory e crea un modulo Node.js con il nome del file. snsClient.js Copia e incolla il codice seguente, che crea l'oggetto client Amazon SNS. Sostituisci REGION con la tua AWS regione.

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

Questo codice di esempio può essere trovato qui GitHub.

Crea un modulo Node.js con il nome del file subscribe-app.js. Configura l'SDK come mostrato in precedenza, inclusa l'installazione dei moduli e dei pacchetti richiesti.

Crea un oggetto contenente il Protocol parametro TopicArn per specificare il application protocollo, l'argomento a cui sottoscrivere e l'Amazon Resource Name (ARN) di un endpoint di applicazione mobile per il parametro. Endpoint Trasferisci i parametri al metodo SubscribeCommand della classe client SNS.

Per chiamare il SubscribeCommand metodo, crea una funzione asincrona che richiama un oggetto di servizio Amazon SNS, passando l'oggetto parameters.

Nota

Sostituisci TOPIC_ARN con l'Amazon Resource Name (ARN) per l'argomento e MOBILE_ENDPOINT_ARN con l'endpoint a cui stai sottoscrivendo l'argomento.

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

Per eseguire l'esempio, inserisci quanto segue al prompt dei comandi.

node subscribe-app.js

Questo codice di esempio può essere trovato qui su GitHub.

Sottoscrizione di una funzione Lambda a un argomento

In questo esempio, usa un modulo Node.js per sottoscrivere una AWS Lambda funzione in modo che riceva notifiche da un argomento di Amazon SNS.

Crea una libs directory e crea un modulo Node.js con il nome snsClient.js del file. Copia e incolla il codice seguente, che crea l'oggetto client Amazon SNS. Sostituisci REGION con la tua AWS regione.

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

Questo codice di esempio può essere trovato qui GitHub.

Crea un modulo Node.js con il nome del file subscribe-lambda.js. Configura l'SDK come mostrato in precedenza.

Crea un oggetto contenente il Protocol parametro, specificando il lambda protocollo, l'TopicArnargomento a cui sottoscrivere e l'Amazon Resource Name (ARN) di AWS Lambda una funzione come Endpoint parametro. Trasferisci i parametri al metodo SubscribeCommand della classe client SNS.

Per chiamare il SubscribeCommand metodo, crea una funzione asincrona che richiama un oggetto del servizio client Amazon SNS, passando l'oggetto parameters.

Nota

Sostituisci TOPIC_ARN con Amazon Resource Name (ARN) per l'argomento e LAMBDA_FUNCTION_ARN con l'Amazon Resource Name (ARN) della funzione 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; };

Per eseguire l'esempio, inserisci quanto segue al prompt dei comandi.

node subscribe-lambda.js

Questo codice di esempio può essere trovato qui su GitHub.

Annullamento della sottoscrizione a un argomento

In questo esempio, usa un modulo Node.js per annullare l'iscrizione a un argomento Amazon SNS.

Crea una libs directory e crea un modulo Node.js con il nome del file. snsClient.js Copia e incolla il codice seguente, che crea l'oggetto client Amazon SNS. Sostituisci REGION con la tua AWS regione.

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

Questo codice di esempio può essere trovato qui GitHub.

Crea un modulo Node.js con il nome del file unsubscribe.js. Configura l'SDK come mostrato in precedenza, inclusa l'installazione dei client e dei pacchetti richiesti.

Crea un oggetto contenente il SubscriptionArn parametro, specificando l'Amazon Resource Name (ARN) dell'abbonamento per annullare l'iscrizione. Trasferisci i parametri al metodo UnsubscribeCommand della classe client SNS.

Per chiamare il UnsubscribeCommand metodo, crea una funzione asincrona che richiama un oggetto del servizio client Amazon SNS, passando l'oggetto parameters.

Nota

Sostituisci TOPIC_SUBSCRIPTION_ARN con l'Amazon Resource Name (ARN) dell'abbonamento per annullare l'iscrizione.

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

Per eseguire l'esempio, inserisci quanto segue al prompt dei comandi.

node unsubscribe.js

Questo codice di esempio può essere trovato qui su GitHub.