Mengelola Langganan di Amazon SNS - AWS SDK for JavaScript

Panduan API Referensi AWS SDK for JavaScript V3 menjelaskan secara rinci semua API operasi untuk AWS SDK for JavaScript versi 3 (V3).

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengelola Langganan di Amazon SNS

JavaScript code example that applies to Node.js execution

Contoh kode Node.js ini menunjukkan:

  • Cara membuat daftar semua langganan ke topik Amazon SNS.

  • Cara berlangganan alamat email, titik akhir aplikasi, atau AWS Lambda fungsi ke topik Amazon SNS.

  • Cara berhenti berlangganan dari topik Amazon SNS.

Skenario

Dalam contoh ini, Anda menggunakan serangkaian modul Node.js untuk mempublikasikan pesan notifikasi ke topik Amazon SNS. Modul Node.js menggunakan SDK JavaScript untuk mengelola topik menggunakan metode kelas SNS klien berikut:

Tugas Prasyarat

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:

  • Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK for JavaScript dan pihak ketiga. Ikuti instruksi pada GitHub.

  • Buat file konfigurasi bersama dengan kredensi pengguna Anda. Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File konfigurasi dan kredensial bersama di Panduan Referensi AWSSDK dan Alat.

penting

Contoh-contoh ini menunjukkan cara mengimpor/mengekspor objek dan perintah layanan klien menggunakan ECMAScript6 (ES6).

Daftar Langganan ke Topik

Dalam contoh ini, gunakan modul Node.js untuk mencantumkan semua langganan ke topik Amazon SNS.

Buat libs direktori, dan buat modul Node.js dengan nama filesnsClient.js. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti REGION dengan AWS Region Anda.

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

Kode contoh ini dapat ditemukan di sini GitHub.

Buat modul Node.js dengan nama filelist-subscriptions-by-topic.js. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya.

Buat objek yang berisi TopicArn parameter untuk topik yang langganannya ingin Anda daftarkan. Lewati parameter ke ListSubscriptionsByTopicCommand metode kelas SNS klien. Untuk memanggil ListSubscriptionsByTopicCommand metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, dan meneruskan objek parameter.

catatan

Ganti TOPIC_ARN dengan Amazon Resource Name (ARN) untuk topik yang langganannya ingin Anda daftarkan.

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

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

node list-subscriptions-by-topic.js

Kode contoh ini dapat ditemukan di sini GitHub.

Berlangganan Alamat Email ke Topik

Dalam contoh ini, gunakan modul Node.js untuk berlangganan alamat email sehingga menerima pesan email SMTP dari topik Amazon SNS.

Buat libs direktori, dan buat modul Node.js dengan nama filesnsClient.js. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti REGION dengan AWS Region Anda.

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

Kode contoh ini dapat ditemukan di sini GitHub.

Buat modul Node.js dengan nama filesubscribe-email.js. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya.

Buat objek yang berisi Protocol parameter untuk menentukan email protokol, topik TopicArn untuk berlangganan, dan alamat email sebagai pesanEndpoint. Lewati parameter ke SubscribeCommand metode kelas SNS klien. Anda dapat menggunakan subscribe metode ini untuk berlangganan beberapa titik akhir yang berbeda ke topik Amazon SNS, tergantung pada nilai yang digunakan untuk parameter yang diteruskan, seperti contoh lain dalam topik ini akan ditampilkan.

Untuk memanggil SubscribeCommand metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, dan meneruskan objek parameter.

catatan

Ganti TOPIC_ARN dengan Amazon Resource Name (ARN) untuk topik tersebut, dan EMAIL_ADDRESS dengan alamat email untuk berlangganan.

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

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

node subscribe-email.js

Kode contoh ini dapat ditemukan di sini GitHub.

Mengonfirmasi Langganan

Dalam contoh ini, gunakan modul Node.js untuk memverifikasi maksud pemilik endpoint untuk menerima email dengan memvalidasi token yang dikirim ke titik akhir dengan tindakan berlangganan sebelumnya.

Buat libs direktori, dan buat modul Node.js dengan nama filesnsClient.js. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti REGION dengan AWS Region Anda.

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

Kode contoh ini dapat ditemukan di sini GitHub.

Buat modul Node.js dengan nama fileconfirm-subscription.js. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Tentukan parameter, termasuk TOPIC_ARN danTOKEN, dan tentukan nilai TRUE atau FALSE untukAuthenticateOnUnsubscribe.

