

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.

# Distribución ramificada a los flujos de entrega de Firehose
<a name="sns-firehose-as-subscriber"></a>

Puede suscribir los [flujos de entrega](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) a temas de Amazon SNS, lo que le permite enviar notificaciones a otros puntos de conexión de almacenamiento y análisis. Los mensajes publicados en un tema de Amazon SNS se envían al flujo de entrega de Firehose suscrito y se entregan al destino tal y como están configurados en Firehose. El propietario de una suscripción puede suscribir hasta cinco flujos de entrega de Firehose a un tema de Amazon SNS. Cada flujo de entrega de Firehose tiene una [cuota predeterminada](https://docs.aws.amazon.com/firehose/latest/dev/limits.html) para solicitudes y rendimiento por segundo. Este límite podría dar lugar a más mensajes publicados (tráfico entrante) que entregados (tráfico saliente). Cuando hay más tráfico entrante que saliente, la suscripción puede acumular una gran cantidad de mensajes atrasados, lo que provoca una latencia de entrega de mensajes elevada. Puede solicitar un [aumento de cuota](https://support.console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase) en función de la tasa de publicación para evitar un impacto adverso en la carga de trabajo. 

A través de las transmisiones de entrega de Firehose, puede distribuir las notificaciones de Amazon SNS a Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon Service (OpenSearch Service) y a proveedores de servicios de terceros, OpenSearch como Datadog, New Relic, MongoDB y Splunk.

Por ejemplo, puede utilizar esta funcionalidad para almacenar de forma permanente los mensajes enviados a un tema en un bucket de Amazon S3 con fines de conformidad, archivado u otros. Para ello, cree un flujo de entrega de Firehose con un destino de bucket de Amazon S3 y suscríbalo al tema de Amazon SNS. Como otro ejemplo, para analizar los mensajes enviados a un tema de Amazon SNS, cree una transmisión de entrega con un destino de índice de OpenSearch servicios. A continuación, puede suscribir el flujo de entrega de Firehose al tema de Amazon SNS.

Amazon SNS también admite el registro de estado de entrega de mensajes para las notificaciones enviadas a los puntos de conexión de Firehose. Para obtener más información, consulte [Estado de entrega de mensajes de Amazon SNS](sns-topic-attributes.md).

# Requisitos previos para suscribir flujos de entrega de Firehose a temas de Amazon SNS
<a name="prereqs-kinesis-data-firehose"></a>

Para suscribir una transmisión de entrega a un tema de SNS, Cuenta de AWS debes tener:
+ Un tema de SNS estándar. Para obtener más información, consulte [Creación de un tema de Amazon SNS](sns-create-topic.md).
+ Un flujo de entrega de Firehose. Para obtener más información, consulte [Creación de un flujo de entrega](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) y [Concesión a una aplicación de acceso a los recursos de Firehose](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#access-to-firehose) en la *Guía para desarrolladores de Amazon Data Firehose*.
+ Un rol AWS Identity and Access Management (IAM) que confía en el director del servicio Amazon SNS y tiene permiso para escribir en el flujo de entrega. Ingresará el nombre de recurso de Amazon (ARN) de este rol como `SubscriptionRoleARN` cuando cree la suscripción. Amazon SNS asume este rol y, gracias a esto, Amazon SNS puede colocar registros en el flujo de entrega de Firehose.

  En el siguiente ejemplo de política, se muestran los permisos recomendados:

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Action": [
          "firehose:DescribeDeliveryStream",
          "firehose:ListDeliveryStreams",
          "firehose:ListTagsForDeliveryStream",
          "firehose:PutRecord",
          "firehose:PutRecordBatch"
        ],
        "Resource": [
          "arn:aws:firehose:us-east-1:111111111111:deliverystream/firehose-sns-delivery-stream"
        ],
        "Effect": "Allow"
      }
    ]
  }
  ```

------

  Para conceder todos los permisos necesarios para usar Firehose, también puedes usar la política AWS gestionada. `AmazonKinesisFirehoseFullAccess` O bien, para proporcionar permisos más estrictos para usar Firehose, puede crear su propia política. Como mínimo, en la política se debe proporcionar permiso para ejecutar la operación `PutRecord` en un flujo de entrega específico.

  En todos los casos, también debe editar la relación de confianza para incluir el principal de servicio de Amazon SNS. Por ejemplo:

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
          "Service": "sns.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
    ]
  }
  ```

