

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

# Arquivamento e reprodução de mensagens do Amazon SNS de tópicos FIFO
<a name="fifo-message-archiving-replay"></a>

## O que é arquivamento e reprodução de mensagens?
<a name="what-is-message-archiving-and-replay"></a>

O Amazon SNS oferece um recurso de arquivamento e reprodução de mensagens sem código, projetado especificamente para tópicos FIFO (First-In-First-Out). Esse recurso permite que os proprietários de tópicos armazenem mensagens diretamente no arquivo de tópicos por até 365 dias e as reproduzam para os assinantes quando necessário. O arquivamento e a reprodução de mensagens são essenciais para recuperar mensagens perdidas e sincronizar aplicativos entre regiões ou sistemas por meio da replicação de estados.

Essa funcionalidade pode ser acessada por meio da AWS API CloudFormation, SDK e. Console de gerenciamento da AWS

**Casos de uso principais**
+ **Recuperação de mensagens**: recupere mensagens perdidas devido a falhas de aplicativos posteriores, reproduzindo-as no endpoint do assinante.
+ **Replicação de estado**: replique o estado de um sistema existente em um novo ambiente reproduzindo mensagens a partir de um timestamp específico.
+ **Correção de erros**: reenvie mensagens perdidas durante interrupções para garantir que todos os eventos sejam processados corretamente.

### Componentes do arquivamento e reprodução de mensagens
<a name="message-archiving-and-replay-components"></a>

Gerencie o arquivamento e a repetição de mensagens para tópicos FIFO do Amazon SNS, incluindo definir períodos de retenção, monitorar o CloudWatch uso de mensagens arquivadas, iniciar repetições por meio de atributos de assinatura e entender as permissões necessárias para modificar e iniciar repetições.

**Arquivamento de mensagens**
+ O proprietário do tópico ativa o recurso de arquivamento e define o período de retenção de mensagens, que pode ser de até 365 dias. Para saber mais, consulte [Arquivamento de mensagens do Amazon SNS para proprietários de tópicos FIFO](message-archiving-and-replay-topic-owner.md)
+ CloudWatch as métricas ajudam a monitorar as mensagens arquivadas.

**Reprodução de mensagens**
+ Um assinante inicia uma repetição, selecionando a janela de tempo para as mensagens serem reprocessadas no endpoint inscrito. Para saber mais, consulte [Reprodução de mensagens do Amazon SNS para assinantes de tópicos FIFO](message-archiving-and-replay-subscriber.md). 
+ Você gerencia o replay por meio de atributos de assinatura usando o recurso `ReplayPolicy`.

**Permissões relevantes**
+ **`SetSubscriptionAttributes`**: necessário para definir ou modificar as configurações de repetição usando o atributo `ReplayPolicy` em uma assinatura.
+ **`Subscribe`**: necessário para anexar uma nova assinatura e iniciar os replays.
+ **`GetTopicAttributes`**: permite visualizar as propriedades do tópico, mas o início da repetição gira principalmente em torno do gerenciamento de assinaturas.

# Arquivamento de mensagens do Amazon SNS para proprietários de tópicos FIFO
<a name="message-archiving-and-replay-topic-owner"></a>

O arquivamento de mensagens oferece a capacidade de arquivar uma única cópia de todas as mensagens publicadas no tópico. É possível armazenar mensagens publicadas no tópico habilitando a política de arquivamento de mensagens no tópico, o que permite o arquivamento de mensagens para todas as assinaturas vinculadas a esse tópico. As mensagens podem ser arquivadas por um período mínimo de 1 dia a, no máximo, 365 dias.