Token adalah token berumur pendek yang dikirim ke pemilik titik akhir selama tindakan sebelumnyaSUBSCRIBE. Misalnya, untuk titik akhir email TOKEN ada di URL email Konfirmasi Langganan yang dikirim ke pemilik email. Misalnya, abc123 adalah token di URL berikut.

Untuk memanggil ConfirmSubscriptionCommand metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, melewati objek parameter.

catatan

Ganti TOPIC_ARN dengan Amazon Resource Name (ARN) untuk topik, TOKEN dengan nilai token dari URL yang dikirim ke pemilik titik akhir dalam Subscribe tindakan sebelumnya, dan tentukan AuthenticateOnUnsubscribe. dengan nilai or. 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; };

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

node confirm-subscription.js

Kode contoh ini dapat ditemukan di sini GitHub.

Berlangganan Endpoint Aplikasi ke Topik

Dalam contoh ini, gunakan modul Node.js untuk berlangganan titik akhir aplikasi seluler sehingga menerima pemberitahuan dari topik Amazon SNS.

Buat libs direktori, dan buat modul Node.js dengan nama filesnsClient.js. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti REGION dengan AWS Region Anda.

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

Kode contoh ini dapat ditemukan di sini GitHub.

Buat modul Node.js dengan nama filesubscribe-app.js. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal modul dan paket yang diperlukan.

Buat objek yang berisi Protocol parameter untuk menentukan application protokol, topik TopicArn untuk berlangganan, dan Nama Sumber Daya Amazon (ARN) dari titik akhir aplikasi seluler untuk parameter tersebut. Endpoint Lewati parameter ke SubscribeCommand metode kelas SNS klien.

Untuk memanggil SubscribeCommand metode, buat fungsi asinkron yang menjalankan objek layanan Amazon SNS, melewati objek parameter.

catatan

Ganti TOPIC_ARN dengan Amazon Resource Name (ARN) untuk topik tersebut, dan MOBILE_ENDPOINT_ARN dengan titik akhir yang Anda berlangganan topik.

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

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

node subscribe-app.js

Kode contoh ini dapat ditemukan di sini GitHub.

Berlangganan Fungsi Lambda ke Topik

Dalam contoh ini, gunakan modul Node.js untuk berlangganan suatu AWS Lambda fungsi sehingga menerima pemberitahuan dari topik Amazon SNS.

Buat libs direktori, dan buat modul Node.js dengan nama filesnsClient.js. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti REGION dengan AWS Region Anda.

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

Kode contoh ini dapat ditemukan di sini GitHub.

Buat modul Node.js dengan nama filesubscribe-lambda.js. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya.

Buat objek yang berisi Protocol parameter, tentukan lambda protokol, topik TopicArn untuk berlangganan, dan Amazon Resource Name (ARN) dari fungsi AWS Lambda sebagai Endpoint parameter. Lewati parameter ke SubscribeCommand metode kelas SNS klien.

Untuk memanggil SubscribeCommand metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, melewati objek parameter.

catatan

Ganti TOPIC_ARN dengan Amazon Resource Name (ARN) untuk topik tersebut, dan LAMBDA_FUNCTION_ARN dengan Amazon Resource Name (ARN) dari fungsi 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; };

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

node subscribe-lambda.js

Kode contoh ini dapat ditemukan di sini GitHub.

Berhenti berlangganan dari topik

Dalam contoh ini, gunakan modul Node.js untuk berhenti berlangganan langganan topik Amazon SNS.

Buat libs direktori, dan buat modul Node.js dengan nama filesnsClient.js. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti REGION dengan AWS Region Anda.

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

Kode contoh ini dapat ditemukan di sini GitHub.

Buat modul Node.js dengan nama fileunsubscribe.js. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek yang berisi SubscriptionArn parameter, tentukan Amazon Resource Name (ARN) dari langganan untuk berhenti berlangganan. Lewati parameter ke UnsubscribeCommand metode kelas SNS klien.

Untuk memanggil UnsubscribeCommand metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, melewati objek parameter.

catatan

Ganti TOPIC_SUBSCRIPTION_ARN dengan Amazon Resource Name (ARN) dari langganan untuk berhenti berlangganan.

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

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

node unsubscribe.js

Kode contoh ini dapat ditemukan di sini GitHub.