

 La [Guía de referencia de la API de AWS SDK for JavaScript V3](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/) describe en detalle todas las operaciones de la API para la versión 3 (V3) de AWS SDK for JavaScript. 

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ejemplos de Amazon Simple Notification Service
<a name="sns-examples"></a>

Amazon Simple Notification Service (Amazon SNS) es un servicio web que coordina y gestiona la entrega o el envío de mensajes a los puntos de conexión o clientes suscritos. 

En Amazon SNS, existen dos tipos de clientes, publicadores y suscriptores, también conocidos como productores y consumidores. 

![\[Relación entre JavaScript los entornos, el SDK y Amazon SNS\]](http://docs.aws.amazon.com/es_es/sdk-for-javascript/v3/developer-guide/images/code-samples-sns.png)


Los publicadores se comunican de forma asíncrona con los suscriptores generando y enviando un mensaje a un tema, que es un punto de acceso lógico y un canal de comunicación. Los suscriptores (servidores web, direcciones de correo electrónico, colas de Amazon SQS, AWS Lambda funciones) consumen o reciben el mensaje o la notificación a través de uno de los protocolos compatibles (Amazon SQS, HTTP/S, correo electrónico, SMS AWS Lambda) cuando se suscriben al tema. 

La JavaScript API de Amazon SNS se expone en la [clase:](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/SNS/) SNS. 

**Topics**
+ [Administración de temas en Amazon SNS](sns-examples-managing-topics.md)
+ [Publicación de mensajes en Amazon SNS](sns-examples-publishing-messages.md)
+ [Administración de suscripciones en Amazon SNS](sns-examples-subscribing-unsubscribing-topics.md)
+ [Envío de mensajes SMS con Amazon SNS](sns-examples-sending-sms.md)

# Administración de temas en Amazon SNS
<a name="sns-examples-managing-topics"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/es_es/sdk-for-javascript/v3/developer-guide/images/nodeicon.png)

**Este ejemplo de código de Node.js muestra:**
+ Cómo crear temas en Amazon SNS en los que pueda publicar notificaciones.
+ Cómo eliminar temas creados en Amazon SNS.
+ Cómo obtener una lista de los temas disponibles.
+ Cómo obtener y establecer atributos de temas.

## El escenario
<a name="sns-examples-managing-topics-scenario"></a>

En este ejemplo, va a utilizar una serie de módulos de Node.js para crear, enumerar y eliminar temas de Amazon SNS y para gestionar atributos de los temas. Los módulos de Node.js utilizan el SDK JavaScript para administrar los temas mediante los siguientes métodos de la clase `SNS` cliente:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/CreateTopicCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/CreateTopicCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ListTopicsCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ListTopicsCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/DeleteTopicCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/DeleteTopicCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/GetTopicAttributesCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/GetTopicAttributesCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/SetTopicAttributesCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/SetTopicAttributesCommand/)

## Tareas previas necesarias
<a name="sns-examples-managing-topics-prerequisites"></a>

Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:
+ Configure el entorno del proyecto para ejecutar estos TypeScript ejemplos de Node e instale los módulos necesarios AWS SDK para JavaScript y de terceros. Siga las instrucciones que figuran en [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/README.md).
+ Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información sobre cómo proporcionar un archivo de credenciales compartido, consulte [Archivos de configuración y credenciales compartidos](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) en la *Guía de referencia de herramientas AWS SDKs y herramientas*.

