

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.

# Archivo y reproducción de mensajes de Amazon SNS para temas FIFO
<a name="fifo-message-archiving-replay"></a>

## ¿Qué es el archivo y reproducción de mensajes?
<a name="what-is-message-archiving-and-replay"></a>

Amazon SNS ofrece una característica de archivo y reproducción de mensajes sin código, diseñada específicamente para temas FIFO (First-In-First-Out). Esta característica permite a los propietarios de los temas almacenar los mensajes directamente en el archivo de temas durante un máximo de 365 días y permite a los suscriptores reproducir estos mensajes cuando sea necesario. El archivo y la reproducción de los mensajes son esenciales para recuperar los mensajes perdidos y sincronizar las aplicaciones entre regiones o sistemas mediante la replicación de los estados.

Se puede acceder a esta funcionalidad a través de la AWS API CloudFormation, el SDK y Consola de administración de AWS.

**Casos de uso clave**
+ **Recuperación de mensajes**: recupere los mensajes perdidos debido a errores en las aplicaciones posteriores reproduciéndolos en el punto de conexión del suscriptor.
+ **Replicación de estado**: replique el estado de un sistema existente en un entorno nuevo reproduciendo los mensajes desde una marca de tiempo específica.
+ **Corrección de errores**: reenvíe los mensajes perdidos durante las interrupciones para garantizar que todos los eventos se procesen correctamente.

### Componentes del archivo y reproducción de mensajes
<a name="message-archiving-and-replay-components"></a>

Administre el archivado y la reproducción de mensajes para los temas de FIFO de Amazon SNS, lo que incluye establecer períodos de retención, monitorear el uso de los mensajes archivados, iniciar las reproducciones CloudWatch mediante los atributos de suscripción y comprender los permisos necesarios para modificar e iniciar las repeticiones.

**Archivo de mensajes**
+ El propietario del tema habilita la característica de archivo y establece el período de retención de los mensajes, que puede ser de hasta 365 días. Para obtener más información, consulte [Archivo de mensajes de Amazon SNS para propietarios de temas FIFO](message-archiving-and-replay-topic-owner.md).
+ CloudWatch las métricas ayudan a monitorear los mensajes archivados.

**Reproducción de mensajes**
+ Un suscriptor inicia una reproducción y selecciona el intervalo de tiempo para que los mensajes se vuelvan a procesar en el punto de conexión suscrito. Para obtener más información, consulte [Reproducción de mensajes de Amazon SNS para los suscriptores de temas FIFO](message-archiving-and-replay-subscriber.md). 
+ La reproducción se administra mediante los atributos de suscripción con la característica `ReplayPolicy`.

**Permisos adecuados**
+ **`SetSubscriptionAttributes`**: necesario para configurar o modificar la configuración de reproducción mediante el atributo `ReplayPolicy` de una suscripción.
+ **`Subscribe`**: necesario para adjuntar una nueva suscripción e iniciar las reproducciones.
+ **`GetTopicAttributes`**: permite ver las propiedades del tema, pero el inicio de la reproducción gira principalmente en torno a la administración de la suscripción.

# Archivo de mensajes de Amazon SNS para propietarios de temas FIFO
<a name="message-archiving-and-replay-topic-owner"></a>

El archivo de mensajes proporciona la posibilidad de archivar una sola copia de todos los mensajes publicados en el tema. Puede almacenar los mensajes publicados en el tema habilitando la política de archivo de mensajes correspondiente en el tema, que permite archivar los mensajes de todas las suscripciones vinculadas a ese tema. Los mensajes se pueden archivar durante un mínimo de un día y un máximo de 365 días.

