

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 et rediffusion des messages Amazon SNS pour les rubriques FIFO
<a name="fifo-message-archiving-replay"></a>

## Qu'est-ce que l'archivage-relecture des messages ?
<a name="what-is-message-archiving-and-replay"></a>

Amazon SNS fournit une fonctionnalité d'archivage et de rediffusion des messages sans code, spécialement conçue pour les sujets FIFO (premier entré, premier sorti). Cette fonctionnalité permet aux propriétaires de sujets de stocker des messages directement dans les archives des sujets pendant 365 jours au maximum et de les rediffuser aux abonnés en cas de besoin. L'archivage et la relecture des messages sont essentiels pour récupérer les messages perdus et synchroniser les applications entre les régions ou les systèmes en répliquant les états.

Cette fonctionnalité est accessible via l' AWS API, le SDK et AWS Management Console. CloudFormation

**Principaux cas d'utilisation**
+ **Récupération des messages** : récupérez les messages perdus en raison de défaillances d'applications en aval en les rejouant sur le terminal de l'abonné.
+ **Réplication d'état** : répliquez l'état d'un système existant dans un nouvel environnement en rejouant les messages commençant par un horodatage spécifique.
+ **Correction d'erreur** : renvoyez les messages manqués pendant les pannes pour vous assurer que tous les événements sont traités correctement.

### Composantes de l'archivage et de la rediffusion des messages
<a name="message-archiving-and-replay-components"></a>

Gérez l'archivage et la rediffusion des messages pour les sujets FIFO d'Amazon SNS, notamment en définissant des périodes de rétention, en surveillant l' CloudWatchutilisation des messages archivés, en initiant des rediffusions via des attributs d'abonnement et en comprenant les autorisations requises pour modifier et lancer des rediffusions.

**Archivage des messages**
+ Le propriétaire de la rubrique active la fonction d'archivage et définit la période de conservation des messages, qui peut aller jusqu'à 365 jours. Pour en savoir plus, voir [Archivage des messages Amazon SNS pour les propriétaires de rubriques FIFO](message-archiving-and-replay-topic-owner.md)
+ CloudWatch les métriques permettent de surveiller les messages archivés.

**Rediffusion du message**
+ Un abonné lance une rediffusion en sélectionnant la fenêtre temporelle pendant laquelle les messages doivent être retraités vers le point de terminaison abonné. Pour en savoir plus, consultez [Rediffusion des messages Amazon SNS pour les abonnés à la rubrique FIFO](message-archiving-and-replay-subscriber.md). 
+ Vous gérez la rediffusion via les attributs d'abonnement à l'aide de `ReplayPolicy` cette fonctionnalité.

**Autorisations pertinentes**
+ **`SetSubscriptionAttributes`**— Nécessaire pour configurer ou modifier les paramètres de rediffusion à l'aide de l'`ReplayPolicy`attribut d'un abonnement.
+ **`Subscribe`**— Nécessaire pour souscrire un nouvel abonnement et lancer des rediffusions.
+ **`GetTopicAttributes`**— Permet de consulter les propriétés du sujet, mais l'initiation de la rediffusion tourne principalement autour de la gestion des abonnements.

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

# Rediffusion des messages Amazon SNS pour les abonnés à la rubrique FIFO
<a name="message-archiving-and-replay-subscriber"></a>

Amazon SNS Replay permet aux abonnés aux rubriques de récupérer et de redistribuer les messages archivés depuis le magasin de données des rubriques vers un point de terminaison abonné.
+ Les messages peuvent être rejoués immédiatement après la création de l'abonnement.
+ Un message rejoué conserve le même contenu et `MessageId` le même `Timestamp` que l'original.
+ Le message inclut un `Replayed` attribut indiquant qu'il s'agit d'un message rejoué.
+ Pour ne rejouer que des messages spécifiques, appliquez une politique de filtrage à votre abonnement.

Pour en savoir plus sur le filtrage des messages, consultez [Filtrage des messages relus](#message-archiving-and-replay-subscription-filtering).

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

Cette option vous permet de créer une politique de relecture à l'aide de la AWS Management Console.

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

1. Choisissez un abonnement à une rubrique ou créez-en un. Pour en savoir plus sur la création d'abonnements, consultez [Création d'un abonnement à une rubrique Amazon SNS](sns-create-subscribe-endpoint-to-topic.md).

1. Pour démarrer la relecture des messages, accédez au menu déroulant **Relecture** et sélectionnez **Lancer la relecture**.

1. Dans la fenêtre modale **Période de relecture**, effectuez les sélections suivantes :

   1. **Choisir la date et l'heure de début de la réécoute : choisissez la **date** (YYYY/MM/DDformat) et l'**heure** (format hh:mm:ss sur 24 heures) à partir desquelles vous souhaitez commencer à lire** les messages archivés. L'heure de début doit être postérieure au début de l'heure approximative de l'archivage.

   1. **(Facultatif) Choisissez la date et l'heure de fin de la réécoute** : choisissez la **date** (YYYY/MM/DDformat) et l'**heure** (format hh:mm:ss sur 24 heures) auxquelles vous souhaitez arrêter de relire les messages archivés.

   1. Sélectionnez **Lancer la relecture**.

1. (Facultatif) Pour **arrêter** une relecture de messages, accédez à la page **Détails de l'abonnement** et sélectionnez **Arrêter la relecture** dans le menu déroulant **Relecture**.

