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á.
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 SNSPreços da Amazon
Crie uma política de arquivamento de mensagens usando o AWS Management Console
Use essa opção para criar uma política de arquivamento de mensagens com o AWS Management Console.
Faça login no SNSconsole da Amazon
. -
Selecione um tópico ou crie um. Para saber mais sobre a criação de tópicos, consulte Criação de um SNS tópico na Amazon.
nota
O arquivamento e a reprodução de SNS mensagens da Amazon só estão disponíveis para tópicos application-to-application (A2A). FIFO
-
Na página Editar tópico, expanda a seção Política de arquivamento.
-
Ative o recurso Política de arquivamento e insira o número de dias durante os quais você deseja arquivar mensagens no tópico.
-
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 repetição aparece como inativo quando a política de arquivamento é definida como um objeto vazioJSON.
-
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.
-
JSONvisualização — A JSON visualização prévia 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, a 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.
Crie uma política de arquivamento de mensagens usando o API
Para criar uma política de arquivamento de mensagens usando oAPI, você precisa adicionar o atributo ArchivePolicy
ao seu tópico. Você pode definir um ArchivePolicy
usando as API ações CreateTopic
SetTopicAttributes
e. ArchivePolicy
tem um valor único,MessageRetentionPeriod
, que representa o número de dias em que a 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:
{}
Crie uma política de arquivamento de mensagens usando o SDK
Para usar um AWS SDK, você deve configurá-lo com suas credenciais. Para obter mais informações, consulte Compartilhados config
e credentials
arquivos no Guia de referência de ferramentas AWS SDKs e ferramentas.
O exemplo de código a seguir mostra como configurar um SNS tópico da ArchivePolicy
Amazon para 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 AWS CloudFormation
Para criar uma política de arquivamento usando, AWS CloudFormation consulte AWS::SNS::Topic
o Guia AWS CloudFormation do Usuário.
Conceder acesso a um arquivo criptografado
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, a Amazon SNS precisa ter Decrypt
acesso provisionado à KMS chave que foi usada para criptografar as mensagens no arquivo.
-
Ao criptografar mensagens com uma KMS chave e armazená-las dentro do tópico, você deve conceder à Amazon SNS a capacidade de descriptografar essas mensagens por meio da Política de Chaves. Para saber mais, consulte Conceda permissões de descriptografia à Amazon SNS.
-
Habilite AWS KMS para a AmazonSNS. Para saber mais, consulte Configurando permissões AWS KMS.
Importante
Ao adicionar as novas seções à sua política de KMS chaves, não altere nenhuma seção existente na política. Se a criptografia estiver ativada em um tópico e a KMS chave for desativada ou excluída, ou se a política de KMS chaves não estiver configurada corretamente para a AmazonSNS, a Amazon SNS não poderá reproduzir mensagens para seus assinantes.
Conceda permissões de descriptografia à Amazon SNS
Para que SNS a Amazon acesse mensagens criptografadas do arquivo do seu tópico e as reproduza nos endpoints inscritos, você deve habilitar o princípio de SNS serviço da Amazon para descriptografar essas mensagens.
A seguir está um exemplo de política necessária para permitir que o responsável pelo SNS serviço da Amazon decifre mensagens armazenadas durante uma reprodução de mensagens históricas de dentro do seu 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
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. Para obter mais detalhes, consulte Registro e monitoramento na Amazon SNS.
Métrica | Descrição |
---|---|
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. |
O GetTopicAttributes
API tem uma BeginningArchiveTime
propriedade, que representa o registro de data e hora mais antigo no qual um assinante pode iniciar uma repetição. O seguinte representa um exemplo de resposta para essa API ação:
{
"ArchivePolicy": {
"MessageRetentionPeriod": "<integer>
"
},
"BeginningArchiveTime": "<timestamp>
",
...
}