

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Archivage des messages Amazon SNS pour les propriétaires de rubriques FIFO
<a name="message-archiving-and-replay-topic-owner"></a>

L'archivage des messages permet d'archiver une copie unique de tous les messages publiés dans votre rubrique. Vous pouvez stocker les messages publiés dans votre rubrique en activant la politique d'archivage des messages au niveau de la rubrique. L'archivage des messages est alors activé pour tous les abonnements liés à cette rubrique. Les messages peuvent être archivés au minimum un jour et au maximum 365 jours.

La définition d'une politique d'archivage entraîne des frais supplémentaires. Pour en savoir plus sur la tarification, consultez [Tarification Amazon SNS](https://aws.amazon.com/sns/pricing/).

## Créez une politique d'archivage des messages à l'aide du AWS Management Console
<a name="message-archiving-and-replay-topic-console"></a>

Cette option vous permet de créer une politique d'archivage des messages à l'aide de la AWS Management Console.

1. Connectez-vous à la [console Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Choisissez une rubrique ou créez-en une. Pour en savoir plus sur la création de rubriques, consultez [Création d'une rubrique Amazon SNS](sns-create-topic.md).
**Note**  
L'archivage et la rediffusion des messages Amazon SNS ne sont disponibles que pour les rubriques FIFO application-to-application (A2A).

1. Sur la page **Modifier la rubrique**, développez la section **Politique d'archivage**.

1. Activez la fonctionnalité **Politique d'archivage**, puis saisissez le **nombre de jours** durant lesquels les messages de la rubrique doivent être archivés.

1. Sélectionnez **Enregistrer les modifications**.

**Pour afficher, modifier et désactiver une politique de rubrique relative à l'archivage des messages**
+ Sur la page **Détails de la rubrique**, **Politique de conservation** indique le statut de la politique d'archivage, y compris le nombre de jours pour lequel elle est définie. Sélectionnez l'onglet **Politique d'archivage** pour afficher les détails d'archivage des messages suivants :
  + **Statut** : le statut d'archivage-relecture indique **actif** lorsqu'une politique d'archivage est appliquée. Le statut d'archivage-relecture indique **inactif** lorsque la politique d'archivage est définie sur un objet JSON vide.
  + **Période de conservation des messages** : nombre de jours spécifié pour la conservation des messages.
  + **Date de début de l'archivage** : date à partir de laquelle les abonnés peuvent relire les messages.
  + **Aperçu JSON** : aperçu JSON de la politique d'archivage.
+ (Facultatif) Pour **modifier** une politique d'archivage, accédez à la page récapitulative de la rubrique et sélectionnez **Modifier**.
+ (Facultatif) Pour **désactiver** une politique d'archivage, accédez à la page récapitulative de la rubrique et sélectionnez **Modifier**. Désactivez la **Politique d'archivage** et sélectionnez **Enregistrer les modifications**.
+ (Facultatif) Pour **supprimer** une rubrique assortie d'une politique d'archivage, vous devez d'abord désactiver la politique d'archivage comme décrit précédemment.
**Important**  
Pour éviter les suppressions accidentelles de messages, vous ne pouvez pas supprimer une rubrique assortie d'une politique d'archivage des messages active. La politique d'archivage des messages de la rubrique doit être désactivée avant de pouvoir supprimer la rubrique. Lorsque vous désactivez une politique d'archivage des messages, Amazon SNS supprime tous les messages archivés. Lorsque vous supprimez une rubrique, les abonnements sont supprimés et la livraison des messages en transit risque d'échouer.

## Création d'une politique d'archivage des messages à l'aide de l'API
<a name="message-archiving-and-replay-topic-api"></a>

Pour créer une politique d'archivage des messages à l'aide de l'API, vous devez ajouter l'attribut `ArchivePolicy` à votre rubrique. Vous pouvez définir un attribut `ArchivePolicy` à l'aide des actions d'API `CreateTopic` et `SetTopicAttributes`. `ArchivePolicy` présente une seule valeur, `MessageRetentionPeriod`, qui représente le nombre de jours durant lesquels Amazon SNS conserve les messages. Pour activer l'archivage des messages pour votre rubrique, attribuez à `MessageRetentionPeriod` une valeur entière supérieure à zéro. Par exemple, pour conserver les messages de votre archive pendant 30 jours, définissez l'attribut `ArchivePolicy` comme suit :

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

Pour désactiver l'archivage des messages pour votre rubrique et effacer l'archive, annulez la définition de `ArchivePolicy` comme suit :

```
{}
```

## Création d'une politique d'archivage des messages à l'aide du SDK
<a name="message-archiving-and-replay-topic-sdk"></a>

Pour utiliser un AWS SDK, vous devez le configurer avec vos informations d'identification. Pour plus d'informations, consultez la section [Shared `config` and `credentials` files](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dans le *guide de référence AWS SDKs and Tools*.

L'exemple de code suivant montre comment définir l'attribut `ArchivePolicy` pour une rubrique Amazon SNS de sorte que tous les messages publiés dans la rubrique soient conservés pendant 30 jours.

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

## Créez une politique d'archivage des messages à l'aide de CloudFormation
<a name="message-archiving-and-replay-topic-cfn"></a>

Pour créer une politique d'archivage à l'aide de la CloudFormation section [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)du *Guide de AWS CloudFormation l'utilisateur*.

## Autorisation d'accès à une archive chiffrée
<a name="message-archiving-and-replay-topic-kms"></a>

Pour permettre à un abonné de commencer à relire les messages d'une rubrique chiffrée, vous devez d'abord effectuer les tâches suivantes. Sachant que des messages anciens sont relus, Amazon SNS doit obtenir un accès `Decrypt` à la clé KMS qui a servi à chiffrer les messages dans l'archive.

1. Lorsque vous chiffrez des messages avec une clé KMS et que vous les stockez dans la rubrique, vous devez accorder à Amazon SNS la possibilité de déchiffrer ces messages via la stratégie de clé. Pour en savoir plus, consultez [Octroi d'autorisations de déchiffrement à Amazon SNS](#message-archiving-and-replay-topic-decrypt-permissions).

1. Activez AWS KMS pour Amazon SNS. Pour en savoir plus, consultez [Configuration des AWS KMS autorisations](sns-key-management.md#sns-what-permissions-for-sse).

**Important**  
Lorsque vous ajoutez les nouvelles sections à votre politique de clé KMS, ne changez pas les sections existantes dans la politique. Si le chiffrement est activé au niveau d'une rubrique et que la clé KMS est désactivée ou supprimée, ou encore que la stratégie de clé KMS n'est pas correctement configurée pour Amazon SNS, Amazon SNS ne peut pas relire les messages pour vos abonnés. 

### Octroi d'autorisations de déchiffrement à Amazon SNS
<a name="message-archiving-and-replay-topic-decrypt-permissions"></a>

Pour permettre à Amazon SNS d'accéder aux messages chiffrés depuis l'archive de votre rubrique et de les relire sur les points de terminaison abonnés, vous devez autoriser le principal du service Amazon SNS à déchiffrer ces messages.

Voici un exemple de politique dont a besoin le principal du service Amazon SNS pour déchiffrer les messages stockés lors de la relecture des messages historiques de votre rubrique.

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

## Surveillez les statistiques d'archivage des messages à l'aide d'Amazon CloudWatch
<a name="message-archiving-and-replay-topic-cloudwatch"></a>

Vous pouvez surveiller les messages archivés à l'aide d'Amazon CloudWatch à l'aide des indicateurs suivants. Pour être informé des anomalies dans vos charges de travail et éviter tout impact, vous pouvez configurer les CloudWatch alarmes Amazon sur ces métriques. Pour en savoir plus, consultez [Journalisation et surveillance dans Amazon SNS](sns-logging-monitoring.md).


| Métrique | Description | 
| --- | --- | 
| **ApproximateNumberOfMessagesArchived** | Indique au propriétaire de la rubrique le nombre total de messages archivés dans l'archive de la rubrique, selon une résolution de 60 minutes. | 
| **ApproximateNumberOfBytesArchived**  | Indique au propriétaire de la rubrique le nombre total d'octets archivés pour tous les messages contenus dans l'archive de la rubrique, selon une résolution de 60 minutes. | 
| **NumberOfMessagesArchiveProcessing**  | Indique au propriétaire de la rubrique le nombre de messages enregistrés dans l'archive de la rubrique sur la période, selon une résolution d'une minute. | 
| **NumberOfBytesArchiveProcessing** | Indique au propriétaire de la rubrique le nombre total d'octets enregistrés dans l'archive de la rubrique sur la période, selon une résolution d'une minute. | 

L'API `GetTopicAttributes` possède une propriété `BeginningArchiveTime` qui représente l'horodatage le plus ancien à partir duquel un abonné peut lancer une relecture. Voici un exemple de réponse pour cette action d'API :

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