1. (Facultatif) Pour **surveiller les** mesures de réexécution des messages depuis ce flux de travail à l'aide de CloudWatch, voir[Surveillez les statistiques de rediffusion des messages à l'aide d'Amazon CloudWatch](#message-archiving-and-replay-subscription-cloudwatch).

**Pour afficher et modifier une politique de relecture des messages**

Vous pouvez effectuer les actions suivantes depuis la page **Détails de l'abonnement** :
+ Pour **afficher** le statut de relecture des messages, le champ **État de la relecture** affiche les valeurs suivantes :
  + **Terminée** : la relecture a permis de relivrer tous les messages et livre à présent les messages nouvellement publiés.
  + **En cours** : la relecture relit actuellement les messages sélectionnés.
  + **Échec** : la relecture n'a pas pu se terminer.
  + **En attente** : état par défaut au lancement de la relecture.
+ (Facultatif) Pour **modifier** une politique de relecture des messages, accédez à la page **Détails de l'abonnement** et sélectionnez **Lancer la relecture** dans le menu déroulant **Relecture**. Le lancement d'une relecture remplace la lecture existante.

## Ajout d'une politique de relecture à l'abonnement à l'aide de l'API
<a name="message-archiving-and-replay-subscription-api"></a>

Pour relire des messages archivés, utilisez l'attribut `ReplayPolicy`. `ReplayPolicy` peut être utilisé avec les actions d'API `Subscribe` et `SetSubscriptionAttributes`. Cette politique présente les valeurs suivantes :
+ **`StartingPoint`** (Obligatoire) : indique à quel moment lancer la relecture des messages.
+ **`EndingPoint`** (Facultatif) : indique à quel moment arrêter la lecture des messages. Si `EndingPoint` est omis, la relecture se poursuit jusqu'à ce qu'elle rattrape l'heure actuelle.
+ **`PointType`** (Obligatoire) : définit le type des point de départ et d'arrivée. Pour l'heure, la valeur prise en charge pour `PointType` est `Timestamp`.

Par exemple, pour récupérer suite à une défaillance en aval et renvoyer tous les messages pour une période de deux heures le 1er octobre 2023, utilisez l'action d'API `SetSubscriptionAttributes` pour définir un attribut `ReplayPolicy` comme suit :

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

Pour relire tous les messages envoyés à la rubrique à partir du 1er octobre 2023 et continuer à recevoir tous les messages nouvellement publiés dans votre rubrique, utilisez l'action d'API `SetSubscriptionAttributes` pour définir un attribut `ReplayPolicy` pour votre abonnement comme suit :

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

Pour vérifier qu'un message a été relu, l'attribut booléen `Replayed` est ajouté à chaque message relu.

## Ajout d'une politique de relecture à l'abonnement à l'aide du SDK
<a name="message-replay-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 `ReplayPolicy` pour un abonnement de façon à relire les messages de l'archive de la rubrique FIFO d'Amazon SNS pour une fenêtre de temps de 2 heures le 1er octobre 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);
```

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

Lorsque vous appliquez un `ReplayPolicy` à un abonnement Amazon SNS, la `EndingPoint` valeur est facultative. Si ce n'`EndingPoint`est pas le cas, la rediffusion démarrera à partir de la date spécifiée `StartingPoint` et se poursuivra jusqu'à ce qu'elle rattrape l'heure actuelle, y compris le traitement des messages récemment publiés. Une fois rattrapé, l'abonnement fonctionnera comme un abonnement normal et recevra les nouveaux messages au fur et à mesure de leur publication.

Si un `EndingPoint` est spécifié, le service rejouera les messages du `StartingPoint` haut vers le, `EndingPoint` puis s'arrêtera. **Cette action interrompt effectivement l'abonnement.** Lorsque l'abonnement est suspendu, les messages récemment publiés ne seront pas remis au point de terminaison abonné.

Pour reprendre la livraison des messages, appliquez-en un nouveau `ReplayPolicy` sans fournir de et définissez le point dans le temps souhaité `StartingPoint` à partir duquel vous souhaitez continuer à recevoir des messages. `EndingPoint` Par exemple, pour reprendre un abonnement à partir duquel une rediffusion précédente s'est terminée, réglez le nouveau `StartingPoint` sur le précédent. `EndingPoint`

## Filtrage des messages relus
<a name="message-archiving-and-replay-subscription-filtering"></a>

Le filtrage des messages Amazon SNS vous permet de contrôler les messages relus par Amazon SNS sur le point de terminaison de votre abonné. Lorsque le filtrage et l'archivage des messages sont tous deux activés, Amazon SNS récupère le message dans le magasin de données de la rubrique avant de l'appliquer à l'attribut `FilterPolicy` de l'abonnement. Le message est remis au point de terminaison abonné s'il existe une correspondance ; sinon, le message est filtré. Pour de plus amples informations, veuillez consulter [Stratégies de filtre d'abonnement Amazon SNS](sns-subscription-filter-policies.md).

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

Vous pouvez surveiller les messages en rediffusion à 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 | 
| --- | --- | 
|  **NumberOfReplayedNotificationsDelivered**  |  Indique à l'abonné le nombre total de messages relus dans l'archive de la rubrique, selon une résolution d'une minute.  | 
|  **NumberOfReplayedNotificationsFailed**   |  Indique à l'abonné le nombre total de messages relus dans l'archive de la rubrique et dont la remise a échoué, selon une résolution d'une minute.  | 