Verwaltung von Abonnements in Amazon SNS - AWS SDK for JavaScript

Das AWS SDK for JavaScript APIV3-Referenzhandbuch beschreibt detailliert alle API Funktionen für die AWS SDK for JavaScript Version 3 (V3).

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwaltung von Abonnements in Amazon SNS

JavaScript code example that applies to Node.js execution

Dieses Node.js-Codebeispiel zeigt:

  • So listen Sie alle Abonnements für ein Amazon SNS SNS-Thema auf.

  • So abonnieren Sie eine E-Mail-Adresse, einen Anwendungsendpunkt oder eine AWS Lambda Funktion für ein Amazon SNS SNS-Thema.

  • So melden Sie sich von Amazon SNS SNS-Themen ab.

Das Szenario

In diesem Beispiel verwenden Sie eine Reihe von Node.js -Modulen, um Benachrichtigungen zu Amazon SNS SNS-Themen zu veröffentlichen. Die Module Node.js verwenden das SDK JavaScript zur Verwaltung von Themen mithilfe der folgenden Methoden der SNS Client-Klasse:

Erforderliche Aufgaben

Zum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

  • Richten Sie die Projektumgebung ein, um diese TypeScript Node-Beispiele auszuführen, und installieren Sie die erforderlichen Module AWS SDK for JavaScript und Module von Drittanbietern. Folgen Sie den Anweisungen auf GitHub.

  • Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. Weitere Informationen zur Bereitstellung einer Datei mit gemeinsam genutzten Anmeldeinformationen finden Sie unter Dateien mit gemeinsam genutzten Konfigurationen und Anmeldeinformationen im Referenzhandbuch für AWS SDKs und Tools.

Wichtig

Diese Beispiele zeigen, wie Client-Dienstobjekte und Befehle mithilfe von ECMAScript6 (ES6) importiert/exportiert werden.

  • Dies erfordert Node.js Version 13.x oder höher. Informationen zum Herunterladen und Installieren der neuesten Version von Node.js finden Sie unter Node.js downloads. .

  • Wenn Sie die CommonJS-Syntax bevorzugen, finden Sie weitere Informationen unterJavaScript ES6/CommonJS-Syntax.

Auflisten von Abonnements eines Themas

Verwenden Sie in diesem Beispiel ein Modul Node.js, um alle Abonnements für ein Amazon SNS SNS-Thema aufzulisten.

Erstellen Sie ein libs Verzeichnis und ein Modul Node.js mit dem DateinamensnsClient.js. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das Amazon SNS SNS-Client-Objekt erstellt wird. Ersetzen Sie REGION durch Ihre AWS Region.

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

Diesen Beispielcode finden Sie hier auf GitHub.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen list-subscriptions-by-topic.js. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt, das den TopicArn-Parameter für das Thema enthält, dessen Abonnements Sie auflisten möchten. Übergeben Sie die Parameter an die ListSubscriptionsByTopicCommand-Methode der Client-Klasse SNS. Um die ListSubscriptionsByTopicCommand Methode aufzurufen, erstellen Sie eine asynchrone Funktion, die ein Amazon SNS SNS-Client-Serviceobjekt aufruft und das Parameter-Objekt übergibt.

Anmerkung

Ersetzen Sie TOPIC_ARN durch den Amazon-Ressourcennamen (ARN) für das Thema, dessen Abonnements Sie auflisten möchten.

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

Um das Beispiel auszuführen, geben Sie an der Befehlszeile Folgendes ein.

node list-subscriptions-by-topic.js

Dieser Beispielcode finden Sie hier unter GitHub.

Abonnieren eines Themas durch Hinterlegen einer E-Mail-Adresse

Verwenden Sie in diesem Beispiel ein Modul Node.js, um eine E-Mail-Adresse zu abonnieren, sodass sie SMTP-E-Mail-Nachrichten von einem Amazon SNS SNS-Thema empfängt.

Erstellen Sie ein libs Verzeichnis und ein Modul Node.js mit dem Dateinamen. snsClient.js Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das Amazon SNS SNS-Client-Objekt erstellt wird. Ersetzen Sie REGION durch Ihre AWS Region.

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

