Gerenciamento de assinaturas no Amazon SNS - AWS SDK for JavaScript

O Guia de API referência da AWS SDK for JavaScript V3 descreve detalhadamente todas as API operações da AWS SDK for JavaScript versão 3 (V3).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Gerenciamento de assinaturas no Amazon SNS

JavaScript code example that applies to Node.js execution

Este exemplo de código Node.js mostra:

  • Como listar todas as assinaturas para um tópico do Amazon SNS.

  • Como inscrever um endereço de e-mail, um endpoint de aplicativo ou uma função do AWS Lambda em um tópico do Amazon SNS.

  • Como cancelar a assinatura dos tópicos do Amazon SNS.

O cenário

Neste exemplo, você usa uma série de módulos do Node.js para publicar mensagens de notificação em tópicos do Amazon SNS. Os módulos do Node.js usam o SDK para JavaScript para gerenciar tópicos usando estes métodos da classe de cliente SNS:

Tarefas de pré-requisito

Para configurar e executar este exemplo, você deve primeiro concluir estas tarefas:

  • Configure o ambiente do projeto para executar estes exemplos do Node TypeScript e instale os módulos do AWS SDK for JavaScript e de terceiros necessários. Siga as instruções no GitHub.

  • Crie um arquivo de configurações compartilhado com as credenciais de usuário. Para obter mais informações sobre como fornecer um arquivo de credenciais compartilhado, consulte Arquivos de configuração e credenciais compartilhados no Guia de referência de ferramentas e SDKs da AWS.

Importante

Esses exemplos demonstram como importar/exportar objetos e comandos do serviço de cliente usando o ECMAScript6 (ES6).

Listar assinaturas em um tópico

Neste exemplo, use um módulo do Node.js para listar todas as assinaturas para um tópico do Amazon SNS.

Crie um diretório libs e um módulo do Node.js com o nome de arquivo snsClient.js. Copie e cole o código abaixo nele, o que cria o objeto de cliente do Amazon SNS. Substitua REGION pela sua região da AWS.

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

Esse código de exemplo pode ser encontrado aqui no GitHub.

Crie um módulo do Node.js com o nome de arquivo list-subscriptions-by-topic.js. Configure o SDK como mostrado anteriormente.

Crie um objeto contendo o parâmetro TopicArn para o tópico cujas assinaturas você deseja listar. Passe os parâmetros para o método ListSubscriptionsByTopicCommand da classe de cliente SNS. Para chamar o método ListSubscriptionsByTopicCommand, crie uma função assíncrona que invoca um objeto de serviço de cliente do Amazon SNS, passando o objeto dos parâmetros.

nota

Substitua TOPIC_ARN pelo nome do recurso da Amazon (ARN) do tópico cujas assinaturas você deseja listar.

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

Para executar o exemplo, digite o seguinte no prompt de comando.

node list-subscriptions-by-topic.js

Esse código de exemplo pode ser encontrado aqui no GitHub.

Inscrever um endereço de e-mail em um tópico

Neste exemplo, use um módulo do Node.js para inscrever um endereço de e-mail de forma que ele receba mensagens de e-mail SMTP de um tópico do Amazon SNS.

Crie um diretório libs e um módulo do Node.js com o nome de arquivo snsClient.js. Copie e cole o código abaixo nele, o que cria o objeto de cliente do Amazon SNS. Substitua REGION pela sua região da AWS.

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

Esse código de exemplo pode ser encontrado aqui no GitHub.

Crie um módulo do Node.js com o nome de arquivo subscribe-email.js. Configure o SDK como mostrado anteriormente.

Crie um objeto que contém o parâmetro Protocol para especificar o protocolo email, o TopicArn do tópico a ser assinado e um endereço de e-mail como Endpoint da mensagem. Passe os parâmetros para o método SubscribeCommand da classe de cliente SNS. Você pode usar o método subscribe para assinar vários endpoints diferentes para um tópico do Amazon SNS, dependendo dos valores usados para os parâmetros passados, como outros exemplos neste tópico mostrarão.

Para chamar o método SubscribeCommand, crie uma função assíncrona que invoca um objeto de serviço de cliente do Amazon SNS, passando o objeto dos parâmetros.

nota

Substitua TOPIC_ARN pelo nome do recurso da Amazon (ARN) do tópico e EMAIL_ADDRESS pelo endereço de e-mail para assinar.

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

Para executar o exemplo, digite o seguinte no prompt de comando.

node subscribe-email.js

Esse código de exemplo pode ser encontrado aqui no GitHub.

Confirmação de assinaturas

Neste exemplo, use um módulo do Node.js para verificar a intenção do proprietário de um endpoint de receber mensagens validando o token enviado para o endpoint por uma ação de assinatura anterior.

Crie um diretório libs e um módulo do Node.js com o nome de arquivo snsClient.js. Copie e cole o código abaixo nele, o que cria o objeto de cliente do Amazon SNS. Substitua REGION pela sua região da AWS.

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

Esse código de exemplo pode ser encontrado aqui no GitHub.

Crie um módulo do Node.js com o nome de arquivo confirm-subscription.js. Configure o SDK conforme mostrado anteriormente, incluindo a instalação dos clientes e pacotes necessários.

Defina os parâmetros, incluindo TOPIC_ARN e TOKEN, e defina um valor de TRUE ou FALSE para AuthenticateOnUnsubscribe.