**importante**  
En estos ejemplos se muestra cómo hacer un import/export cliente para ejecutar comandos y objetos de servicio mediante ECMAScript6 (ES6).  
Requiere la versión 13.x o superior de Node.js. Para descargar e instalar la versión más reciente de Node.js, consulte [Descargas de Node.js](https://nodejs.org/en/download).
Si prefiere utilizar la sintaxis CommonJS, consulte [Sintaxis ES6/commonJS de JavaScript](sdk-example-javascript-syntax.md).

## Creación de un tema
<a name="sns-examples-managing-topics-createtopic"></a>

En este ejemplo, utilice un módulo de Node.js para crear un tema de Amazon SNS. 

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Reemplácelo por su AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Cree un módulo de Node.js con el nombre de archivo `create-topic.js`. Configure el SDK como se mostró anteriormente, incluida la instalación de los clientes y paquetes necesarios.

Cree un objeto para transferir el `Name` del nuevo tema al método `CreateTopicCommand` de la clase de cliente de Amazon SNS. Para llamar al método `CreateTopicCommand`, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros. Los `data` devueltos contienen el ARN del tema.

**nota**  
*TOPIC\$1NAME*Sustitúyalo por el nombre del tema.

```
import { CreateTopicCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string} topicName - The name of the topic to create.
 */
export const createTopic = async (topicName = "TOPIC_NAME") => {
  const response = await snsClient.send(
    new CreateTopicCommand({ Name: topicName }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '087b8ad2-4593-50c4-a496-d7e90b82cf3e',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   TopicArn: 'arn:aws:sns:us-east-1:xxxxxxxxxxxx:TOPIC_NAME'
  // }
  return response;
};
```

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node create-topic.js
```

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/create-topic.js).

## Enumeración de los temas de
<a name="sns-examples-managing-topics-listtopics"></a>

En este ejemplo, utilice un módulo de Node.js para generar una lista de todos los temas de Amazon SNS. 

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Sustitúyalo por tu AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Cree un módulo de Node.js con el nombre de archivo `list-topics.js`. Configure el SDK como se mostró anteriormente, incluida la instalación de los clientes y paquetes necesarios.

Cree un objeto vacío para transferirlo al método `ListTopicsCommand` de la clase de cliente de Amazon SNS. Para llamar al método `ListTopicsCommand`, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros. La información `data` devuelta contiene una matriz de su tema Amazon Resource Names (ARNs).

```
import { ListTopicsCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

export const listTopics = async () => {
  const response = await snsClient.send(new ListTopicsCommand({}));
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '936bc5ad-83ca-53c2-b0b7-9891167b909e',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   Topics: [ { TopicArn: 'arn:aws:sns:us-east-1:xxxxxxxxxxxx:mytopic' } ]
  // }
  return response;
};
```

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node list-topics.js
```

Este código de muestra se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/list-topics.js).

## Eliminación de un tema
<a name="sns-examples-managing-topics-deletetopic"></a>

En este ejemplo, utilice un módulo de Node.js para eliminar un tema de Amazon SNS. 

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Sustitúyalo por tu AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Cree un módulo de Node.js con el nombre de archivo `delete-topic.js`. Configure el SDK como se mostró anteriormente, incluida la instalación de los clientes y paquetes necesarios.

Cree un objeto que contenga el `TopicArn` del tema que se va a eliminar para transferirlo al método `DeleteTopicCommand` de la clase de cliente Amazon SNS. Para llamar al método `DeleteTopicCommand`, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros. 

**nota**  
*TOPIC\$1ARN*Sustitúyalo por el nombre de recurso de Amazon (ARN) del tema que vaya a eliminar.

```
import { DeleteTopicCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string} topicArn - The ARN of the topic to delete.
 */
export const deleteTopic = async (topicArn = "TOPIC_ARN") => {
  const response = await snsClient.send(
    new DeleteTopicCommand({ TopicArn: topicArn }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: 'a10e2886-5a8f-5114-af36-75bd39498332',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   }
  // }
};
```

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node delete-topic.js
```

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/delete-topic.js).

## Obtención de atributos de temas
<a name="sns-examples-managing-topicsgettopicattributes"></a>

En este ejemplo, utilice un módulo de Node.js para recuperar atributos de un tema de Amazon SNS.

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Sustitúyalo por tu AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Cree un módulo de Node.js con el nombre de archivo `get-topic-attributes.js`. Configure el SDK como le hemos mostrado anteriormente.

Cree un objeto que contenga el `TopicArn` de un tema que se vaya a eliminar para transferirlo al método `GetTopicAttributesCommand` de la clase de cliente de Amazon SNS. Para llamar al método `GetTopicAttributesCommand`, invoque un objeto de servicio de cliente de Amazon SNS, mediante el traspaso del objeto de parámetros. 

**nota**  
*TOPIC\$1ARN*Sustitúyalo por el ARN del tema.

```
import { GetTopicAttributesCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string} topicArn - The ARN of the topic to retrieve attributes for.
 */
export const getTopicAttributes = async (topicArn = "TOPIC_ARN") => {
  const response = await snsClient.send(
    new GetTopicAttributesCommand({
      TopicArn: topicArn,
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '36b6a24e-5473-5d4e-ac32-ff72d9a73d94',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   Attributes: {
  //     Policy: '{...}',
  //     Owner: 'xxxxxxxxxxxx',
  //     SubscriptionsPending: '1',
  //     TopicArn: 'arn:aws:sns:us-east-1:xxxxxxxxxxxx:mytopic',
  //     TracingConfig: 'PassThrough',
  //     EffectiveDeliveryPolicy: '{"http":{"defaultHealthyRetryPolicy":{"minDelayTarget":20,"maxDelayTarget":20,"numRetries":3,"numMaxDelayRetries":0,"numNoDelayRetries":0,"numMinDelayRetries":0,"backoffFunction":"linear"},"disableSubscriptionOverrides":false,"defaultRequestPolicy":{"headerContentType":"text/plain; charset=UTF-8"}}}',
  //     SubscriptionsConfirmed: '0',
  //     DisplayName: '',
  //     SubscriptionsDeleted: '1'
  //   }
  // }
  return response;
};
```

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node get-topic-attributes.js
```

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/get-topic-attributes.js).

## Configuración de los atributos de un tema
<a name="sns-examples-managing-topicssttopicattributes"></a>

En este ejemplo, utilice un módulo de Node.js para establecer los atributos mutables de un tema de Amazon SNS. 

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Sustitúyalo por tu AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Cree un módulo de Node.js con el nombre de archivo `set-topic-attributes.js`. Configure el SDK como le hemos mostrado anteriormente.

Cree un objeto que contenga los parámetros para realizar la actualización del atributo, como el `TopicArn` del tema cuyos atributos desea establecer, el nombre del atributo que se va a establecer y el nuevo valor para dicho atributo. Solo puede establecer los atributos `Policy`, `DisplayName` y `DeliveryPolicy`. Transfiera los parámetros al método `SetTopicAttributesCommand` de la clase de cliente de Amazon SNS. Para llamar al método `SetTopicAttributesCommand`, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros. 

**nota**  
*ATTRIBUTE\$1NAME*Sustitúyalo por el nombre del atributo que estás *TOPIC\$1ARN* configurando, por el nombre del recurso de Amazon (ARN) del tema cuyos atributos quieres establecer y *NEW\$1ATTRIBUTE\$1VALUE* por el nuevo valor de ese atributo.

```
import { SetTopicAttributesCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

export const setTopicAttributes = async (
  topicArn = "TOPIC_ARN",
  attributeName = "DisplayName",
  attributeValue = "Test Topic",
) => {
  const response = await snsClient.send(
    new SetTopicAttributesCommand({
      AttributeName: attributeName,
      AttributeValue: attributeValue,
      TopicArn: topicArn,
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: 'd1b08d0e-e9a4-54c3-b8b1-d03238d2b935',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   }
  // }
  return response;
};
```

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node set-topic-attributes.js
```

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/set-topic-attributes.js).

# Publicación de mensajes en Amazon SNS
<a name="sns-examples-publishing-messages"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/es_es/sdk-for-javascript/v3/developer-guide/images/nodeicon.png)

**Este ejemplo de código de Node.js muestra:**
+ Cómo publicar mensajes en un tema de Amazon SNS.

## El escenario
<a name="sns-examples-publishing-messages-scenario"></a>

En este ejemplo va a utilizar una serie de módulos de Node.js para publicar mensajes de Amazon SNS en puntos de conexión de temas, correos electrónicos o números de teléfono. Los módulos de Node.js utilizan el SDK JavaScript para enviar mensajes mediante este método de la clase `SNS` cliente:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/PublishCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/PublishCommand/)

## Tareas previas necesarias
<a name="sns-examples-publishing-messages-prerequisites"></a>

Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:
+ Configure el entorno del proyecto para ejecutar estos TypeScript ejemplos de Node e instale los módulos necesarios AWS SDK para JavaScript y de terceros. Siga las instrucciones que figuran en [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/README.md).
+ Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información sobre cómo proporcionar un archivo de credenciales compartido, consulte [Archivos de configuración y credenciales compartidos](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) en la *Guía de referencia de herramientas AWS SDKs y herramientas*.

**importante**  
En estos ejemplos se muestra cómo hacer un import/export cliente para ejecutar comandos y objetos de servicio mediante ECMAScript6 (ES6).  
Requiere la versión 13.x o superior de Node.js. Para descargar e instalar la versión más reciente de Node.js, consulte [Descargas de Node.js](https://nodejs.org/en/download).
Si prefiere utilizar la sintaxis CommonJS, consulte [Sintaxis ES6/commonJS de JavaScript](sdk-example-javascript-syntax.md).

## Publicación de un mensaje en un tema de SNS
<a name="sns-examples-publishing-text-messages"></a>

En este ejemplo, utilice un módulo de Node.js para publicar un mensaje en un tema de Amazon SNS.

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Reemplácelo por su AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

 Cree un módulo de Node.js con el nombre de archivo `publish-topic.js`. Configure el SDK como le hemos mostrado anteriormente.

Cree un objeto que contenga los parámetros para publicar un mensaje, incluidos el texto del mensaje y el nombre de recurso de Amazon (ARN) de Amazon. SNStopic Para obtener más información sobre los atributos de SMS disponibles, consulte [Set SMSAttributes](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#setSMSAttributes-property).

Pase los parámetros al método `PublishCommand` de la clase de cliente de Amazon SNS. Cree una función asíncrona que invoque un objeto de servicio de cliente de Amazon SNS, mediante el traspaso del objeto de parámetros. 

**nota**  
*MESSAGE\$1TEXT*Sustitúyalo por el texto del mensaje y *TOPIC\$1ARN* por el ARN del tema SNS.

```
import { PublishCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string | Record<string, any>} message - The message to send. Can be a plain string or an object
 *                                                 if you are using the `json` `MessageStructure`.
 * @param {string} topicArn - The ARN of the topic to which you would like to publish.
 */
export const publish = async (
  message = "Hello from SNS!",
  topicArn = "TOPIC_ARN",
) => {
  const response = await snsClient.send(
    new PublishCommand({
      Message: message,
      TopicArn: topicArn,
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: 'e7f77526-e295-5325-9ee4-281a43ad1f05',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   MessageId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
  // }
  return response;
};
```

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node publish-topic.js
```

Este código de ejemplo se puede encontrar [aquí en. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/publish-topic.js)

# Administración de suscripciones en Amazon SNS
<a name="sns-examples-subscribing-unsubscribing-topics"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/es_es/sdk-for-javascript/v3/developer-guide/images/nodeicon.png)

**Este ejemplo de código de Node.js muestra:**
+ Cómo mostrar una lista de todas las suscripciones en un tema de Amazon SNS.
+ Cómo suscribir una dirección de correo electrónico, un punto de conexión de una aplicación o una función de Lambda a un tema de Amazon SNS.
+ Cómo cancelar una suscripción a temas de Amazon SNS.

## El escenario
<a name="sns-examples-subscribing-unsubscribing-topics-scenario"></a>

En este ejemplo, va a utilizar una serie de módulos de Node.js para publicar mensajes de notificación en temas de Amazon SNS. Los módulos de Node.js utilizan el SDK JavaScript para gestionar los temas mediante los siguientes métodos de la clase `SNS` cliente:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ListSubscriptionsByTopicCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ListSubscriptionsByTopicCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/SubscribeCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/SubscribeCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ConfirmSubscriptionCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ConfirmSubscriptionCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/UnsubscribeCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/UnsubscribeCommand/)

## Tareas previas necesarias
<a name="sns-examples-subscribing-unsubscribing-topics-prerequisites"></a>

Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:
+ Configure el entorno del proyecto para ejecutar estos TypeScript ejemplos de Node e instale los módulos necesarios AWS SDK para JavaScript y de terceros. Siga las instrucciones que figuran en [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/README.md).
+ Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información sobre cómo proporcionar un archivo de credenciales compartido, consulte [Archivos de configuración y credenciales compartidos](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) en la *Guía de referencia de herramientas AWS SDKs y herramientas*.

**importante**  
En estos ejemplos se muestra cómo hacer un import/export cliente para ejecutar comandos y objetos de servicio mediante ECMAScript6 (ES6).  
Requiere la versión 13.x o superior de Node.js. Para descargar e instalar la versión más reciente de Node.js, consulte [Descargas de Node.js](https://nodejs.org/en/download).
Si prefiere utilizar la sintaxis CommonJS, consulte [Sintaxis ES6/commonJS de JavaScript](sdk-example-javascript-syntax.md).

## Generación de una lista de suscripciones a un tema
<a name="sns-examples-list-subscriptions-email"></a>

En este ejemplo, utilice un módulo de Node.js para generar una lista de todas las suscripciones a un tema de Amazon SNS. 

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Reemplácelo por su AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

 Cree un módulo de Node.js con el nombre de archivo `list-subscriptions-by-topic.js`. Configure el SDK como le hemos mostrado anteriormente.

Cree un objeto que contenga el parámetro `TopicArn` para el tema cuyas suscripciones desee incluir en la lista. Transfiera los parámetros al método `ListSubscriptionsByTopicCommand` de la clase de cliente de Amazon SNS. Para llamar al método `ListSubscriptionsByTopicCommand`, cree una función asíncrona que invoque un objeto de servicio de cliente de Amazon SNS y transfiera el objeto de los parámetros. 

**nota**  
*TOPIC\$1ARN*Sustitúyalo por el nombre de recurso de Amazon (ARN) del tema cuyas suscripciones quieras incluir en la lista.

```
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 ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node list-subscriptions-by-topic.js
```

Puedes encontrar este código de ejemplo [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/list-subscriptions-by-topic.js).

## Suscripción de una dirección de correo electrónico a un tema
<a name="sns-examples-subscribing-email"></a>

En este ejemplo, va a utilizar un módulo de Node.js para suscribir una dirección de correo electrónico para que reciba mensajes de correo electrónico SMTP de un tema de Amazon SNS. 

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Sustitúyalo por tu AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Cree un módulo de Node.js con el nombre de archivo `subscribe-email.js`. Configure el SDK como le hemos mostrado anteriormente.

Cree un objeto que contenga el parámetro `Protocol` para especificar el protocolo de `email`, el `TopicArn` del tema al que se suscribirá y una dirección de correo electrónico como el mensaje `Endpoint`. Transfiera los parámetros al método `SubscribeCommand` de la clase de cliente de Amazon SNS. Puede utilizar el método `subscribe` para suscribir varios puntos de conexión diferentes a un tema de Amazon SNS, en función de los valores que se utilicen para los parámetros que se transfieran, tal y como se verá en otros ejemplos de este tema.

Para llamar al método `SubscribeCommand`, cree una función asíncrona que invoque un objeto de servicio de cliente de Amazon SNS y transfiera el objeto de los parámetros. 

**nota**  
*TOPIC\$1ARN*Sustitúyalo por el nombre del recurso de Amazon (ARN) del tema y por la dirección de correo electrónico *EMAIL\$1ADDRESS* a la que deseas suscribirte.

```
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 ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node subscribe-email.js
```

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/subscribe-email.js).

### Confirmar suscripciones
<a name="sns-confirm-subscription-email"></a>

En este ejemplo, use un módulo de Node.js para verificar la intención del propietario de un punto de conexión de recibir mensajes validando el token enviado al punto de conexión por una acción de suscripción previa. 

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Sustitúyalo por tu AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Cree un módulo de Node.js con el nombre de archivo `confirm-subscription.js`. Configure el SDK como se mostró anteriormente, incluida la instalación de los clientes y paquetes necesarios.

Defina los parámetros, incluidos `TOPIC_ARN` y `TOKEN`, y defina un valor de `TRUE` o `FALSE` para `AuthenticateOnUnsubscribe`.

El token es un token de corta duración que se envía al propietario de un punto de conexión durante una acción `SUBSCRIBE` anterior. Por ejemplo, en el caso de un punto de conexión de correo electrónico, el `TOKEN` está en la URL del correo electrónico de confirmación de suscripción enviado al propietario del correo electrónico. Por ejemplo, `abc123` es el token en la siguiente URL:

![\[Amazon Web Services Simple Notification Service subscription confirmation page.\]](http://docs.aws.amazon.com/es_es/sdk-for-javascript/v3/developer-guide/images/token.png)


Para llamar al método `ConfirmSubscriptionCommand`, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros. 

**nota**  
*TOPIC\$1ARN*Sustitúyalo por el nombre del recurso de Amazon (ARN) del tema, *TOKEN* por el valor del token de la URL enviada al propietario del punto final en una `Subscribe` acción anterior, y defina*AuthenticateOnUnsubscribe*. por un valor de `TRUE` o. `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 ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node confirm-subscription.js
```

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/confirm-subscription.js).

## Suscripción de un punto de conexión de aplicación a un tema
<a name="sns-examples-subscribing-apps"></a>

En este ejemplo, va a utilizar un módulo de Node.js para suscribir un punto de conexión de una aplicación móvil para que reciba notificaciones de un tema de Amazon SNS. 

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Sustitúyalo por tu AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Cree un módulo de Node.js con el nombre de archivo `subscribe-app.js`. Configure el SDK como se mostró anteriormente, incluida la instalación de los módulos y paquetes necesarios.

Cree un objeto que contenga el parámetro `Protocol` para especificar el protocolo de la `application`, el `TopicArn` del tema al que va a suscribirse y el Nombre de recurso de Amazon (ARN) del punto de conexión de la aplicación móvil para el parámetro `Endpoint`. Transfiera los parámetros al método `SubscribeCommand` de la clase de cliente de Amazon SNS.

Para llamar al método `SubscribeCommand`, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros. 

**nota**  
*TOPIC\$1ARN*Sustitúyalo por el nombre del recurso de Amazon (ARN) del tema y *MOBILE\$1ENDPOINT\$1ARN* por el punto final al que te estás suscribiendo al tema.

```
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 ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node subscribe-app.js
```

Este código de ejemplo se puede encontrar [aquí en. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/subscribe-app.js)

## Suscripción de una función de Lambda a un tema
<a name="sns-examples-subscribing-lambda"></a>

En este ejemplo, utilice un módulo Node.js para suscribir una AWS Lambda función de forma que reciba notificaciones de un tema de Amazon SNS. 

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Sustitúyalo por su AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Cree un módulo de Node.js con el nombre de archivo `subscribe-lambda.js`. Configure el SDK como le hemos mostrado anteriormente.

Cree un objeto que contenga el `Protocol` parámetro, especificando el `lambda` protocolo, el `TopicArn` tema al que se va a suscribir y el nombre de recurso de Amazon (ARN) de una AWS Lambda función como parámetro. `Endpoint` Transfiera los parámetros al método `SubscribeCommand` de la clase de cliente de Amazon SNS.

Para llamar al método `SubscribeCommand`, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros. 

**nota**  
*TOPIC\$1ARN*Sustitúyalo por el nombre de recurso de Amazon (ARN) del tema y *LAMBDA\$1FUNCTION\$1ARN* por el nombre de recurso de Amazon (ARN) de la función 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 ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node subscribe-lambda.js
```

[Este código de ejemplo se puede encontrar aquí en. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/subscribe-lambda.js)

## Cancelación de la suscripción a un tema
<a name="sns-examples-unsubscribing"></a>

En este ejemplo, utilice un módulo de Node.js para cancelar la suscripción a un tema de Amazon SNS.

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Sustitúyalo por tu AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Cree un módulo de Node.js con el nombre de archivo `unsubscribe.js`. Configure el SDK como se mostró anteriormente, incluida la instalación de los clientes y paquetes necesarios.

Cree un objeto que contenga el parámetro `SubscriptionArn` que especifique el Nombre de recurso de Amazon (ARN) de la suscripción que desea cancelar. Transfiera los parámetros al método `UnsubscribeCommand` de la clase de cliente de Amazon SNS.

Para llamar al método `UnsubscribeCommand`, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros. 

**nota**  
*TOPIC\$1SUBSCRIPTION\$1ARN*Sustitúyalo por el nombre de recurso de Amazon (ARN) de la suscripción para cancelar la suscripción.

```
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 ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node unsubscribe.js
```

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/unsubscribe.js).

# Envío de mensajes SMS con Amazon SNS
<a name="sns-examples-sending-sms"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/es_es/sdk-for-javascript/v3/developer-guide/images/nodeicon.png)

**Este ejemplo de código de Node.js muestra:**
+ Cómo obtener y establecer las preferencias de mensajería de SMS para Amazon SNS.
+ Cómo comprobar un número de teléfono para ver si se ha desactivado la opción de recepción de mensajes SMS.
+ Cómo obtener una lista de números de teléfono con la opción de recepción de mensajes SMS desactivada
+ Cómo enviar un mensaje SMS.

## El escenario
<a name="sns-examples-sending-sms-scenario"></a>

Puede utilizar Amazon SNS para enviar mensajes de texto o mensajes SMS a dispositivos habilitados para recibir SMS. Dispone de la capacidad de enviar un mensaje directamente a un número de teléfono o de enviar un mensaje a varios números de teléfono a la vez suscribiendo dichos números de teléfono a un tema y enviando el mensaje al tema.

En este ejemplo, va a utilizar una serie de módulos de Node.js para publicar mensajes de texto SMS de Amazon SNS a dispositivos habilitados para SMS. Los módulos de Node.js utilizan el SDK JavaScript para publicar mensajes SMS mediante los siguientes métodos de la clase `SNS` cliente:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/GetSMSAttributesCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/GetSMSAttributesCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/SetSMSAttributesCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/SetSMSAttributesCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/CheckIfPhoneNumberIsOptedOutCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/CheckIfPhoneNumberIsOptedOutCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ListPhoneNumbersOptedOutCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ListPhoneNumbersOptedOutCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/PublishCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/PublishCommand/)

## Tareas previas necesarias
<a name="sns-examples-sending-sms-prerequisites"></a>

Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:
+ Configure el entorno del proyecto para ejecutar estos TypeScript ejemplos de Node e instale los módulos necesarios AWS SDK para JavaScript y de terceros. Siga las instrucciones que figuran en [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/README.md).
+ Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información sobre cómo proporcionar un archivo de credenciales compartido, consulte [Archivos de configuración y credenciales compartidos](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) en la *Guía de referencia de herramientas AWS SDKs y herramientas*.

**importante**  
En estos ejemplos se muestra cómo hacer un import/export cliente para ejecutar comandos y objetos de servicio mediante ECMAScript6 (ES6).  
Requiere la versión 13.x o superior de Node.js. Para descargar e instalar la versión más reciente de Node.js, consulte [Descargas de Node.js](https://nodejs.org/en/download).
Si prefiere utilizar la sintaxis CommonJS, consulte [Sintaxis ES6/commonJS de JavaScript](sdk-example-javascript-syntax.md).

## Obtención de atributos de SMS
<a name="sending-sms-getattributes"></a>

Utilice Amazon SNS para especificar las preferencias de mensajería SMS, como la forma en que se optimizan sus envíos (por coste o por fiabilidad de la entrega), su límite de gasto mensual, cómo se registran los envíos de mensajes y si desea suscribirse a informes de uso de SMS diarios. Estas preferencias se recuperan y se establecen como atributos SMS para Amazon SNS.

En este ejemplo, va a utilizar un módulo de Node.js para obtener los atributos de SMS actuales en Amazon SNS.

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Reemplácelo por su AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

 Cree un módulo de Node.js con el nombre de archivo `get-sms-attributes.js`.

Configure el SDK como se mostró anteriormente, incluida la descarga de los clientes y paquetes necesarios. Cree un objeto que contenga los parámetros para obtener atributos de SMS, como los nombres de los atributos individuales que desea obtener. Para obtener más información sobre los atributos de SMS disponibles, consulte [Establecer SMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html) en la referencia de la API de Amazon Simple Notification Service.

Este ejemplo obtiene el atributo `DefaultSMSType` que controla si se envían mensajes SMS como `Promotional`, que optimiza la entrega de mensajes para conseguir el costo más bajo, o como `Transactional`, que optimiza el envío de mensajes para conseguir la máxima fiabilidad. Transfiera los parámetros al método `SetTopicAttributesCommand` de la clase de cliente de Amazon SNS. Para llamar al método `SetSMSAttributesCommand`, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros. 

**nota**  
*ATTRIBUTE\$1NAME*Sustitúyalo por el nombre del atributo.

```
import { GetSMSAttributesCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

export const getSmsAttributes = async () => {
  const response = await snsClient.send(
    // If you have not modified the account-level mobile settings of SNS,
    // the DefaultSMSType is undefined. For this example, it was set to
    // Transactional.
    new GetSMSAttributesCommand({ attributes: ["DefaultSMSType"] }),
  );

  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '67ad8386-4169-58f1-bdb9-debd281d48d5',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   attributes: { DefaultSMSType: 'Transactional' }
  // }
  return response;
};
```

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node get-sms-attributes.js
```

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/get-sms-attributes.js).

## Configuración de atributos de SMS
<a name="sending-sms-setattributes"></a>

En este ejemplo, va a utilizar un módulo de Node.js para obtener los atributos de SMS actuales en Amazon SNS.

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Sustitúyalo por tu AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

 Cree un módulo de Node.js con el nombre de archivo `set-sms-attribute-type.js`. Configure el SDK como se mostró anteriormente, incluida la instalación de los clientes y paquetes necesarios. Cree un objeto que contenga los parámetros para establecer atributos de SMS, como los nombres de los atributos individuales que desea establecer y los valores que se establecerán para cada uno de ellos. Para obtener más información sobre los atributos de SMS disponibles, consulte [Establecer SMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html) en la referencia de la API de Amazon Simple Notification Service.

Este ejemplo establece el atributo `DefaultSMSType` en `Transactional`, que optimiza el envío de mensajes para conseguir la máxima fiabilidad. Transfiera los parámetros al método `SetTopicAttributesCommand` de la clase de cliente de Amazon SNS. Para llamar al método `SetSMSAttributesCommand`, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros. 

```
import { SetSMSAttributesCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {"Transactional" | "Promotional"} defaultSmsType
 */
export const setSmsType = async (defaultSmsType = "Transactional") => {
  const response = await snsClient.send(
    new SetSMSAttributesCommand({
      attributes: {
        // Promotional – (Default) Noncritical messages, such as marketing messages.
        // Transactional – Critical messages that support customer transactions,
        // such as one-time passcodes for multi-factor authentication.
        DefaultSMSType: defaultSmsType,
      },
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '1885b977-2d7e-535e-8214-e44be727e265',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   }
  // }
  return response;
};
```

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node set-sms-attribute-type.js 
```

Puede encontrar este código de ejemplo [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/set-sms-attribute-type.js).

## Comprobación de si se ha desactivado un número de teléfono
<a name="sending-sms-checkifphonenumberisoptedout"></a>

En este ejemplo, va a utilizar un módulo de Node.js para comprobar si un número de teléfono tiene desactivada la opción de recibir mensajes SMS. 

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Sustitúyalo por tu AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Cree un módulo de Node.js con el nombre de archivo `check-if-phone-number-is-opted-out.js`. Configure el SDK como le hemos mostrado anteriormente. Cree un objeto que contenga el número de teléfono que se desea comprobar como parámetro.

Este ejemplo establece el parámetro `PhoneNumber` para especificar el número de teléfono que se va a comprobar. Transfiera el objeto al método `CheckIfPhoneNumberIsOptedOutCommand` de la clase de cliente de Amazon SNS. Para llamar al método `CheckIfPhoneNumberIsOptedOutCommand`, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros. 

**nota**  

*PHONE\$1NUMBER*Sustitúyalo por el número de teléfono.

```
import { CheckIfPhoneNumberIsOptedOutCommand } from "@aws-sdk/client-sns";

import { snsClient } from "../libs/snsClient.js";

export const checkIfPhoneNumberIsOptedOut = async (
  phoneNumber = "5555555555",
) => {
  const command = new CheckIfPhoneNumberIsOptedOutCommand({
    phoneNumber,
  });

  const response = await snsClient.send(command);
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '3341c28a-cdc8-5b39-a3ee-9fb0ee125732',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   isOptedOut: false
  // }
  return response;
};
```

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node check-if-phone-number-is-opted-out.js 
```

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/check-if-phone-number-is-opted-out.js).

## Generación de una lista de los números de teléfono desactivados
<a name="sending-sms-listphonenumbersoptedout"></a>

En este ejemplo, va a utilizar un módulo de Node.js para obtener una lista de números de teléfono que tienen desactivada la opción de recibir mensajes SMS.

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Sustitúyalo por tu AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Cree un módulo de Node.js con el nombre de archivo `list-phone-numbers-opted-out.js`. Configure el SDK como le hemos mostrado anteriormente. Cree un objeto vacío como parámetro.

Transfiera el objeto al método `ListPhoneNumbersOptedOutCommand` de la clase de cliente de Amazon SNS. Para llamar al método `ListPhoneNumbersOptedOutCommand`, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros. 

```
import { ListPhoneNumbersOptedOutCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

export const listPhoneNumbersOptedOut = async () => {
  const response = await snsClient.send(
    new ListPhoneNumbersOptedOutCommand({}),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '44ff72fd-1037-5042-ad96-2fc16601df42',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   phoneNumbers: ['+15555550100']
  // }
  return response;
};
```

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node list-phone-numbers-opted-out.js 
```

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/list-phone-numbers-opted-out.js).

## Publicación de un mensaje SMS
<a name="sending-sms-publishsms"></a>

En este ejemplo, utilice un módulo de Node.js para enviar un mensaje SMS a un número de teléfono.

Cree un directorio `libs` y un módulo Node.js con el nombre de archivo `snsClient.js`. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. *REGION*Sustitúyalo por tu AWS región.

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

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Cree un módulo de Node.js con el nombre de archivo `publish-sms.js`. Configure el SDK como se mostró anteriormente, incluida la instalación de los clientes y paquetes necesarios. Cree un objeto que contenga los parámetros `Message` y `PhoneNumber`.

Cuando envíe un mensaje SMS, especifique el número de teléfono usando la formato E.164. E.164 es un estándar de estructura de número de teléfono utilizado para las telecomunicaciones internacionales. Los números que aplican este formato pueden tener un máximo de 15 dígitos y van prefijados con el carácter (\$1) y el código de país. Por ejemplo, un número de teléfono de EE. UU. en formato E.164 aparecería como XXX5550100 \$11001. 

En este ejemplo se establece el parámetro `PhoneNumber` para especificar el número de teléfono al que se enviará el mensaje. Transfiera el objeto al método `PublishCommand` de la clase de cliente de Amazon SNS. Para llamar al método `PublishCommand`, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros. 

**nota**  
*TEXT\$1MESSAGE*Sustitúyalo por el mensaje de texto y *PHONE\$1NUMBER* por el número de teléfono.

```
import { PublishCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string | Record<string, any>} message - The message to send. Can be a plain string or an object
 *                                                 if you are using the `json` `MessageStructure`.
 * @param {*} phoneNumber - The phone number to send the message to.
 */
export const publish = async (
  message = "Hello from SNS!",
  phoneNumber = "+15555555555",
) => {
  const response = await snsClient.send(
    new PublishCommand({
      Message: message,
      // One of PhoneNumber, TopicArn, or TargetArn must be specified.
      PhoneNumber: phoneNumber,
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '7410094f-efc7-5f52-af03-54737569ab77',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   MessageId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
  // }
  return response;
};
```

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

```
node publish-sms.js
```

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/publish-sms.js).