Diesen Beispielcode finden Sie hier auf GitHub.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen subscribe-email.js. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt, das den Protocol-Parameter enthält, um das email-Protokoll, den TopicArn für das Thema, das abonniert werden soll, und eine E-Mail-Adresse als Endpoint der Nachricht anzugeben. Übergeben Sie die Parameter an die SubscribeCommand-Methode der Client-Klasse SNS. Sie können die subscribe Methode verwenden, um mehrere verschiedene Endpunkte für ein Amazon SNS SNS-Thema zu abonnieren, abhängig von den Werten, die für die übergebenen Parameter verwendet werden, wie andere Beispiele in diesem Thema zeigen werden.

Um die SubscribeCommand Methode aufzurufen, erstellen Sie eine asynchrone Funktion, die ein Amazon SNS SNS-Client-Serviceobjekt aufruft und das Parameter-Objekt übergibt.

Anmerkung

Ersetzen Sie TOPIC_ARN durch den Amazon-Ressourcennamen (ARN) für das Thema und EMAIL_ADDRESS durch die E-Mail-Adresse, die Sie abonnieren möchten.

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

Um das Beispiel auszuführen, geben Sie an der Befehlszeile Folgendes ein.

node subscribe-email.js

Dieser Beispielcode finden Sie hier unter GitHub.

Bestätigen von Abonnements

Verwenden Sie in diesem Beispiel ein Modul Node.js, um die Absicht eines Endpunktbesitzers zu überprüfen, E-Mails zu empfangen, indem Sie das Token validieren, das durch eine vorherige Abonnement-Aktion an den Endpunkt gesendet wurde.

Erstellen Sie ein libs Verzeichnis und ein Modul Node.js mit dem DateinamensnsClient.js. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das Amazon SNS SNS-Client-Objekt erstellt wird. Ersetzen Sie REGION durch Ihre AWS Region.

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

Diesen Beispielcode finden Sie hier auf GitHub.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen confirm-subscription.js. Konfigurieren Sie das SDK wie zuvor gezeigt, einschließlich der Installation der erforderlichen Clients und Pakete.

Definieren Sie die Parameter, einschließlich TOPIC_ARN undTOKEN, und definieren Sie einen Wert von TRUE oder FALSE fürAuthenticateOnUnsubscribe.

Das Token ist ein kurzlebiges Token, das während einer vorherigen SUBSCRIBE Aktion an den Besitzer eines Endpunkts gesendet wurde. Bei einem E-Mail-Endpunkt TOKEN steht es beispielsweise in der URL der E-Mail zur Bestätigung des Abonnements, die an den E-Mail-Besitzer gesendet wurde. Zum Beispiel abc123 ist das Token in der folgenden URL.

Um die ConfirmSubscriptionCommand Methode aufzurufen, erstellen Sie eine asynchrone Funktion, die ein Amazon SNS SNS-Client-Serviceobjekt aufruft und das Parameter-Objekt übergibt.

Anmerkung

Ersetzen Sie TOPIC_ARN durch den Amazon-Ressourcennamen (ARN) für das Thema, TOKEN durch den Token-Wert aus der URL, die in einer früheren Subscribe Aktion an den Endpoint-Besitzer gesendet wurde, und definiere AuthenticateOnUnsubscribe. mit dem Wert oder. 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; };

Um das Beispiel auszuführen, geben Sie an der Befehlszeile Folgendes ein.

node confirm-subscription.js

Dieser Beispielcode finden Sie hier unter GitHub.

Abonnieren eines Themas mit einem Anwendungsendpunkt

Verwenden Sie in diesem Beispiel ein Modul Node.js, um einen mobilen Anwendungsendpunkt zu abonnieren, sodass dieser Benachrichtigungen von einem Amazon SNS SNS-Thema empfängt.

Erstellen Sie ein libs Verzeichnis und ein Modul Node.js mit dem DateinamensnsClient.js. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das Amazon SNS SNS-Client-Objekt erstellt wird. Ersetzen Sie REGION durch Ihre AWS Region.

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

Diesen Beispielcode finden Sie hier auf GitHub.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen subscribe-app.js. Konfigurieren Sie das SDK wie zuvor gezeigt, einschließlich der Installation der erforderlichen Module und Pakete.