Há cobranças adicionais ao definir uma política de arquivamento. Para obter informações sobre preços, consulte [Definição de preço do Amazon SNS](https://aws.amazon.com/sns/pricing/).

## Crie uma política de arquivamento de mensagens usando o Console de gerenciamento da AWS
<a name="message-archiving-and-replay-topic-console"></a>

Use essa opção para criar uma política de arquivamento de mensagens com o Console de gerenciamento da AWS.

1. Faça login no console [do Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Selecione um tópico ou crie um. Para saber mais sobre como criar tópicos, consulte [Criar um tópico do Amazon SNS](sns-create-topic.md).
**nota**  
O arquivamento e a reprodução de mensagens do Amazon SNS só estão disponíveis para tópicos de FIFO application-to-application (A2A).

1. Na página **Editar tópico**, expanda a seção **Política de arquivamento**.

1. Ative o recurso **Política de arquivamento** e insira o **número de dias** durante os quais você deseja arquivar mensagens no tópico.

1. Escolha **Salvar alterações**.

**Como visualizar, editar e desativar uma política de tópico de arquivamento de mensagens**
+ Na página **Detalhes do tópico**, a **Política de retenção** exibe o status da política de arquivamento, incluindo o número de dias para os quais ela está definida. Selecione a guia **Política de arquivamento** para ver os seguintes detalhes do arquivamento de mensagens:
  + **Status**: o status de arquivamento e reprodução aparece como **ativo** quando uma política de arquivamento é aplicada. O status de arquivamento e reprodução aparece como **inativo** quando a política de arquivamento é definida como um objeto JSON vazio.
  + **Período de retenção de mensagens**: o número especificado de dias de retenção de mensagens.
  + **Data de início do arquivamento**: a data a partir da qual os assinantes podem reproduzir as mensagens.
  + **Pré-visualização de JSON**: a pré-visualização JSON da política de arquivamento.
+ (Opcional) Para **editar** uma política de arquivamento, acesse a página de resumo do tópico e selecione **Editar**.
+ (Opcional) Para **desativar** uma política de arquivamento, acesse a página de resumo do tópico e selecione **Editar**. Desative a **Política de arquivamento** e selecione **Salvar alterações**.
+ (Opcional) Para **excluir** um tópico com uma política de arquivamento, é necessário primeiro desativar a política de arquivamento conforme descrito anteriormente.
**Importante**  
Para evitar exclusões acidentais de mensagens, você não pode excluir um tópico com uma política de arquivamento de mensagens ativa. A política de arquivamento de mensagens do tópico deve ser desativada para que o tópico possa ser excluído. Quando você desativa uma política de arquivamento de mensagens, o Amazon SNS exclui todas as mensagens arquivadas. Ao excluir um tópico, as assinaturas são removidas e nenhuma mensagem em trânsito pode ser entregue.

## Criar uma política de arquivamento de mensagens usando a API
<a name="message-archiving-and-replay-topic-api"></a>

Para criar uma política de arquivamento de mensagens com a API, é necessário adicionar o atributo `ArchivePolicy` ao tópico. É possível definir uma `ArchivePolicy` usando as ações da API `CreateTopic` e `SetTopicAttributes`. A `ArchivePolicy` tem um valor único, `MessageRetentionPeriod`, que representa o número de dias pelos quais o Amazon SNS retém as mensagens. Para ativar o arquivamento de mensagens para o tópico, defina o `MessageRetentionPeriod` como um valor inteiro maior que zero. Por exemplo, para reter mensagens em seu arquivo por 30 dias, defina a `ArchivePolicy` como:

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

Para desativar o arquivamento de mensagens do tópico e limpar o arquivo, cancele a definição da `ArchivePolicy` da seguinte forma:

```
{}
```

## Criar uma política de arquivamento de mensagens usando o SDK
<a name="message-archiving-and-replay-topic-sdk"></a>

Para usar um AWS SDK, você deve configurá-lo com suas credenciais. Para obter mais informações, consulte [Compartilhados `config` e `credentials` arquivos](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) no *Guia de referência de ferramentas AWS SDKs e ferramentas*.

O exemplo de código a seguir mostra como definir a `ArchivePolicy` para um tópico do Amazon SNS com o objetivo de reter todas as mensagens publicadas no tópico por 30 dias.

```
// 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);
```

## Crie uma política de arquivamento de mensagens usando CloudFormation
<a name="message-archiving-and-replay-topic-cfn"></a>

Para criar uma política de arquivamento usando, 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)o *Guia AWS CloudFormation do Usuário*.

## Conceder acesso a um arquivo criptografado
<a name="message-archiving-and-replay-topic-kms"></a>

Para que um assinante possa começar a reproduzir mensagens de um tópico criptografado, siga as etapas abaixo. Como as mensagens passadas são reproduzidas, o Amazon SNS precisa ter acesso `Decrypt` provisionado à chave do KMS que foi usada para criptografar as mensagens no arquivo.

1. Ao criptografar mensagens com uma chave do KMS e armazená-las no tópico, é necessário conceder ao Amazon SNS a capacidade de descriptografar essas mensagens por meio da política de chave. Para saber mais, consulte [Conceder permissões de descriptografia ao Amazon SNS](#message-archiving-and-replay-topic-decrypt-permissions).

1. Habilite AWS KMS para o Amazon SNS. Para saber mais, consulte [Configurando permissões AWS KMS](sns-key-management.md#sns-what-permissions-for-sse).

**Importante**  
Quando você adicionar as novas seções à política de chave do KMS, não altere as seções existentes na política. Se a criptografia estiver habilitada em um tópico e a chave do KMS estiver desabilitada ou tiver sido excluída, ou a política de chave do KMS não estiver configurada corretamente para o Amazon SNS, o Amazon SNS não poderá reproduzir mensagens para seus assinantes. 

### Conceder permissões de descriptografia ao Amazon SNS
<a name="message-archiving-and-replay-topic-decrypt-permissions"></a>

Para que o Amazon SNS acesse mensagens criptografadas de dentro do arquivo do tópico e as reproduza nos endpoints inscritos, é necessário habilitar o princípio de serviço do Amazon SNS para descriptografar essas mensagens.

Veja a seguir um exemplo da política que é necessária para permitir que a entidade principal do serviço do Amazon SNS descriptografe mensagens armazenadas durante uma reprodução de mensagens históricas do tópico.

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

## Monitore métricas de arquivamento de mensagens usando a Amazon CloudWatch
<a name="message-archiving-and-replay-topic-cloudwatch"></a>

Você pode monitorar mensagens arquivadas usando a Amazon CloudWatch usando as seguintes métricas. Para ser notificado sobre anomalias em suas cargas de trabalho e ajudar a evitar impactos, você pode configurar os CloudWatch alarmes da Amazon com base nessas métricas. Consulte mais detalhes em [Registrar em log e monitorar no Amazon SNS](sns-logging-monitoring.md).


| Métrica | Description | 
| --- | --- | 
|  **ApproximateNumberOfMessagesArchived**  |  Fornece ao proprietário do tópico o número agregado de mensagens arquivadas no arquivo de tópicos, com resolução de 60 minutos.  | 
|  **ApproximateNumberOfBytesArchived**   |  Fornece ao proprietário do tópico o número agregado de bytes arquivados, em todas as mensagens no arquivo de tópicos, com resolução de 60 minutos.  | 
|  **NumberOfMessagesArchiveProcessing**   |  Fornece ao proprietário do tópico o número de mensagens salvas no arquivo do tópico durante o intervalo em resolução de 1 minuto.  | 
|  **NumberOfBytesArchiveProcessing**  |  Fornece ao proprietário do tópico o número agregado de bytes salvos no arquivo do tópico durante o intervalo em resolução de 1 minuto.  | 

A API `GetTopicAttributes` tem uma propriedade `BeginningArchiveTime`, que representa o carimbo de data e hora mais antigo no qual um assinante pode iniciar uma reprodução. O seguinte exemplo representa uma resposta para essa ação de API:

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

# Reprodução de mensagens do Amazon SNS para assinantes de tópicos FIFO
<a name="message-archiving-and-replay-subscriber"></a>

A reprodução do Amazon SNS permite que os assinantes do tópico recuperem mensagens arquivadas do armazenamento de dados do tópico e as entreguem novamente para um endpoint inscrito.
+ As mensagens podem ser reproduzidas novamente assim que a assinatura for criada.
+ Uma mensagem reproduzida novamente mantém o mesmo conteúdo, `MessageId` e `Timestamp` que a original.
+ A mensagem inclui um atributo `Replayed` para indicar que é uma mensagem repetida.
+ Para reproduzir novamente apenas mensagens específicas, aplique uma política de filtro à assinatura.

Para obter mais informações sobre como filtrar mensagens, consulte [Filtrar mensagens reproduzidas](#message-archiving-and-replay-subscription-filtering).

## Crie uma política de reprodução de mensagens usando o Console de gerenciamento da AWS
<a name="message-archiving-and-replay-replaying-console"></a>

Use essa opção para criar uma política de reprodução de mensagens com o Console de gerenciamento da AWS.

1. Faça login no console [do Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Selecione uma assinatura de tópico ou crie uma. Para saber mais sobre como criar assinaturas, consulte [Criação de uma assinatura em um tópico do Amazon SNS](sns-create-subscribe-endpoint-to-topic.md).

1. Para iniciar a reprodução de mensagens, acesse o menu suspenso **Reproduzir** e selecione **Iniciar reprodução**.

1. No modal **Prazo de repetição**, selecione:

   1. **Escolha a data e a hora de início da repetição** — Escolha a **data** (YYYY/MM/DDformato) e a **hora** (formato hh:mm:ss de 24 horas) a partir das quais você deseja começar a reproduzir as mensagens arquivadas. A hora de início deve ser posterior ao início da hora de arquivamento aproximada.

   1. **(Opcional) Escolha a data e a hora de término da repetição** — Escolha a **data** (YYYY/MM/DDformato) e a **hora** (formato hh:mm:ss de 24 horas) em que você deseja parar de reproduzir as mensagens arquivadas.

   1. Selecione **Iniciar repetição**.

1. (Opcional) Para **interromper** a reprodução de mensagens, acesse a página **Detalhes da assinatura** e selecione **Interromper repetição** no menu suspenso **Reproduzir**.

1. (Opcional) Para **monitorar** métricas de repetição de mensagens de dentro desse fluxo de trabalho usando CloudWatch, consulte[Monitore as métricas de reprodução de mensagens usando a Amazon CloudWatch](#message-archiving-and-replay-subscription-cloudwatch).

**Como visualizar e editar uma política de reprodução de mensagens**

É possível realizar as seguintes ações na página **Detalhes da assinatura**:
+ Para **visualizar** o status de reprodução de mensagens, o campo **Status de reprodução** exibe os seguintes valores:
  + **Concluído**: a reprodução reenviou com êxito todas as mensagens e agora está enviando mensagens recém-publicadas.
  + **Em andamento**: no momento, as mensagens selecionadas estão sendo reproduzidas.
  + **Com falha**: não foi possível concluir a reprodução.
  + **Pendente**: o estado padrão durante o início da reprodução.
+ (Opcional) Para **modificar** a política de reprodução de mensagens, acesse a página **Detalhes da assinatura** e selecione **Iniciar reprodução** no menu suspenso **Reproduzir**. Ao iniciar uma reprodução, a reprodução existente será substituída.

## Adicionar uma política de reprodução à assinatura com a API
<a name="message-archiving-and-replay-subscription-api"></a>

Para reproduzir mensagens arquivadas, use o atributo `ReplayPolicy`. A `ReplayPolicy` pode ser usada com as ações `Subscribe` e `SetSubscriptionAttributes` da API. Essa política tem os seguintes valores:
+ **`StartingPoint`** (obrigatório): sinaliza de onde começar a reproduzir as mensagens.
+ **`EndingPoint`** (opcional): sinaliza quando parar de reproduzir mensagens. Se `EndingPoint` for omitido, a reprodução continuará até a hora atual.
+ **`PointType`** (obrigatório): define o tipo dos pontos de início e término. No momento, o valor compatível para `PointType` é `Timestamp`.

Por exemplo, para se recuperar de uma falha subsequente e reenviar todas as mensagens por um período de duas horas em 1.º de outubro de 2023, use a ação `SetSubscriptionAttributes` da API para definir uma `ReplayPolicy` da seguinte maneira:

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

Para reproduzir todas as mensagens enviadas ao tópico a partir de 1.º de outubro de 2023 e continuar recebendo todas as mensagens recém-publicadas no tópico, use a ação `SetSubscriptionAttributes` da API para definir uma `ReplayPolicy` na assinatura da seguinte maneira:

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

Para verificar se uma mensagem foi reproduzida, o atributo booliano `Replayed` é adicionado a cada mensagem reproduzida.

## Adicionar uma política de reprodução à assinatura com o SDK
<a name="message-replay-sdk"></a>

Para usar um AWS SDK, você deve configurá-lo com suas credenciais. Para obter mais informações, consulte [Compartilhados `config` e `credentials` arquivos](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) no *Guia de referência de ferramentas AWS SDKs e ferramentas*.

O exemplo de código a seguir mostra como definir a `ReplayPolicy` em uma assinatura para reenviar mensagens do arquivo do tópico FIFO do Amazon SNS por um período de duas horas em 1.º de outubro 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);
```

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

Quando você aplica uma `ReplayPolicy` para uma assinatura do Amazon SNS, o valor `EndingPoint` é opcional. Se não `EndingPoint` for fornecido, a repetição começará do `StartingPoint`especificado e continuará até atingir a hora atual, incluindo o processamento de qualquer mensagem recém-publicada. Depois de concluída, a assinatura funcionará como uma assinatura regular, recebendo novas mensagens à medida que forem publicadas.

Se um `EndingPoint` for especificado, o serviço reproduzirá as mensagens do `StartingPoint` até o `EndingPoint` e depois parará. **Essa ação efetivamente pausa a assinatura.** Enquanto a assinatura estiver pausada, as mensagens recém-publicadas não serão entregues ao endpoint inscrito.

Para retomar a entrega de mensagens, aplique uma nova `ReplayPolicy` sem fornecer um `EndingPoint` e defina o `StartingPoint` para o momento desejado a partir do qual continuar recebendo mensagens. Por exemplo, para retomar uma assinatura após o término de uma repetição anterior, defina o novo `StartingPoint` ao `EndingPoint` fornecido anteriormente.

## Filtrar mensagens reproduzidas
<a name="message-archiving-and-replay-subscription-filtering"></a>

A filtragem de mensagens do Amazon SNS permite que você controle as mensagens reproduzidas que o Amazon SNS reproduz no endpoint do assinante. Quando a filtragem e o arquivamento de mensagens estão habilitados, o Amazon SNS primeiro recupera a mensagem do datastore do tópico e, depois, aplica a mensagem à `FilterPolicy` da assinatura. A mensagem é enviada ao endpoint inscrito quando há uma correspondência. Caso contrário, ela é filtrada. Para obter mais informações, consulte [Políticas de filtro de assinatura do Amazon SNS](sns-subscription-filter-policies.md).

## Monitore as métricas de reprodução de mensagens usando a Amazon CloudWatch
<a name="message-archiving-and-replay-subscription-cloudwatch"></a>

Você pode monitorar mensagens de repetição usando a Amazon CloudWatch usando as seguintes métricas. Para ser notificado sobre anomalias em suas cargas de trabalho e ajudar a evitar impactos, você pode configurar os CloudWatch alarmes da Amazon com base nessas métricas. Consulte mais detalhes em [Registrar em log e monitorar no Amazon SNS](sns-logging-monitoring.md).


| Métrica | Description | 
| --- | --- | 
|  **NumberOfReplayedNotificationsDelivered**  |  Fornece ao assinante o número agregado de mensagens reproduzidas do arquivo de tópicos, com resolução de 1 minuto.  | 
|  **NumberOfReplayedNotificationsFailed**   |  Fornece ao assinante o número agregado de mensagens reproduzidas que não foram entregues do arquivo de tópicos, com resolução de 1 minuto.  | 