------

  Para obtener más información sobre la creación de funciones, consulte [Crear una función para delegar permisos a un AWS servicio](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la Guía del *usuario de IAM*.

Una vez que haya completado estos requisitos, puede [suscribir el flujo de entrega al tema de SNS](firehose-endpoints-subscribe.md).

# Suscripción de un flujo de entrega de Firehose a un tema de Amazon SNS
<a name="firehose-endpoints-subscribe"></a>

Para entregar notificaciones de Amazon SNS a los [flujos de entrega](sns-firehose-as-subscriber.md), primero asegúrese de haber cumplido todos los [requisitos previos](prereqs-kinesis-data-firehose.md). Para obtener una lista de puntos de conexión admitidos, consulte [puntos de conexión y cuotas](https://docs.aws.amazon.com/general/latest/gr/fh.html) en la *Referencia general de Amazon Web Services*.

**Suscripción de un flujo de entrega de Firehose a un tema**

1. Inicie sesión en la [consola de Amazon SNS](https://console.aws.amazon.com/sns/home).

1. En el panel de navegación, seleccione **Suscripciones**.

1. En la página **Subscriptions (Suscripciones)**, elija **Create subscription (Crear suscripción)**.

1. En la página **Crear suscripción**, en la sección **Detalles**, haga lo siguiente:

   1. En **ARN de tema**, elija el nombre de recurso de Amazon (ARN) de un tema estándar.

   1. En **Protocolo**, elija **Firehose**.

   1. En **Punto de conexión**, elija el ARN de un flujo de entrega de Firehose en el que se puedan recibir notificaciones de Amazon SNS.

   1. En **ARN del rol de suscripción**, especifique el ARN rol de AWS Identity and Access Management (IAM) que creó para escribir en flujos de entrega de Firehose. Para obtener más información, consulte [Requisitos previos para suscribir flujos de entrega de Firehose a temas de Amazon SNS](prereqs-kinesis-data-firehose.md).

   1. (Opcional) Para eliminar cualquier metadato de Amazon SNS de los mensajes publicados, elija **Habilitar la entrega de mensajes**. Para obtener más información, consulte [Entrega de mensajes sin procesar de Amazon SNS](sns-large-payload-raw-message-delivery.md).

1. (Opcional) Para configurar una política de filtro, expanda la sección **Política de filtro de suscripción**. Para obtener más información, consulte [Políticas de filtro de suscripciones de Amazon SNS](sns-subscription-filter-policies.md).

1. (Opcional) Para configurar una cola de mensajes fallidos en la suscripción, expanda la sección **Política de reconducción (cola de mensajes fallidos)**. Para obtener más información, consulte [Colas de mensajes fallidos de Amazon SNS](sns-dead-letter-queues.md).

1. Seleccione **Crear subscripción**.

En la consola se crea la suscripción y se abre la página **Detalles** de la suscripción.

# Administración de mensajes de Amazon SNS en varios destinos de flujo de entrega
<a name="firehose-working-with-destinations"></a>

los [flujos de entrega](sns-firehose-as-subscriber.md) le permiten gestionar los mensajes de Amazon SNS en varios destinos, lo que permite la integración con Amazon S3, Amazon OpenSearch Service, Amazon Redshift y los puntos de enlace HTTP para el almacenamiento, la indexación y el análisis. Al configurar correctamente el formato y la entrega de los mensajes, puede almacenar las notificaciones de Amazon SNS en Amazon S3 para su posterior procesamiento, analizar los datos estructurados de los mensajes con Amazon Athena, indexar los mensajes para buscarlos y visualizarlos OpenSearch en tiempo real y estructurar los archivos en Amazon Redshift para realizar consultas avanzadas.

# Almacenamiento y análisis de mensajes de Amazon SNS en destinos de Amazon S3
<a name="firehose-s3-destinations"></a>

En este tema se explica cómo los flujos de entrega publican los datos en Amazon Simple Storage Service (Amazon S3).

![\[La integración y el flujo de trabajo de los servicios de Amazon para el tratamiento de mensajes. Muestra cómo un publicador envía mensajes a un tema de Amazon SNS y, a continuación, distribuye mediante ramificación los mensajes entre varias colas de Amazon SQS y un flujo de entrega de Data Firehose. Una vez allí, los mensajes pueden procesarse mediante funciones de Lambda o almacenarse de forma persistente en un bucket de Amazon S3.\]](http://docs.aws.amazon.com/es_es/sns/latest/dg/images/firehose-architecture-s3.png)


**Topics**
+ [Formato de las notificaciones para su almacenamiento en destinos de Amazon S3](firehose-archived-message-format-S3.md)
+ [Análisis de los mensajes almacenados en Amazon S3 con Athena](firehose-message-analysis-s3.md)

# Formato de las notificaciones de Amazon SNS para su almacenamiento en destinos de Amazon S3
<a name="firehose-archived-message-format-S3"></a>

En el siguiente ejemplo, se muestra una notificación de Amazon SNS enviada a un bucket de Amazon Simple Storage Service (Amazon S3), con sangrías para facilitar la lectura.

**nota**  
En este ejemplo, se desactivó la entrega de mensajes sin formato en el mensaje publicado. Si se desactiva la entrega de mensajes sin formato, Amazon SNS agrega metadatos JSON al mensaje, incluidas las siguientes propiedades:  
`Type`
`MessageId`
`TopicArn`
`Subject`
`Timestamp`
`UnsubscribeURL`
`MessageAttributes`
Para obtener más información acerca de la entrega sin procesar, consulte [Entrega de mensajes sin procesar de Amazon SNS](sns-large-payload-raw-message-delivery.md).

```
{
    "Type": "Notification",
    "MessageId": "719a6bbf-f51b-5320-920f-3385b5e9aa56",
    "TopicArn": "arn:aws:sns:us-east-1:333333333333:my-kinesis-test-topic",     
    "Subject": "My 1st subject",
    "Message": "My 1st body",
    "Timestamp": "2020-11-26T23:48:02.032Z",
    "UnsubscribeURL": "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:333333333333:my-kinesis-test-topic:0b410f3c-ee5e-49d8-b59b-3b4aa6d8fcf5",
    "MessageAttributes": {
        "myKey1": {
            "Type": "String",
            "Value": "myValue1"
        },
        "myKey2": {
            "Type": "String",
            "Value": "myValue2"
        }
    }
 }
```

En el siguiente ejemplo, se muestran tres mensajes de SNS enviados a través de un flujo de entrega al mismo bucket de Amazon S3. Se aplica almacenamiento en búfer y los saltos de línea separan cada mensaje.

```
{"Type":"Notification","MessageId":"d7d2513e-6126-5d77-bbe2-09042bd0a03a","TopicArn":"arn:aws:sns:us-east-1:333333333333:my-kinesis-test-topic","Subject":"My 1st subject","Message":"My 1st body","Timestamp":"2020-11-27T00:30:46.100Z","UnsubscribeURL":"https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:313276652360:my-kinesis-test-topic:0b410f3c-ee5e-49d8-b59b-3b4aa6d8fcf5","MessageAttributes":{"myKey1":{"Type":"String","Value":"myValue1"},"myKey2":{"Type":"String","Value":"myValue2"}}}
{"Type":"Notification","MessageId":"0c0696ab-7733-5bfb-b6db-ce913c294d56","TopicArn":"arn:aws:sns:us-east-1:333333333333:my-kinesis-test-topic","Subject":"My 2nd subject","Message":"My 2nd body","Timestamp":"2020-11-27T00:31:22.151Z","UnsubscribeURL":"https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:313276652360:my-kinesis-test-topic:0b410f3c-ee5e-49d8-b59b-3b4aa6d8fcf5","MessageAttributes":{"myKey1":{"Type":"String","Value":"myValue1"}}}
{"Type":"Notification","MessageId":"816cd54d-8cfa-58ad-91c9-8d77c7d173aa","TopicArn":"arn:aws:sns:us-east-1:333333333333:my-kinesis-test-topic","Subject":"My 3rd subject","Message":"My 3rd body","Timestamp":"2020-11-27T00:31:39.755Z","UnsubscribeURL":"https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:313276652360:my-kinesis-test-topic:0b410f3c-ee5e-49d8-b59b-3b4aa6d8fcf5"}
```

# Análisis de los mensajes de Amazon SNS almacenados en Amazon S3 con Athena
<a name="firehose-message-analysis-s3"></a>

En esta página se explica cómo analizar los mensajes de Amazon SNS enviados a través de flujos de entrega a destinos de Amazon Simple Storage Service (Amazon S3).

**Análisis de mensajes SNS enviados a través de flujos de entrega de Firehose a destinos de Amazon S3**

1. Configure sus recursos de Amazon S3. Para recibir instrucciones, consulte [Creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html) en la *Guía del usuario de Amazon Simple Storage Service* y [Trabajar con buckets de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) en la *Guía del usuario de Amazon Simple Storage Service*.

1. Configure el flujo de entrega. Para obtener más información, consulte [Choose Amazon S3 for Your Destination](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-s3) en la *Guía para desarrolladores de Amazon Data Firehose*.

1. Utilice [Amazon Athena](https://console.aws.amazon.com/athena) para consultar los objetos de Amazon S3 mediante SQL estándar. Para obtener más información, consulte [Introducción](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html) en la *Guía del usuario de Amazon Athena*.

## Consulta de ejemplo
<a name="example-s3-query"></a>

En esta consulta, suponga lo siguiente:
+ Los mensajes se almacenan en la tabla `notifications` del esquema `default`.
+ En la tabla `notifications`, se incluye una columna `timestamp` con un tipo de `string`.

Con la siguiente consulta, se devuelven todos los mensajes SNS recibidos en el intervalo de fechas especificado:

```
SELECT * 
FROM default.notifications
WHERE from_iso8601_timestamp(timestamp) BETWEEN TIMESTAMP '2020-12-01 00:00:00' AND TIMESTAMP '2020-12-02 00:00:00';
```

# Integración de los mensajes de Amazon SNS con los destinos de Amazon Service OpenSearch
<a name="firehose-elasticsearch-destinations"></a>

En esta sección se explica cómo las transmisiones de entrega publican los datos en Amazon OpenSearch Service (OpenSearch Servicio).

![\[Un publicador envía mensajes a un tema de Amazon SNS que luego distribuye estos mensajes a varias colas de Amazon SNS. Los mensajes de estas colas se pueden procesar mediante funciones de Lambda o se pueden enviar a través de un flujo de entrega de Data Firehose a un servicio de OpenSearch Amazon, lo que crea un índice de mensajes con capacidad de búsqueda. Esta configuración muestra el uso de un escenario avanzado de enrutamiento y procesamiento de mensajes mediante Servicios de AWS.\]](http://docs.aws.amazon.com/es_es/sns/latest/dg/images/firehose-architecture-es.png)


**Topics**
+ [Formato de mensajes archivados](firehose-archived-message-format-elasticsearch.md)
+ [Análisis de mensajes](firehose-message-analysis-elasticsearch.md)

# Almacenamiento y formato de las notificaciones de Amazon SNS en OpenSearch índices de servicios
<a name="firehose-archived-message-format-elasticsearch"></a>

En el siguiente ejemplo se muestra una notificación de Amazon SNS enviada a un índice de Amazon OpenSearch Service (OpenSearch Service) llamado. `my-index` Este índice tiene un campo de filtro de tiempo en el campo `Timestamp`. La notificación SNS se coloca en la propiedad `_source` de la carga.

**nota**  
En este ejemplo, se desactivó la entrega de mensajes sin formato en el mensaje publicado. Si se desactiva la entrega de mensajes sin formato, Amazon SNS agrega metadatos JSON al mensaje, incluidas las siguientes propiedades:  
`Type`
`MessageId`
`TopicArn`
`Subject`
`Timestamp`
`UnsubscribeURL`
`MessageAttributes`
Para obtener más información acerca de la entrega sin procesar, consulte [Entrega de mensajes sin procesar de Amazon SNS](sns-large-payload-raw-message-delivery.md).

```
{
  "_index": "my-index",
  "_type": "_doc",
  "_id": "49613100963111323203250405402193283794773886550985932802.0",
  "_version": 1,
  "_score": null,
  "_source": {
    "Type": "Notification",
    "MessageId": "bf32e294-46e3-5dd5-a6b3-bad65162e136",
    "TopicArn": "arn:aws:sns:us-east-1:111111111111:my-topic",
    "Subject": "Sample subject",
    "Message": "Sample message",
    "Timestamp": "2020-12-02T22:29:21.189Z",
    "UnsubscribeURL": "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:111111111111:my-topic:b5aa9bc1-9c3d-452b-b402-aca2cefc63c9",
    "MessageAttributes": {
      "my_attribute": {
        "Type": "String",
        "Value": "my_value"
      }
    }
  },
  "fields": {
    "Timestamp": [
      "2020-12-02T22:29:21.189Z"
    ]
  },
  "sort": [
    1606948161189
  ]
}
```

# Análisis de los mensajes de Amazon SNS para OpenSearch los destinos del servicio
<a name="firehose-message-analysis-elasticsearch"></a>

En este tema se explica cómo analizar los mensajes de Amazon SNS enviados a través de flujos de entrega a los destinos de Amazon OpenSearch Service (OpenSearch Servicio).

**Para analizar los mensajes SNS enviados a través de los flujos OpenSearch de entrega de Firehose a los destinos del servicio**

1. Configure sus recursos de OpenSearch servicio. Para obtener instrucciones, consulta [Cómo empezar a usar Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/es-gsg.html) en la *Guía para desarrolladores OpenSearch de Amazon Service*.

1. Configure el flujo de entrega. Para obtener instrucciones, consulte [Choose OpenSearch Service for Your Destination](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-elasticsearch) en la Guía para *desarrolladores de Amazon Data Firehose*.

1. Ejecute una consulta con OpenSearch Service Queries y Kibana. Para obtener más información, consulta el [Paso 3: Buscar documentos en un dominio de OpenSearch servicio](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/es-gsg-search.html) y [Kibana](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/es-kibana.html) en la *Guía para desarrolladores de Amazon OpenSearch Service*.

## Consulta de ejemplo
<a name="example-es-query"></a>

En el siguiente ejemplo, se consulta el índice `my-index` de todos los mensajes SNS recibidos en el intervalo de fechas especificado:

```
POST https://search-my-domain.us-east-1.es.amazonaws.com/my-index/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "Timestamp": {
              "gte": "2020-12-08T00:00:00.000Z",
              "lte": "2020-12-09T00:00:00.000Z",
              "format": "strict_date_optional_time"
            }
          }
        }
      ]
    }
  }
}
```

# Configuración de la entrega y el análisis de mensajes de Amazon SNS en destinos de Amazon Redshift
<a name="firehose-redshift-destinations"></a>

En este tema se explica cómo distribuir las notificaciones de Amazon SNS a un flujo de entrega, que a su vez publique los datos en Amazon Redshift. Con esta configuración, puede conectarse a la base de datos de Amazon Redshift y utilizar una herramienta de consulta SQL para recuperar mensajes de SNS que cumplan determinados criterios.

![\[Los mensajes publicados por un remitente en un tema de Amazon SNS se distribuyen en varias colas de Amazon SQS para que las funciones de Lambda los procesen, y también se envían a través de un flujo de entrega de Data Firehose a un clúster de Amazon Redshift para su almacenamiento y análisis en un almacén de datos de mensajes. Esta configuración muestra una arquitectura robusta de tratamiento de mensajes y almacenamiento de datos que usa Servicios de AWS.\]](http://docs.aws.amazon.com/es_es/sns/latest/dg/images/firehose-architecture-rs.png)


**Topics**
+ [Estructuración de los archivos de mensajes en tablas de Amazon Redshift](firehose-archive-table-structure-redshift.md)
+ [Análisis de los mensajes almacenados en destinos de Amazon Redshift](firehose-message-analysis-redshift.md)

# Estructuración de los archivos de mensajes de Amazon SNS en tablas de Amazon Redshift
<a name="firehose-archive-table-structure-redshift"></a>

En los puntos de conexión de Amazon Redshift, los mensajes de Amazon SNS se archivan como filas en una tabla. A continuación, se muestra un ejemplo de cómo se almacenan los datos:

**nota**  
En este ejemplo, se desactivó la entrega de mensajes sin formato en el mensaje publicado. Si se desactiva la entrega de mensajes sin formato, Amazon SNS agrega metadatos JSON al mensaje, incluidas las siguientes propiedades:  
`Type`
`MessageId`
`TopicArn`
`Subject`
`Message`
`Timestamp`
`UnsubscribeURL`
`MessageAttributes`
Para obtener más información acerca de la entrega sin procesar, consulte [Entrega de mensajes sin procesar de Amazon SNS](sns-large-payload-raw-message-delivery.md).  
Si bien Amazon SNS agrega propiedades al mensaje con las mayúsculas que se muestran en esta lista, los nombres de columna de las tablas de Amazon Redshift aparecen en minúsculas. Para transformar los metadatos JSON en el punto de enlace de Amazon Redshift, puede utilizar el comando `COPY` SQL. Para obtener más información, consulte los [ejemplos Copiar desde JSON](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#r_COPY_command_examples-copy-from-json) y [Cargar desde datos JSON con la opción 'auto ignorecase'](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#copy-from-json-examples-using-auto-ignorecase) en la *Guía para desarrolladores de bases de datos de Amazon Redshift*.


|  type  |  messageId  |  topicarn  |  subject  |  message  |  timestamp  |  unsubscribeurl  |  messageattributes  | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
|  Notificación  |  ea544832-a0d8-581d-9275-108243c46103  |  arn:aws:sns:us-east-1:111111111111:my-topic  |  Asunto de muestra  |  Mensaje de muestra  |  2020-12-02T00:33:32.272Z  |  https://sns.us-east-1.amazonaws.com/? Action=Darse de baja y =arn:aws:sns:us-east- 1:1111:my-topic:326deeeb-cbf4-45da-b92b-ca77a247813b SubscriptionArn  |  \$1\$1"my\$1attribute\$1":\$1\$1"Type\$1":\$1"String\$1",\$1"Value\$1":\$1"my\$1value\$1"\$1\$1  | 
|  Notificación  |  ab124832-a0d8-581d-9275-108243c46114  |  arn:aws:sns:us-east-1:111111111111:my-topic  |  Asunto de muestra 2  |  Mensaje de muestra 2  |  2020-12-03T00:18:11.129Z  |  https://sns.us-east-1.amazonaws.com/? Action=Darse de baja y =arn:aws:sns:us-east- 1:1111:my-topic:326deeeb-cbf4-45da-b92b-ca77a247813b SubscriptionArn  |  \$1\$1"my\$1attribute2\$1":\$1\$1"Type\$1":\$1"String\$1",\$1"Value\$1":\$1"my\$1value\$1"\$1\$1  | 
|  Notificación  |  ce644832-a0d8-581d-9275-108243c46125  |  arn:aws:sns:us-east-1:111111111111:my-topic  |  Asunto de muestra 3  |  Mensaje de muestra 3  |  2020-12-09T00:08:44.405Z  |  https://sns.us-east-1.amazonaws.com/? Action=Darse de baja y =arn:aws:sns:us-east- 1:1111:my-topic:326deeeb-cbf4-45da-b92b-ca77a247813b SubscriptionArn  |  \$1\$1"my\$1attribute3\$1":\$1\$1"Type\$1":\$1"String\$1",\$1"Value\$1":\$1"my\$1value\$1"\$1\$1  | 

Para obtener más información sobre la distribución de notificaciones a los puntos de enlace de Amazon Redshift, consulte [Configuración de la entrega y el análisis de mensajes de Amazon SNS en destinos de Amazon Redshift](firehose-redshift-destinations.md).

# Análisis de los mensajes de Amazon SNS almacenados en destinos de Amazon Redshift
<a name="firehose-message-analysis-redshift"></a>

En este tema se describe cómo analizar los mensajes de Amazon SNS enviados a través de flujos de entrega a destinos de Amazon Redshift.

**Análisis de los mensajes SNS enviados a través de flujos de entrega de a destinos de Amazon Redshift**

1. Configure sus recursos de Amazon Redshift. Para obtener instrucciones, consulte [Introducción a Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) en la *Guía de introducción a Amazon Redshift*.

1. Configure el flujo de entrega. Para obtener más información, consulte [Choose Amazon Redshift for Your Destination](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-redshift) en la *Guía para desarrolladores de Amazon Data Firehose*.

1. Ejecute una consulta. Para obtener más información, consulte [Consulta de una base de datos mediante el editor de consultas](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor.html) en la *Guía de administración de Amazon Redshift*.

## Consulta de ejemplo
<a name="example-rs-query"></a>

En esta consulta, suponga lo siguiente:
+ Los mensajes se almacenan en la tabla `notifications` del esquema `public` predeterminado.
+ La propiedad `Timestamp` del mensaje SNS se almacena en la columna `timestamp` de la tabla con un tipo de datos de columna de `timestamptz`.
**nota**  
Para transformar los metadatos JSON en el punto de enlace de Amazon Redshift, puede utilizar el comando `COPY` SQL. Para obtener más información, consulte los [ejemplos Copiar desde JSON](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#r_COPY_command_examples-copy-from-json) y [Cargar desde datos JSON con la opción 'auto ignorecase'](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#copy-from-json-examples-using-auto-ignorecase) en la *Guía para desarrolladores de bases de datos de Amazon Redshift*.

Con la siguiente consulta, se devuelven todos los mensajes SNS recibidos en el intervalo de fechas especificado:

```
SELECT *
FROM public.notifications
WHERE timestamp > '2020-12-01T09:00:00.000Z' AND timestamp < '2020-12-02T09:00:00.000Z';
```

# Configuración de la entrega de mensajes de Amazon SNS a destinos HTTP
<a name="firehose-http-destinations"></a>

En este tema se explica cómo los flujos de entrega publican datos en los puntos de conexión HTTP.

![\[Un publicador de un tema de Amazon SNS, que luego distribuye estos mensajes a varias colas de Amazon SQS. Estos mensajes los procesan las funciones de Lambda y también se envían a través de un flujo de entrega de Data Firehose a un punto de conexión HTTP. Esta configuración muestra cómo los Servicios de AWS funcionan juntos para facilitar el tratamiento de los mensajes y la integración con servicios HTTP externos.\]](http://docs.aws.amazon.com/es_es/sns/latest/dg/images/firehose-architecture-http.png)


**Topics**
+ [Formato de notificaciones para su entrega a destinos HTTP](firehose-delivered-message-format-http.md)

# Formato de notificaciones de Amazon SNS para su entrega a destinos HTTP
<a name="firehose-delivered-message-format-http"></a>

A continuación, se muestra un ejemplo de un cuerpo de solicitud HTTP POST de Amazon SNS, enviado a través de un flujo de entrega a un punto de conexión HTTP. La notificación de Amazon SNS se codifica como una carga útil base64 en la propiedad de registros.

**nota**  
En este ejemplo, se desactivó la entrega de mensajes sin formato en el mensaje publicado. Para obtener más información acerca de la entrega sin procesar, consulte [Entrega de mensajes sin procesar de Amazon SNS](sns-large-payload-raw-message-delivery.md).

```
"body": {
    "requestId": "ebc9e8b2-fce3-4aef-a8f1-71698bf8175f",
    "timestamp": 1606255960435,
    "records": [
      {
        "data": "eyJUeXBlIjoiTm90aWZpY2F0aW9uIiwiTWVzc2FnZUlkIjoiMjFkMmUzOGQtMmNhYi01ZjYxLTliYTItYmJiYWFhYzg0MGY2IiwiVG9waWNBcm4iOiJhcm46YXdzOnNuczp1cy1lYXN0LTE6MTExMTExMTExMTExOm15LXRvcGljIiwiTWVzc2FnZSI6IlNhbXBsZSBtZXNzYWdlIGZvciBBbWF6b24gS2luZXNpcyBEYXRhIEZpcmVob3NlIGVuZHBvaW50cyIsIlRpbWVzdGFtcCI6IjIwMjAtMTEtMjRUMjI6MDc6MzEuNjY3WiIsIlVuc3Vic2NyaWJlVVJMIjoiaHR0cHM6Ly9zbnMudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6MTExMTExMTExMTExOm15LXRvcGljOjAxYjY5MTJjLTAwNzAtNGQ4Yi04YjEzLTU1NWJmYjc2ZTdkNCJ9"
      }
    ]
  }
```

# Archivo y análisis de mensajes de Amazon SNS: un caso de uso de ejemplo para las plataformas de venta de billetes de avión
<a name="firehose-example-use-case"></a>

En este tema se proporciona un tutorial sobre un caso de uso común para archivar y analizar mensajes de Amazon SNS. 

La configuración de este caso de uso es una plataforma de emisión de billetes de avión que opera en un entorno regulado.

1. La plataforma está sujeta a un marco de conformidad que exige que la empresa archive todas las ventas de entradas durante un mínimo de cinco años.

1. Para cumplir el objetivo de conformidad en materia de retención de datos, la empresa suscribe un flujo de entrega a un tema de Amazon SNS existente.

1. El destino del flujo de entrega es un bucket de Amazon Simple Storage Service (Amazon S3). Con esta configuración, todos los eventos publicados en el tema de SNS se archivan en el bucket de Amazon S3.

En el siguiente diagrama, se ilustra la arquitectura de esta configuración.

![\[Una AWS arquitectura para una plataforma de venta de billetes de avión, que ilustra cómo se procesan y archivan los datos de venta de billetes. Muestra el flujo de datos de una función de Lambda a través de un tema de Amazon SNS, que luego distribuye los mensajes a las colas de Amazon SQS para el procesamiento de pagos y la detección de fraudes, gestionados por las funciones de Lambda correspondientes. Los datos también se transmiten a través de Data Firehose a un bucket de Amazon S3 para su archivo a largo plazo, lo que contribuye al cumplimiento de los requisitos de retención de datos. Esta configuración permite a la plataforma ejecutar análisis detallados de los datos de venta de entradas mediante herramientas como Amazon Athena.\]](http://docs.aws.amazon.com/es_es/sns/latest/dg/images/sns-archiving-use-case.png)


Para ejecutar análisis y obtener información sobre la venta de entradas, la empresa ejecuta consultas SQL con Amazon Athena. Por ejemplo, la empresa puede consultar para conocer los destinos más populares y los viajeros más frecuentes.

Para crear los AWS recursos para este caso de uso, puede utilizar la plantilla Consola de administración de AWS o una plantilla. CloudFormation 

**Topics**
+ [Configuración de los recursos iniciales para el archivado y el análisis de mensajes AWS](firehose-example-initial-resources.md)
+ [Configuración de un flujo de Firehose para el archivo de mensajes](firehose-example-create-delivery-stream.md)
+ [Suscripción del flujo de entrega al tema](firehose-example-subscribe-delivery-stream-to-topic.md)
+ [Pruebas y consulta de una configuración para una administración de datos eficaz](firehose-example-test-and-query.md)
+ [Automatizar el archivado de mensajes con una plantilla CloudFormation](firehose-example-cfn.md)

# Configuración de los AWS recursos iniciales para el archivado y el análisis de mensajes de Amazon SNS
<a name="firehose-example-initial-resources"></a>

En este tema se describe cómo crear los recursos necesarios para el [caso de uso de ejemplo de análisis y archivado de mensajes](firehose-example-use-case.md):
+ Un bucket de Amazon Simple Storage Service (Amazon S3)
+ Dos colas de Amazon Simple Queue Service (Amazon SQS)
+ Un tema de Amazon SNS
+ Dos suscripciones de Amazon SQS al tema de Amazon SNS

**Para crear los recursos iniciales, siga estos pasos:**

1. Cree un bucket de Amazon S3:<a name="firehose-use-case-create-bucket"></a>

   1. Abra la [consola de Amazon S3](https://console.aws.amazon.com/s3/home).

   1. Elija **Crear bucket**. 

   1. En **Nombre del bucket**, ingrese un nombre único. Mantenga los otros campos como valores predeterminados.

   1. Elija **Crear bucket**.

   Para obtener más información sobre los buckets de Amazon S3, consulte [Creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html) en la *Guía del usuario de Amazon Simple Storage Service* y [Trabajar con buckets de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) en la *Guía del usuario de Amazon Simple Storage Service*.

1. Cree las dos colas de Amazon SQS:

   1. Abra la [consola de Amazon SQS](https://console.aws.amazon.com/sqs/home).

   1. Elige **Crear cola**.

   1. En **Tipo**, seleccione **Estándar**.

   1. En **Nombre**, escriba **ticketPaymentQueue**.

   1. En **Política de acceso**, en **Elegir método**, elija **Avanzado**.

   1. En el cuadro Política de JSON, pegue la siguiente política:

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "sns.amazonaws.com"
            },
            "Action": "sqs:SendMessage",
            "Resource": "*",
            "Condition": {
              "ArnEquals": {
                "aws:SourceArn": "arn:aws:sns:us-east-1:123456789012:ticketTopic"
              }
            }
          }
        ]
      }
      ```

------

      En esta política de acceso, sustituya el Cuenta de AWS número (*123456789012*) por el suyo y cambie la AWS región (*us-east-1*) en consecuencia.

   1. Elige **Crear cola**.

   1. Repita estos pasos para crear una segunda cola SQS llamada **ticketFraudQueue**.

   Para obtener más información sobre la creación de colas SQS, consulte [Creación de una cola de Amazon SQS (consola)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-create-queue.html) en la *Guía para desarrolladores de Amazon Simple Queue Service*.

1. Cree el tema de SNS:

   1. Abra la página [Topics (Temas)](https://console.aws.amazon.com/sns/home#/topics) en la consola de Amazon SNS.

   1. Seleccione **Crear tema**.

   1. En **Detalles**, en **Tipo**, elija **Estándar**.

   1. En **Nombre**, escriba **ticketTopic**.

   1. Seleccione **Crear tema**.

   Para obtener más información sobre la creación de temas de SNS, consulte [Creación de un tema de Amazon SNS](sns-create-topic.md).

1. Suscriba las colas de SQS al tema de SNS:

   1. En la [consola de Amazon SNS](https://console.aws.amazon.com/sns/home#/topics), en la página de detalles del tema **TicketTopic**, elija **Crear suscripción**.

   1. En **Detalles**, en **Protocolo**, elija **Amazon SQS**.

   1. Para **Endpoint**, elija el nombre de recurso de Amazon (ARN) de la **ticketPaymentQueue**cola.

   1. Seleccione **Crear subscripción**.

   1. Repita estos pasos para crear una segunda suscripción con el ARN de la **ticketFraudQueue**cola.

      Para obtener más información sobre la suscripción a los temas de SNS, consulte [Creación de una suscripción a un tema de Amazon SNS](sns-create-subscribe-endpoint-to-topic.md). También puede suscribir colas de SQS a temas de SNS desde la consola de Amazon SQS. Para obtener más información, consulte [Suscripción de una cola de Amazon SQS a un tema de Amazon SNS (consola)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-subscribe-queue-sns-topic.html) en la *Guía para desarrolladores de Amazon Simple Queue Service*.

Ha creado los recursos iniciales para este caso de uso de ejemplo. Para continuar, consulte [Configuración de un flujo de entrega de Amazon Data Firehose para el archivo de mensajes de Amazon SNS](firehose-example-create-delivery-stream.md).

# Configuración de un flujo de entrega de Amazon Data Firehose para el archivo de mensajes de Amazon SNS
<a name="firehose-example-create-delivery-stream"></a>

En este tema se explica cómo crear el flujo de entrega de Amazon Data Firehose para el [caso de uso de ejemplo de archivo y análisis de mensajes](firehose-example-use-case.md).

**Cómo crear el flujo de entrega de Amazon Data Firehose**

1. Abra la [consola de servicios de Amazon Data Firehose](https://console.aws.amazon.com/kinesis/home).

1. Seleccione **Firehose** y, a continuación, elija **Crear un flujo de entrega**.

1. En la página **Nuevo flujo de entrega**, en **Nombre del flujo de entrega**, ingrese **ticketUploadStream** y, a continuación, elija **Siguiente**.

1. En la página **Procesar registros**, elija **Siguiente**.

1. En la página **Elegir un destino**, haga lo siguiente:

   1. En **Destino**, elija **Amazon S3**.

   1. En **Destino S3**, en **bucket de S3**, elija el bucket de S3 que [creó en un principio](firehose-example-initial-resources.md).

   1. Elija **Siguiente**.

1. En la página **Ajustar configuración**, en **Condiciones del búfer S3**, realice una de las siguientes operaciones:
   + En **Tamaño del búfer**, ingrese **1**.
   + En **Intervalo del búfer**, ingrese **60**.

   Con el uso de estos valores para el búfer de Amazon S3, puede probar con rapidez la configuración. La primera condición que se cumple desencadena la entrega de datos al bucket de S3.

1. En la página **Configurar ajustes**, en **Permisos**, elija crear un rol AWS Identity and Access Management (IAM) con los permisos necesarios asignados automáticamente. A continuación, elija **Siguiente**.

1. En la página **Revisar**, elija **Crear un flujo de entrega**.

1. En la **página de transmisiones de entrega de Amazon Data Firehose,** selecciona la transmisión de entrega que acabas de crear () **ticketUploadStream**. En la pestaña **Detalles**, anote el nombre de recurso de Amazon (ARN) del flujo para después.

Para obtener más información sobre la creación de flujos de entrega, consulte [Creación de un flujo de entrega de Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) en la *Guía para desarrolladores de Amazon Data Firehose*. Para obtener más información sobre la creación de funciones de IAM, consulte [Creación de una función para delegar permisos a un AWS servicio](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la Guía del usuario de *IAM*.

Ha creado el flujo de entrega de Firehose con los permisos necesarios. Para continuar, consulte [Suscripción del flujo de entrega de Firehose al tema de Amazon SNS](firehose-example-subscribe-delivery-stream-to-topic.md).

# Suscripción del flujo de entrega de Firehose al tema de Amazon SNS
<a name="firehose-example-subscribe-delivery-stream-to-topic"></a>

En este tema se explica cómo crear los siguientes recursos para el [caso de uso de ejemplo de análisis y archivado de mensajes](firehose-example-use-case.md):
+ La función AWS Identity and Access Management (IAM) que permite a la suscripción a Amazon SNS colocar registros en el flujo de entrega.
+ La suscripción del flujo de entrega de Firehose al tema de Amazon SNS.

**Con el fin de crear el rol de IAM para la suscripción a Amazon SNS, siga estos pasos:**

1. Abra la [página Roles](https://console.aws.amazon.com/iam/home?#/roles) en la consola de IAM.

1. Elija **Create role**.

1. En **Seleccionar el tipo de entidad de confianza**, elija **Servicio de AWS **.

1. En **Elegir un caso de uso**, elija **SNS**. A continuación, elija **Siguiente: Permisos)**.

1. Elija **Siguiente: Etiquetas**.

1. Elija **Siguiente: Revisar**.

1. En la página **Revisión**, en **Nombre del rol**, ingrese **ticketUploadStreamSubscriptionRole**. A continuación, elija **Crear rol**.

1. Cuando se cree el rol, elija su nombre () **ticketUploadStreamSubscriptionRole**.

1. En la página **Resumen**, elija **Agregar política en línea**.

1. En la página **Crear política**, elija la pestaña **JSON** y, a continuación, pegue la siguiente política en el cuadro:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "firehose:DescribeDeliveryStream",
                   "firehose:ListDeliveryStreams",
                   "firehose:ListTagsForDeliveryStream",
                   "firehose:PutRecord",
                   "firehose:PutRecordBatch"
               ],
               "Resource": [
                   "arn:aws:firehose:us-east-1:123456789012:deliverystream/ticketUploadStream"
               ],
               "Effect": "Allow"
           }
       ]
   }
   ```

------

   En esta política, sustituya el Cuenta de AWS número (*123456789012*) por el suyo propio y cambie la AWS región (*us-east-1*) en consecuencia.

1. Elija **Revisar política**.

1. En la página **Crear política**, en **Nombre**, ingrese **FirehoseSnsPolicy**. A continuación, seleccione **Create policy** (Crear política).

1. En la página **Resumen** del rol, tenga en cuenta el **ARN de rol** para después.

Para obtener más información sobre la creación de funciones de IAM, consulte [Creación de una función para delegar permisos a un AWS servicio](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la Guía del *usuario de IAM*.

**Suscripción del flujo de entrega de Firehose al tema de SNS**

1. Abra la página [Topics (Temas)](https://console.aws.amazon.com/sns/home#/topics) en la consola de Amazon SNS.

1. En la pestaña **Suscripciones**, elija **Crear suscripción**.

1. En **Detalles**, para **Protocolo**, elija ****.

1. Para **Endpoint**, introduzca el nombre de recurso de Amazon (ARN) de la transmisión de **ticketUploadStream**entrega que creó anteriormente. Por ejemplo, escriba **arn:aws:firehose:us-east-1:123456789012:deliverystream/ticketUploadStream**.

1. **En el ARN del rol de suscripción**, introduzca el ARN del rol de **ticketUploadStreamSubscriptionRole**IAM que creó anteriormente. Por ejemplo, escriba **arn:aws:iam::123456789012:role/ticketUploadStreamSubscriptionRole**.

1. Seleccione el cuadro de verificación **Habilitar la entrega de mensajes sin procesar**.

1. Seleccione **Crear subscripción**.

Ha creado el rol de IAM y la suscripción al tema de SNS. Para continuar, consulte [Pruebas y consulta de una configuración de Amazon SNS para una administración de datos eficaz](firehose-example-test-and-query.md).

# Pruebas y consulta de una configuración de Amazon SNS para una administración de datos eficaz
<a name="firehose-example-test-and-query"></a>

En este tema se explica cómo probar el [caso de uso de ejemplo de archivado y análisis de mensajes](firehose-example-use-case.md) mediante la publicación de un mensaje en el tema de Amazon SNS. Entre las instrucciones se incluye una consulta de ejemplo que puede ejecutar y adaptar a sus propias necesidades.

**Para probar la configuración**

1. Abra la página [Topics (Temas)](https://console.aws.amazon.com/sns/home#/topics) en la consola de Amazon SNS.

1. Elija el tema **ticketTopic**.

1. Elija **Publish message (Publicar mensaje)**.

1. En la página **Publicar mensaje en tema**, ingrese lo siguiente en el cuerpo del mensaje. Agregue un carácter de nueva línea al final del mensaje.

   ```
   {"BookingDate":"2020-12-15","BookingTime":"2020-12-15 04:15:05","Destination":"Miami","FlyingFrom":"Vancouver","TicketNumber":"abcd1234"}
   ```

   Mantenga todas las demás opciones en sus valores predeterminados.

1. Elija **Publish message (Publicar mensaje)**.

   Para obtener más información sobre la publicación de mensajes, consulte [Publicación de un mensaje de Amazon SNS](sns-publishing.md).

1. Después del intervalo de flujo de entrega de 60 segundos, abra la [consola de Amazon Simple Storage Service (Amazon S3)](https://console.aws.amazon.com/s3/home) y elija el bucket de Amazon S3 que [creó en un principio](firehose-example-initial-resources.md).

   El mensaje publicado aparece en el bucket.

**Para consultar los datos, siga estos pasos:**

1. Abra la [consola de Amazon Athena](https://console.aws.amazon.com/athena/home).

1. Ejecute una consulta.

   Por ejemplo, supongamos que en la tabla `notifications` del esquema `default` se incluyen los siguientes datos:

   ```
   {"BookingDate":"2020-12-15","BookingTime":"2020-12-15 04:15:05","Destination":"Miami","FlyingFrom":"Vancouver","TicketNumber":"abcd1234"}
   {"BookingDate":"2020-12-15","BookingTime":"2020-12-15 11:30:15","Destination":"Miami","FlyingFrom":"Omaha","TicketNumber":"efgh5678"}
   {"BookingDate":"2020-12-15","BookingTime":"2020-12-15 3:30:10","Destination":"Miami","FlyingFrom":"NewYork","TicketNumber":"ijkl9012"}
   {"BookingDate":"2020-12-15","BookingTime":"2020-12-15 12:30:05","Destination":"Delhi","FlyingFrom":"Omaha","TicketNumber":"mnop3456"}
   ```

   Para buscar el destino principal, ejecute la siguiente consulta:

   ```
   SELECT destination
   FROM default.notifications
   GROUP BY destination
   ORDER BY count(*) desc
   LIMIT 1;
   ```

   Para consultar los tickets vendidos durante un intervalo de fecha y hora específico, ejecute una consulta como la siguiente:

   ```
   SELECT * 
   FROM default.notifications 
   WHERE bookingtime 
     BETWEEN TIMESTAMP '2020-12-15 10:00:00' 
     AND TIMESTAMP '2020-12-15 12:00:00';
   ```

   Puede adaptar ambas consultas de muestra según sus propias necesidades. Si desea obtener más información sobre el uso de Athena para ejecutar consultas, consulte [Introducción](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html) en la *Guía del usuario de Amazon Athena*.

## Limpieza
<a name="firehose-example-cleanup"></a>

Para evitar incurrir en cargos de uso después de haber terminado la prueba, elimine los siguientes recursos que creó durante el tutorial:
+ Suscripciones a Amazon SNS
+ Tema de Amazon SNS
+ Colas de Amazon Simple Queue Service (Amazon SQS)
+ Bucket de Amazon S3
+  flujo de entrega
+ AWS Identity and Access Management Funciones y políticas (IAM)

# Automatizar el archivado de mensajes de Amazon SNS con una plantilla CloudFormation
<a name="firehose-example-cfn"></a>

Para automatizar la implementación de [caso de uso de ejemplo de archivado y análisis de mensajes](firehose-example-use-case.md) de Amazon SNS, puede usar la siguiente plantilla YAML:

```
---
AWSTemplateFormatVersion: '2010-09-09'
Description: Template for creating an SNS archiving use case
Resources:
  ticketUploadStream:
    DependsOn:
    - ticketUploadStreamRolePolicy
    Type: AWS::KinesisFirehose::DeliveryStream
    Properties:
      S3DestinationConfiguration:
        BucketARN: !Sub 'arn:${AWS::Partition}:s3:::${ticketArchiveBucket}'
        BufferingHints:
          IntervalInSeconds: 60
          SizeInMBs: 1
        CompressionFormat: UNCOMPRESSED
        RoleARN: !GetAtt ticketUploadStreamRole.Arn
  ticketArchiveBucket:
    Type: AWS::S3::Bucket
  ticketTopic:
    Type: AWS::SNS::Topic
  ticketPaymentQueue:
    Type: AWS::SQS::Queue
  ticketFraudQueue:
    Type: AWS::SQS::Queue
  ticketQueuePolicy:
    Type: AWS::SQS::QueuePolicy
    Properties:
      PolicyDocument:
        Statement:
          Effect: Allow
          Principal:
            Service: sns.amazonaws.com
          Action:
            - sqs:SendMessage
          Resource: '*'
          Condition:
            ArnEquals:
              aws:SourceArn: !Ref ticketTopic
      Queues:
        - !Ref ticketPaymentQueue
        - !Ref ticketFraudQueue
  ticketUploadStreamSubscription:
    Type: AWS::SNS::Subscription
    Properties:
      TopicArn: !Ref ticketTopic
      Endpoint: !GetAtt ticketUploadStream.Arn
      Protocol: firehose
      SubscriptionRoleArn: !GetAtt ticketUploadStreamSubscriptionRole.Arn
  ticketPaymentQueueSubscription:
    Type: AWS::SNS::Subscription
    Properties:
      TopicArn: !Ref ticketTopic
      Endpoint: !GetAtt ticketPaymentQueue.Arn
      Protocol: sqs
  ticketFraudQueueSubscription:
    Type: AWS::SNS::Subscription
    Properties:
      TopicArn: !Ref ticketTopic
      Endpoint: !GetAtt ticketFraudQueue.Arn
      Protocol: sqs
  ticketUploadStreamRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17		 	 	 '
        Statement:
        - Sid: ''
          Effect: Allow
          Principal:
            Service: firehose.amazonaws.com
          Action: sts:AssumeRole
  ticketUploadStreamRolePolicy:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: FirehoseticketUploadStreamRolePolicy
      PolicyDocument:
        Version: '2012-10-17		 	 	 '
        Statement:
        - Effect: Allow
          Action:
          - s3:AbortMultipartUpload
          - s3:GetBucketLocation
          - s3:GetObject
          - s3:ListBucket
          - s3:ListBucketMultipartUploads
          - s3:PutObject
          Resource:
          - !Sub 'arn:aws:s3:::${ticketArchiveBucket}'
          - !Sub 'arn:aws:s3:::${ticketArchiveBucket}/*'
      Roles:
      - !Ref ticketUploadStreamRole
  ticketUploadStreamSubscriptionRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17		 	 	 '
        Statement:
        - Effect: Allow
          Principal:
            Service:
            - sns.amazonaws.com
          Action:
          - sts:AssumeRole
      Policies:
      - PolicyName: SNSKinesisFirehoseAccessPolicy
        PolicyDocument:
          Version: '2012-10-17		 	 	 '
          Statement:
          - Action:
            - firehose:DescribeDeliveryStream
            - firehose:ListDeliveryStreams
            - firehose:ListTagsForDeliveryStream
            - firehose:PutRecord
            - firehose:PutRecordBatch
            Effect: Allow
            Resource:
            - !GetAtt ticketUploadStream.Arn
```