O token é um token de curta duração enviado ao proprietário de um endpoint durante uma ação de SUBSCRIBE anterior. Por exemplo, para um endpoint de e-mail, o TOKEN está no URL do e-mail de confirmação da assinatura enviado ao proprietário do e-mail. Por exemplo, abc123 é o token no seguinte URL.

Amazon Web Services Simple Notification Service subscription confirmation page.

Para chamar o método ConfirmSubscriptionCommand, crie uma função assíncrona que invoca um objeto de serviço de cliente do Amazon SNS, passando o objeto dos parâmetros.

nota

Substitua TOPIC_ARN pelo nome do recurso da Amazon (ARN) do tópico, TOKEN pelo valor do token do URL enviado ao proprietário do endpoint em uma ação de Subscribe anterior e defina AuthenticateOnUnsubscribe com um valor de TRUE ou 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; };

Para executar o exemplo, digite o seguinte no prompt de comando.

node confirm-subscription.js

Esse código de exemplo pode ser encontrado aqui no GitHub.

Inscrever um endpoint de aplicativo em um tópico

Neste exemplo, use um módulo do Node.js para inscrever um endpoint de aplicativo móvel para receber notificações de um tópico do Amazon SNS.

Crie um diretório libs e um módulo do Node.js com o nome de arquivo snsClient.js. Copie e cole o código abaixo nele, o que cria o objeto de cliente do Amazon SNS. Substitua REGION pela sua região da AWS.

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

Esse código de exemplo pode ser encontrado aqui no GitHub.

Crie um módulo do Node.js com o nome de arquivo subscribe-app.js. Configure o SDK conforme mostrado anteriormente, incluindo a instalação dos módulos e pacotes necessários.

Crie um objeto contendo o parâmetro Protocol para especificar o protocolo application, o TopicArn para o tópico no qual será feita a assinatura e o nome do recurso da Amazon (ARN) do endpoint de um aplicativo móvel para o parâmetro Endpoint. Passe os parâmetros para o método SubscribeCommand da classe de cliente SNS.

Para chamar o método SubscribeCommand, crie uma função assíncrona que invoca um objeto de serviço do Amazon SNS, passando o objeto dos parâmetros.

nota

Substitua TOPIC_ARN pelo nome do recurso da Amazon (ARN) do tópico e MOBILE_ENDPOINT_ARN pelo endpoint que você está assinando o tópico.

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

Para executar o exemplo, digite o seguinte no prompt de comando.

node subscribe-app.js

Esse código de exemplo pode ser encontrado aqui no GitHub.

Assinatura de uma função do Lambda em um tópico

Neste exemplo, use um módulo do Node.js para inscrever uma função do AWS Lambda para receber notificações de um tópico do Amazon SNS.

Crie um diretório libs e um módulo do Node.js com o nome de arquivo snsClient.js. Copie e cole o código abaixo nele, o que cria o objeto de cliente do Amazon SNS. Substitua REGION pela sua região da AWS.

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

Esse código de exemplo pode ser encontrado aqui no GitHub.

Crie um módulo do Node.js com o nome de arquivo subscribe-lambda.js. Configure o SDK como mostrado anteriormente.

Crie um objeto contendo o parâmetro Protocol, especificando o protocolo lambda, o TopicArn do tópico de inscrição e o nome do recurso da Amazon (ARN) de uma função AWS Lambda como o parâmetro do Endpoint. Passe os parâmetros para o método SubscribeCommand da classe de cliente SNS.

Para chamar o método SubscribeCommand, crie uma função assíncrona que invoca um objeto de serviço de cliente do Amazon SNS, passando o objeto dos parâmetros.

nota

Substitua TOPIC_ARN pelo nome do recurso da Amazon (ARN) do tópico e LAMBDA_FUNCTION_ARN pelo nome do recurso da Amazon (ARN) da função do 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; };

Para executar o exemplo, digite o seguinte no prompt de comando.

node subscribe-lambda.js

Esse código de exemplo pode ser encontrado aqui no GitHub.

Cancelar a inscrição em um tópico

Neste exemplo, use um módulo do Node.js para cancelar a assinatura de um tópico do Amazon SNS.

Crie um diretório libs e um módulo do Node.js com o nome de arquivo snsClient.js. Copie e cole o código abaixo nele, o que cria o objeto de cliente do Amazon SNS. Substitua REGION pela sua região da AWS.

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

Esse código de exemplo pode ser encontrado aqui no GitHub.

Crie um módulo do Node.js com o nome de arquivo unsubscribe.js. Configure o SDK conforme mostrado anteriormente, incluindo a instalação dos clientes e pacotes necessários.

Crie um objeto que contém o parâmetro SubscriptionArn, especificando o nome do recurso da Amazon (ARN) da assinatura para cancelar a assinatura. Passe os parâmetros para o método UnsubscribeCommand da classe de cliente SNS.

Para chamar o método UnsubscribeCommand, crie uma função assíncrona que invoca um objeto de serviço de cliente do Amazon SNS, passando o objeto dos parâmetros.

nota

Substitua TOPIC_SUBSCRIPTION_ARN pelo nome do recurso da Amazon (ARN) da assinatura para cancelar a assinatura.

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

Para executar o exemplo, digite o seguinte no prompt de comando.

node unsubscribe.js

Esse código de exemplo pode ser encontrado aqui no GitHub.