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
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.
![](images/token.png)
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