Erstellen Sie ein Objekt, das den Protocol Parameter zur Angabe des application Protokolls, das TopicArn für das zu abonnierende Thema und den Amazon-Ressourcennamen (ARN) eines mobilen Anwendungsendpunkts für den Endpoint Parameter enthält. Übergeben Sie die Parameter an die SubscribeCommand-Methode der Client-Klasse SNS.

Um die SubscribeCommand Methode aufzurufen, erstellen Sie eine asynchrone Funktion, die ein Amazon SNS-Serviceobjekt aufruft und das Parameterobjekt übergibt.

Anmerkung

Ersetzen Sie TOPIC_ARN durch den Amazon-Ressourcennamen (ARN) für das Thema und MOBILE_ENDPOINT_ARN durch den Endpunkt, den Sie für das Thema abonnieren.

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

Um das Beispiel auszuführen, geben Sie an der Befehlszeile Folgendes ein.

node subscribe-app.js

Dieser Beispielcode finden Sie hier unter GitHub.

Abonnieren einer Lambda-Funktion für ein Thema

Verwenden Sie in diesem Beispiel ein Modul Node.js, um eine AWS Lambda Funktion zu abonnieren, sodass sie Benachrichtigungen von einem Amazon SNS SNS-Thema empfängt.

Erstellen Sie ein libs Verzeichnis und ein Modul Node.js mit dem DateinamensnsClient.js. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das Amazon SNS SNS-Client-Objekt erstellt wird. Ersetzen Sie REGION durch Ihre AWS Region.

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

Diesen Beispielcode finden Sie hier auf GitHub.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen subscribe-lambda.js. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt, das den Protocol Parameter enthält und lambda das Protokoll, das TopicArn für das zu abonnierende Thema und den Amazon-Ressourcennamen (ARN) einer AWS Lambda Funktion als Endpoint Parameter angibt. Übergeben Sie die Parameter an die SubscribeCommand-Methode der Client-Klasse SNS.

Um die SubscribeCommand Methode aufzurufen, erstellen Sie eine asynchrone Funktion, die ein Amazon SNS SNS-Client-Serviceobjekt aufruft und das Parameter-Objekt übergibt.

Anmerkung

Ersetzen Sie TOPIC_ARN durch den Amazon-Ressourcennamen (ARN) für das Thema und LAMBDA_FUNCTION_ARN durch den Amazon-Ressourcennamen (ARN) der Lambda-Funktion.

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

Um das Beispiel auszuführen, geben Sie an der Befehlszeile Folgendes ein.

node subscribe-lambda.js

Dieser Beispielcode finden Sie hier unter GitHub.

Abmelden von einem Thema

Verwenden Sie in diesem Beispiel ein Modul Node.js, um ein Amazon SNS SNS-Themenabonnement zu kündigen.

Erstellen Sie ein libs Verzeichnis und ein Modul Node.js mit dem DateinamensnsClient.js. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das Amazon SNS SNS-Client-Objekt erstellt wird. Ersetzen Sie REGION durch Ihre AWS Region.

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

Diesen Beispielcode finden Sie hier auf GitHub.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen unsubscribe.js. Konfigurieren Sie das SDK wie zuvor gezeigt, einschließlich der Installation der erforderlichen Clients und Pakete.

Erstellen Sie ein Objekt, das den SubscriptionArn Parameter enthält und den Amazon-Ressourcennamen (ARN) des Abonnements angibt, das gekündigt werden soll. Übergeben Sie die Parameter an die UnsubscribeCommand-Methode der Client-Klasse SNS.

Um die UnsubscribeCommand Methode aufzurufen, erstellen Sie eine asynchrone Funktion, die ein Amazon SNS SNS-Client-Serviceobjekt aufruft und das Parameter-Objekt übergibt.

Anmerkung

Ersetzen Sie TOPIC_SUBSCRIPTION_ARN durch den Amazon-Ressourcennamen (ARN) des Abonnements, um das Abonnement zu kündigen.

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

Um das Beispiel auszuführen, geben Sie an der Befehlszeile Folgendes ein.

node unsubscribe.js

Dieser Beispielcode finden Sie hier unter GitHub.