

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 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>}}",
  ...
}
```