Se aplican cargos adicionales al establecer una política de archivo. Para obtener información acerca de los precios, consulte [Precios de Amazon SNS](https://aws.amazon.com/sns/pricing/).

## Crea una política de archivado de mensajes mediante el Consola de administración de AWS
<a name="message-archiving-and-replay-topic-console"></a>

Utilice esta opción para crear una nueva política de archivo de mensajes con la Consola de administración de AWS.

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

1. Elija un tema o cree uno nuevo. Para obtener más información acerca de la creación de temas, consulte [Creación de un tema de Amazon SNS](sns-create-topic.md).
**nota**  
El archivado y la reproducción de mensajes de Amazon SNS solo están disponibles para temas de FIFO application-to-application (A2A).

1. En la página **Editar tema**, expanda la sección **Política de archivo**.

1. Habilite la característica de **política de archivo** e ingrese el **número de días** durante los que desea archivar los mensajes en el tema.

1. Seleccione **Save changes (Guardar cambios)**.

**Para consultar, editar y desactivar una política de temas de archivo de mensajes**
+ En la página de **Detalles del tema**, la **Política de retención** muestra el estado de la política de archivo, incluida la cantidad de días para los que está configurada. Seleccione la pestaña **Política de archivo** para ver los siguientes detalles del archivo de mensajes:
  + **Estado**: el estado de archivo y reproducción aparece como **activo** cuando se aplica una política de archivo. El estado de archivo y reproducción aparece como **inactivo** cuando la política de archivo se establece en un objeto JSON vacío.
  + **Periodo de retención de mensajes**: el número de días especificado para la retención de mensajes.
  + **Fecha de inicio del archivo**: fecha a partir de la cual los suscriptores pueden reproducir los mensajes.
  + **Vista previa en JSON**: la vista previa en JSON de la política de archivo.
+ (Opcional) Para **editar** una política de archivo, vaya a la página de resumen del tema y elija **Editar**.
+ (Opcional) Para **desactivar** una política de archivo, vaya a la página de resumen del tema y elija **Editar**. Desactive la **política de archivo** y elija **Guardar cambios**.
+ (Opcional) Para **eliminar** un tema con una política de archivo, primero debe desactivar la política de archivo tal y como se describió anteriormente.
**importante**  
Para evitar la eliminación accidental de mensajes, no puede eliminar un tema con una política de archivo de mensajes activa. La política de archivo de mensajes del tema se debe desactivar antes de poder eliminar el tema. Al desactivar una política de archivo de mensajes, Amazon SNS elimina todos los mensajes de archivo. Al eliminar un tema, se eliminan las suscripciones y es posible que no se entreguen los mensajes en tránsito.

## Crear una política de archivo de mensajes con la API
<a name="message-archiving-and-replay-topic-api"></a>

Para crear una política de archivo de mensajes mediante la API, debe agregar el atributo `ArchivePolicy` al tema. Puede configurar `ArchivePolicy` con las acciones de la API `CreateTopic` y `SetTopicAttributes`. `ArchivePolicy` tiene un valor único, `MessageRetentionPeriod`, que representa el número de días que Amazon SNS retiene los mensajes. Para activar el archivo de mensajes para el tema, establezca `MessageRetentionPeriod` en un valor entero mayor que cero. Por ejemplo, para retener mensajes en el archivo durante 30 días, establezca `ArchivePolicy` en:

```
{
    "ArchivePolicy": {
        "MessageRetentionPeriod": "30"
    }
}
```

Para desactivar el archivo de mensajes para el tema y borrar el archivo, desactive `ArchivePolicy`, de la siguiente manera:

```
{}
```

## Crear una política de archivo de mensajes mediante el SDK
<a name="message-archiving-and-replay-topic-sdk"></a>

Para usar un AWS SDK, debe configurarlo con sus credenciales. Para obtener más información, consulte [`credentials`Archivos `config` y compartidos](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) en la *Guía de referencia de herramientas AWS SDKs y herramientas*.

En el siguiente ejemplo de código, se muestra cómo configurar `ArchivePolicy` para que un tema de Amazon SNS retenga todos los mensajes publicados en ese tema durante 30 días.

```
// Specify the ARN of the Amazon SNS topic to set the ArchivePolicy for.
String topicArn =
    "arn:aws:sns:us-east-2:123456789012:MyArchiveTopic.fifo";

// Set the MessageRetentionPeriod to 30 days for the ArchivePolicy.
String archivePolicy =
    "{\"MessageRetentionPeriod\":\"30\"}";

// Set the ArchivePolicy for the Amazon SNS topic
SetTopicAttributesRequest request = new SetTopicAttributesRequest()
    .withTopicArn(topicArn)
    .withAttributeName("ArchivePolicy")
    .withAttributeValue(archivePolicy);
sns.setTopicAttributes(request);
```

## Cree una política de archivado de mensajes mediante CloudFormation
<a name="message-archiving-and-replay-topic-cfn"></a>

Para crear una política de archivado utilizando, CloudFormation consulte [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-topic.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-topic.html)la *Guía del AWS CloudFormation usuario*.

## Conceder acceso a un archivo cifrado
<a name="message-archiving-and-replay-topic-kms"></a>

Antes de que un suscriptor pueda empezar a reproducir mensajes de un tema cifrado, debe completar los siguientes pasos. Como los mensajes anteriores se reproducen, Amazon SNS debe disponer de acceso de `Decrypt` a la clave de KMS que se utilizó para cifrar los mensajes del archivo.

1. Cuando cifra los mensajes con una clave de KMS y los almacena en el tema, debe conceder a Amazon SNS la capacidad de descifrar estos mensajes mediante una política de claves. Para obtener más información, consulte [Conceder permisos de descifrado a Amazon SNS](#message-archiving-and-replay-topic-decrypt-permissions).

1. Habilitar AWS KMS para Amazon SNS. Para obtener más información, consulte [Configuración de AWS KMS permisos](sns-key-management.md#sns-what-permissions-for-sse).

**importante**  
Cuando agregue las secciones nuevas a su política de clave de KMS, no cambie las secciones existentes en la política. Si el cifrado está habilitado en un tema y la clave de KMS está desactivada o eliminada o la política de claves de KMS no está configurada correctamente para Amazon SNS, Amazon SNS no podrá reproducir los mensajes a los suscriptores. 

### Conceder permisos de descifrado a Amazon SNS
<a name="message-archiving-and-replay-topic-decrypt-permissions"></a>

Para que Amazon SNS acceda a los mensajes cifrados desde el archivo del tema y los reproduzca en los puntos de conexión suscritos, debe habilitar el principio del servicio de Amazon SNS para descifrar estos mensajes.

A continuación, se muestra una política de ejemplo que se requiere para permitir que la entidad principal del servicio de Amazon SNS descifre los mensajes almacenados durante una reproducción del historial de mensajes dentro del tema.

```
{
    "Sid": "Allow SNS to decrypt archived messages",
    "Effect": "Allow",
    "Principal": {
        "Service": "sns.amazonaws.com"
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
    ],
    "Resource": "*"
}
```

## Supervisa las métricas del archivo de mensajes con Amazon CloudWatch
<a name="message-archiving-and-replay-topic-cloudwatch"></a>

Puedes monitorizar los mensajes archivados con Amazon CloudWatch con las siguientes métricas. Para recibir notificaciones de anomalías en tus cargas de trabajo y evitar que se vean afectadas, puedes configurar las CloudWatch alarmas de Amazon en función de estas métricas. Para obtener más información, consulte [Registro y monitoreo en Amazon SNS](sns-logging-monitoring.md).


| Métrica | Description (Descripción) | 
| --- | --- | 
|  **ApproximateNumberOfMessagesArchived**  |  Proporciona al propietario del tema el número total de mensajes archivados en el archivo de temas, en una resolución de 60 minutos.  | 
|  **ApproximateNumberOfBytesArchived**   |  Proporciona al propietario del tema el número total de bytes archivados en todos los mensajes del archivo de temas, con una resolución de 60 minutos.  | 
|  **NumberOfMessagesArchiveProcessing**   |  Proporciona al propietario del tema el número de mensajes guardados en el archivo de temas durante el intervalo en una resolución de 1 minuto.  | 
|  **NumberOfBytesArchiveProcessing**  |  Proporciona al propietario del tema el número total de bytes guardados en el archivo de temas durante el intervalo en una resolución de 1 minuto.  | 

La API `GetTopicAttributes` tiene una propiedad `BeginningArchiveTime` que representa la marca temporal más antigua en la que un suscriptor puede iniciar una reproducción. A continuación, se muestra una respuesta de ejemplo para esta acción de la API:

```
{
 "ArchivePolicy": {
    "MessageRetentionPeriod": "<integer>"
  },
  "BeginningArchiveTime": "<timestamp>",
  ...
}
```

# Reproducción de mensajes de Amazon SNS para los suscriptores de temas FIFO
<a name="message-archiving-and-replay-subscriber"></a>

La reproducción de Amazon SNS permite a los suscriptores de un tema recuperar y volver a entregar los mensajes archivados del almacén de datos del tema a un punto de conexión suscrito.
+ Los mensajes se pueden reproducir inmediatamente después de crear la suscripción.
+ Un mensaje reproducido conserva el mismo contenido, `MessageId` y `Timestamp` que el original.
+ El mensaje incluye un atributo `Replayed` para indicar que se trata de un mensaje reproducido.
+ Para reproducir solo mensajes específicos, aplique una política de filtrado a la suscripción.

Para obtener más información sobre el filtrado de mensajes, consulte [Filtrar los mensajes reproducidos](#message-archiving-and-replay-subscription-filtering).

## Cree una política de reproducción de mensajes mediante el Consola de administración de AWS
<a name="message-archiving-and-replay-replaying-console"></a>

Utilice esta opción para crear una nueva política de reproducción con la Consola de administración de AWS.

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

1. Elija una suscripción a un tema o cree uno nuevo. Para obtener más información acerca de la creación de suscripciones, consulte [Creación de una suscripción a un tema de Amazon SNS](sns-create-subscribe-endpoint-to-topic.md).

1. Para iniciar la reproducción del mensaje, vaya al menú desplegable **Reproducción** y elija **Iniciar reproducción**.

1. Desde el modal de **periodo de reproducción**, seleccione las siguientes opciones:

   1. **Elija la fecha y la hora de inicio de la reproducción**: elija la **fecha** (YYYY/MM/DDformato) y la **hora** (formato hh:mm:ss de 24 horas) a partir de las que quiere empezar a reproducir los mensajes archivados. La hora de inicio debe ser posterior al inicio de la hora aproximada de archivo.

   1. **(Opcional) Elige la fecha y hora de finalización de la reproducción: elige la **fecha** (YYYY/MM/DDformato) y la hora** **(formato hh:mm:ss de 24 horas) en las que quieres dejar de reproducir los mensajes archivados.**

   1. Elija **Iniciar la reproducción**.

1. (Opcional) Para **detener** la reproducción de un mensaje, vaya a la página de **Detalles de la suscripción** y elija **Detener la reproducción** en el menú desplegable de **Reproducción**.

1. (Opcional) Para **supervisar** las métricas de reproducción de mensajes desde este flujo de trabajo mediante, consulte. CloudWatch [Supervisa las métricas de reproducción de mensajes con Amazon CloudWatch](#message-archiving-and-replay-subscription-cloudwatch)

**Para ver y editar una política de reproducción de mensajes**

Desde la página de **detalles de suscripción**, podrá realizar las acciones siguientes:
+ Para **ver** el estado de la reproducción del mensaje, el campo de **estado de la reproducción** muestra los siguientes valores:
  + **Completada**: la reproducción ha vuelto a entregar correctamente todos los mensajes y ahora muestra los mensajes recién publicados.
  + **En curso**: la reproducción está reproduciendo actualmente los mensajes seleccionados.
  + **Con error**: la reproducción no se ha podido completar.
  + **Pendiente**: el estado predeterminado cuando se inicia la reproducción.
+ (Opcional) Para **modificar** una política de reproducción de un mensaje, vaya a la página de **Detalles de la suscripción** y elija **Iniciar la reproducción** en el menú desplegable de **Reproducción**. Al iniciar una repetición, se sustituirá la reproducción existente.

## Agregar una política de reproducción a la suscripción mediante la API
<a name="message-archiving-and-replay-subscription-api"></a>

Para reproducir los mensajes archivados, utilice el atributo `ReplayPolicy`. `ReplayPolicy` se puede usar con las acciones de la API `Subscribe` y `SetSubscriptionAttributes`. Esta política tiene los siguientes valores:
+ **`StartingPoint`** (obligatorio): indica desde dónde empezar a reproducir los mensajes.
+ **`EndingPoint`** (opcional): indica cuándo dejar de reproducir los mensajes. Si `EndingPoint` se omite, la reproducción continuará hasta que se ajuste a la hora actual.
+ **`PointType`** (obligatorio): establece el tipo de puntos de inicio y final. Actualmente, el valor admitido `PointType` es `Timestamp`.

Por ejemplo, para recuperarse de un error posterior y volver a enviar todos los mensajes durante un periodo de dos horas el 1 de octubre de 2023, use la acción de la API `SetSubscriptionAttributes` para configurar una `ReplayPolicy` de la siguiente manera:

```
{
  "PointType":"Timestamp", 
  "StartingPoint":"2023-10-01T10:00:00.000Z", 
  "EndingPoint":"2023-10-01T12:00:00.000Z"
}
```

Para reproducir todos los mensajes enviados al tema a partir del 1 de octubre de 2023 y seguir recibiendo todos los mensajes recién publicados sobre el tema, use la acción de la API `SetSubscriptionAttributes` para configurar una `ReplayPolicy` en la suscripción de la siguiente manera:

```
{
  "PointType":"Timestamp",
  "StartingPoint":"2023-10-01T00:00:00.000Z"
}
```

Para comprobar que un mensaje se ha reproducido, se agrega el atributo booleano `Replayed` a cada mensaje reproducido.

## Agregar una política de reproducción a la suscripción mediante el SDK
<a name="message-replay-sdk"></a>

Para usar un AWS SDK, debe configurarlo con sus credenciales. Para obtener más información, consulte [`credentials`Archivos `config` y compartidos](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) en la *Guía de referencia de herramientas AWS SDKs y herramientas*.

El siguiente ejemplo de código muestra cómo configurar `ReplayPolicy` en una suscripción para volver a entregar mensajes del archivo del tema FIFO de Amazon SNS durante un periodo de 2 horas el 1 de octubre de 2023.

```
// Specify the ARN of the Amazon SNS subscription to initiate the ReplayPolicy on.
String subscriptionArn =
    "arn:aws:sns:us-east-2:123456789012:MyArchiveTopic.fifo:1d2a3e9d-7f2f-447c-88ae-03f1c68294da";

// Set the ReplayPolicy to replay messages from the topic's archive 
// for a 2 hour time period on October 1st 2023 between 10am and 12pm UTC.
String replayPolicy =
    "{\"PointType\":\"Timestamp\",\"StartingPoint\":\"2023-10-01T10:00:00.000Z\",\"EndingPoint\":\"2023-10-01T12:00:00.000Z\"}";

// Set the ArchivePolicy for the Amazon SNS topic
SetSubscriptionAttributesRequest request = new SetSubscriptionAttributesRequest()
    .withSubscriptionArn(subscriptionArn)
    .withAttributeName("ReplayPolicy")
    .withAttributeValue(replayPolicy);
sns.setSubscriptionAttributes(request);
```

## Entendiendo el EndingPoint
<a name="message-archiving-and-replay-understanding-endpoint"></a>

Cuando se aplica un atributo `ReplayPolicy` a una suscripción de Amazon SNS, el valor `EndingPoint` es opcional. Si no se proporciona `EndingPoint`, la reproducción empezará a partir del `StartingPoint` especificado y continuará hasta alcanzar la hora actual, incluido el procesamiento de los mensajes recién publicados. Una vez actualizada, la suscripción funcionará como una suscripción normal y recibirá los mensajes nuevos a medida que se publiquen.

Si se especifica un `EndingPoint`, el servicio reproducirá los mensajes desde el `StartingPoint` hasta el `EndingPoint` y, a continuación, se detendrá. **Esta acción pone en pausa la suscripción.** Mientras la suscripción esté en pausa, los mensajes recién publicados no se entregarán al punto de conexión suscrito.

Para reanudar la entrega de mensajes, aplique un nuevo atributo `ReplayPolicy` sin proporcionar un `EndingPoint` y establezca el `StartingPoint` en el punto en el tiempo en el que desee seguir recibiendo mensajes. Por ejemplo, para reanudar una suscripción desde el momento en que finalizó una reproducción anterior, establezca el nuevo `StartingPoint` en el `EndingPoint` proporcionado anteriormente.

## Filtrar los mensajes reproducidos
<a name="message-archiving-and-replay-subscription-filtering"></a>

El filtrado de mensajes de Amazon SNS le permite controlar los mensajes reproducidos que Amazon SNS reproduce en el punto de conexión del suscriptor. Cuando el filtrado y el archivo de mensajes están habilitados, Amazon SNS primero recupera el mensaje del almacén de datos del tema y, a continuación, lo aplica a la `FilterPolicy` de la suscripción. El mensaje se entrega al punto de conexión suscrito cuando hay una coincidencia; de lo contrario, el mensaje se filtra. Para obtener más información, consulte [Políticas de filtro de suscripciones de Amazon SNS](sns-subscription-filter-policies.md).

## Supervisa las métricas de reproducción de mensajes con Amazon CloudWatch
<a name="message-archiving-and-replay-subscription-cloudwatch"></a>

Puedes monitorizar los mensajes reproducidos con Amazon CloudWatch con las siguientes métricas. Para recibir notificaciones de anomalías en tus cargas de trabajo y evitar que se vean afectadas, puedes configurar las CloudWatch alarmas de Amazon en función de estas métricas. Para obtener más información, consulte [Registro y monitoreo en Amazon SNS](sns-logging-monitoring.md).


| Métrica | Description (Descripción) | 
| --- | --- | 
|  **NumberOfReplayedNotificationsDelivered**  |  Proporciona al suscriptor el número total de mensajes reproducidos del archivo de temas, con una resolución de 1 minuto.  | 
|  **NumberOfReplayedNotificationsFailed**   |  Proporciona al suscriptor el número total de mensajes reproducidos que han producido un error al entregar desde el archivo de temas, en una resolución de 1 minuto.  | 