

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Archiviazione e riproduzione dei messaggi di Amazon SNS per argomenti FIFO
<a name="fifo-message-archiving-replay"></a>

## Che cosa è l'archiviazione e riproduzione dei messaggi?
<a name="what-is-message-archiving-and-replay"></a>

Amazon SNS offre una funzionalità di archiviazione e riproduzione dei messaggi senza codice, progettata specificamente per argomenti FIFO (First-In-First-Out). Questa funzionalità consente ai proprietari degli argomenti di archiviare i messaggi direttamente nell'archivio degli argomenti per un massimo di 365 giorni e di riprodurli agli abbonati quando necessario. L'archiviazione e la riproduzione dei messaggi sono essenziali per recuperare i messaggi persi e sincronizzare le applicazioni tra regioni o sistemi mediante la replica degli stati.

È possibile accedere a questa funzionalità tramite AWS API, SDK e. CloudFormation Console di gestione AWS

**Casi d'uso principali**
+ **Recupero dei messaggi**: recupera i messaggi persi a causa di errori delle applicazioni downstream riproducendoli sull'endpoint dell'abbonato.
+ **Replica dello stato: replica** lo stato di un sistema esistente in un nuovo ambiente riproducendo i messaggi a partire da un timestamp specifico.
+ **Correzione degli errori**: invia nuovamente i messaggi persi durante le interruzioni per garantire che tutti gli eventi vengano elaborati correttamente.

### Componenti dell'archiviazione e della riproduzione dei messaggi
<a name="message-archiving-and-replay-components"></a>

Gestisci l'archiviazione e la riproduzione dei messaggi per gli argomenti FIFO di Amazon SNS, tra cui l'impostazione dei periodi di conservazione, il monitoraggio dei messaggi CloudWatch archiviati, l'avvio dei replay tramite gli attributi di abbonamento e la comprensione delle autorizzazioni necessarie per modificare e avviare i replay.

**Archiviazione dei messaggi**
+ Il proprietario dell'argomento abilita la funzionalità di archiviazione e imposta il periodo di conservazione dei messaggi, che può arrivare fino a 365 giorni. Per ulteriori informazioni, consulta [Archiviazione dei messaggi Amazon SNS per i proprietari di argomenti FIFO](message-archiving-and-replay-topic-owner.md)
+ CloudWatch le metriche aiutano a monitorare i messaggi archiviati.

**Riproduzione dei messaggi**
+ Un abbonato avvia una riproduzione, selezionando la finestra temporale in cui i messaggi devono essere rielaborati sull'endpoint sottoscritto. Per ulteriori informazioni, consulta [Replay dei messaggi di Amazon SNS per gli abbonati all'argomento FIFO](message-archiving-and-replay-subscriber.md). 
+ È possibile gestire la riproduzione tramite gli attributi dell'abbonamento utilizzando la funzione. `ReplayPolicy`

**Autorizzazioni pertinenti**
+ **`SetSubscriptionAttributes`**— Necessario per configurare o modificare le impostazioni di riproduzione utilizzando l'`ReplayPolicy`attributo su un abbonamento.
+ **`Subscribe`**— Necessario per allegare un nuovo abbonamento e avviare i replay.
+ **`GetTopicAttributes`**— Consente di visualizzare le proprietà dell'argomento, ma l'avvio del replay ruota principalmente attorno alla gestione dell'abbonamento.

# Archiviazione dei messaggi Amazon SNS per i proprietari di argomenti FIFO
<a name="message-archiving-and-replay-topic-owner"></a>

L'archiviazione dei messaggi offre la possibilità di archiviare una singola copia di tutti i messaggi pubblicati sull'argomento. Puoi archiviare i messaggi pubblicati all'interno del tuo argomento abilitando la policy di archiviazione dei messaggi sull'argomento, che consente l'archiviazione dei messaggi per tutte le sottoscrizioni collegate a quell'argomento. I messaggi possono essere archiviati da un minimo di un giorno a un massimo di 365 giorni.

Quando si imposta una policy di archiviazione, si applicano costi aggiuntivi. Per informazioni sui prezzi, consulta [Prezzi di Amazon SNS](https://aws.amazon.com/sns/pricing/).

## Crea una politica di archiviazione dei messaggi utilizzando il Console di gestione AWS
<a name="message-archiving-and-replay-topic-console"></a>

Utilizza questa opzione per creare una nuova policy di archiviazione dei messaggi utilizzando la Console di gestione AWS.

1. Accedi alla [console Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Scegli un argomento o creane uno nuovo. Per ulteriori informazioni sulla creazione di argomenti, consulta [Creare un argomento Amazon SNS](sns-create-topic.md).
**Nota**  
L'archiviazione e la riproduzione dei messaggi di Amazon SNS sono disponibili solo per argomenti FIFO application-to-application (A2A).

1. Nella pagina **Modifica argomento** espandi la sezione **Policy di archiviazione**.

1. Abilita la funzionalità **Policy di archiviazione** e inserisci il **Numero di giorni** per i quali desideri archiviare i messaggi nell'argomento.

1. Scegli **Save changes** (Salva modifiche).

**Per visualizzare, modificare e disattivare una policy relativa all'argomento di archiviazione dei messaggi**
+ Nella pagina **Dettagli dell'argomento**, **Policy di conservazione** mostra lo stato della policy di archiviazione, incluso il numero di giorni per i quali è stata impostata. Seleziona la scheda **Policy di conservazione** per visualizzare i seguenti dettagli sull'archivio dei messaggi:
  + **Stato**: lo stato di archiviazione e riproduzione appare **attivo** quando viene applicata una policy di archiviazione. Lo stato di archiviazione e riproduzione appare come **inattivo** quando la policy di archiviazione è impostata su un oggetto JSON vuoto.
  + **Periodo di conservazione dei messaggi**: il numero di giorni specificato per la conservazione dei messaggi.
  + **Data di inizio dell'archiviazione**: la data a partire dalla quale gli abbonati possono riprodurre i messaggi.
  + **Anteprima JSON**: l'anteprima JSON della policy di archiviazione.
+ (Facoltativo) Per **modificare** una policy di archiviazione, vai alla pagina di riepilogo dell'argomento e scegli **Modifica**.
+ (Facoltativo) Per **disattivare** una policy di archiviazione, vai alla pagina di riepilogo dell'argomento e scegli **Modifica**. Disattiva la **policy di archiviazione** e scegli **Salva modifiche**.
+ (Facoltativo) Per **eliminare** un argomento con una policy di archiviazione, è necessario prima disattivare la policy di archiviazione come descritto in precedenza.
**Importante**  
Per evitare eliminazioni accidentali dei messaggi, non puoi eliminare un argomento con una policy di archiviazione dei messaggi attiva. La policy di archiviazione dei messaggi dell'argomento deve essere disattivata prima che l'argomento possa essere eliminato. Quando disattivi una policy di archiviazione dei messaggi, Amazon SNS elimina tutti i messaggi archiviati. Quando si elimina un argomento, le sottoscrizioni vengono rimosse e i messaggi in transito potrebbero non essere recapitati.

## Creazione di una policy di archiviazione dei messaggi utilizzando l'API
<a name="message-archiving-and-replay-topic-api"></a>

Per creare una policy di archiviazione dei messaggi utilizzando l'API, devi aggiungere l'attributo `ArchivePolicy` al tuo argomento. Puoi impostare un `ArchivePolicy` utilizzando le operazioni API `CreateTopic` e`SetTopicAttributes`. `ArchivePolicy` ha un unico valore, `MessageRetentionPeriod`, che rappresenta il numero di giorni in cui Amazon SNS conserva i messaggi. Per attivare l'archiviazione dei messaggi per il tuo argomento, imposta `MessageRetentionPeriod` su un valore intero maggiore di zero. Ad esempio, per conservare i messaggi nell'archivio per 30 giorni, imposta `ArchivePolicy` su:

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

Per disabilitare l'archiviazione dei messaggi relativi al tuo argomento e cancellare l'archivio, annulla l'impostazione di `ArchivePolicy`, come segue:

```
{}
```

## Creazione di una policy di archiviazione dei messaggi utilizzando l'SDK
<a name="message-archiving-and-replay-topic-sdk"></a>

Per utilizzare un AWS SDK, devi configurarlo con le tue credenziali. Per ulteriori informazioni, consulta [`config`Shared and `credentials` files nella AWS SDKs and](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) *Tools Reference Guide.*

I seguenti esempi di codice mostrano come impostare la `ArchivePolicy` do un argomento Amazon SNS in modo che mantenga tutti i messaggi pubblicati sull'argomento per 30 giorni.

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

## Crea una politica di archiviazione dei messaggi utilizzando CloudFormation
<a name="message-archiving-and-replay-topic-cfn"></a>

Per creare una politica di archiviazione, CloudFormation consulta [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)la *Guida per l'AWS CloudFormation utente*.

## Concessione dell'accesso a un archivio crittografato
<a name="message-archiving-and-replay-topic-kms"></a>

Prima che un abbonato possa iniziare a riprodurre i messaggi di un argomento crittografato, devi completare al procedura seguente. Poiché i messaggi precedenti vengono riprodotti, è necessario fornire ad Amazon SNS l'accesso `Decrypt` alla chiave KMS utilizzata per crittografare i messaggi nell'archivio.

1. Quando esegui la crittografia dei messaggi con una chiave KMS e li archivi all'interno dell'argomento, devi concedere ad Amazon SNS la possibilità di de-crittografare questi messaggi tramite la policy della chiave. Per ulteriori informazioni, consulta [Concessione delle autorizzazioni di decrittografia ad Amazon SNS](#message-archiving-and-replay-topic-decrypt-permissions).

1. Abilita AWS KMS per Amazon SNS. Per ulteriori informazioni, consulta [Configurazione delle autorizzazioni AWS KMS](sns-key-management.md#sns-what-permissions-for-sse).

**Importante**  
Quando aggiungi le nuove sezioni alla policy della chiave KMS, non modificare le sezioni esistenti nella policy. Se la crittografia è abilitata in un argomento e la chiave KMS è disabilitata o eliminata oppure la policy della chiave KMS non è configurata correttamente per Amazon SNS, Amazon SNS non potrà riprodurre i messaggi ai tuoi abbonati. 

### Concessione delle autorizzazioni di decrittografia ad Amazon SNS
<a name="message-archiving-and-replay-topic-decrypt-permissions"></a>

Affinché Amazon SNS possa accedere ai messaggi crittografati dall'archivio del tuo argomento e riprodurli sugli endpoint sottoscritti, devi abilitare il servizio Amazon SNS per decrittografare questi messaggi.

Di seguito è riportato un esempio di policy necessaria per consentire al principale del servizio Amazon SNS di de-crittografare i messaggi archiviati durante la riproduzione di messaggi cronologici dall'argomento in questione.

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

## Monitora i parametri di archiviazione dei messaggi utilizzando Amazon CloudWatch
<a name="message-archiving-and-replay-topic-cloudwatch"></a>

Puoi monitorare i messaggi archiviati utilizzando Amazon CloudWatch utilizzando i seguenti parametri. Per ricevere notifiche in caso di anomalie nei carichi di lavoro e contribuire a evitare impatti, puoi configurare gli CloudWatch allarmi Amazon in base a questi parametri. Per ulteriori dettagli, consultare [Registrazione e monitoraggio in Amazon SNS](sns-logging-monitoring.md).


| Metrica | Description | 
| --- | --- | 
|  **ApproximateNumberOfMessagesArchived**  |  Fornisce al proprietario dell'argomento il numero aggregato di messaggi archiviati nell'archivio degli argomenti, con una risoluzione di 60 minuti.  | 
|  **ApproximateNumberOfBytesArchived**   |  Fornisce al proprietario dell'argomento il numero aggregato di byte archiviati in tutti i messaggi dell'archivio degli argomenti, con una risoluzione di 60 minuti.  | 
|  **NumberOfMessagesArchiveProcessing**   |  Fornisce al proprietario dell'argomento il numero di messaggi salvati nell'archivio degli argomenti durante l'intervallo con una risoluzione di 1 minuto.  | 
|  **NumberOfBytesArchiveProcessing**  |  Fornisce al proprietario dell'argomento il numero aggregato di messaggi salvati nell'archivio degli argomenti durante l'intervallo con una risoluzione di 1 minuto.  | 

L'API `GetTopicAttributes` ha una proprietà `BeginningArchiveTime` che rappresenta il timestamp più vecchio in base al quale un abbonato può avviare una riproduzione. Di seguito è riportato un esempio di risposta per questa operazione API:

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

# Replay dei messaggi di Amazon SNS per gli abbonati all'argomento FIFO
<a name="message-archiving-and-replay-subscriber"></a>

Amazon SNS Replay consente agli abbonati agli argomenti di recuperare e reinviare i messaggi archiviati dal Topic Data Store a un endpoint sottoscritto.
+ I messaggi possono essere riprodotti immediatamente dopo la creazione dell'abbonamento.
+ Un messaggio riprodotto mantiene lo stesso contenuto e `Timestamp` quello originale. `MessageId`
+ Il messaggio include un `Replayed` attributo che indica che si tratta di un messaggio riprodotto.
+ Per riprodurre solo messaggi specifici, applica una politica di filtro al tuo abbonamento.

Per ulteriori informazioni sul filtraggio dei messaggi, consulta [Filtro dei messaggi riprodotti](#message-archiving-and-replay-subscription-filtering).

## Crea una politica di riproduzione dei messaggi utilizzando il Console di gestione AWS
<a name="message-archiving-and-replay-replaying-console"></a>

Utilizza questa opzione per creare una nuova policy di riproduzione utilizzando la Console di gestione AWS.

1. Accedi alla [console Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Scegli una sottoscrizione all'argomento o creane una nuova. Per ulteriori informazioni sulla creazione di sottoscrizioni, consulta[Creazione di un abbonamento a un argomento di Amazon SNS](sns-create-subscribe-endpoint-to-topic.md).

1. Per avviare la riproduzione del messaggio, vai al menu a discesa **Riproduci** e scegli **Inizia riproduzione**.

1. Dalla finestra modale **Intervallo di tempo di riproduzione**, effettua le seguenti selezioni:

   1. **Scegli la data e l'ora di inizio della riproduzione**: scegli la **data** (YYYY/MM/DDformato) e l'**ora** (formato hh:mm:ss 24 ore su 24) da cui desideri iniziare a riprodurre i messaggi archiviati. L'ora di inizio deve essere successiva all'inizio dell'orario di archiviazione approssimativo.

   1. **(Facoltativo) Scegli la data e l'ora di fine della riproduzione: scegli la **data** (YYYY/MM/DDformato) e l'ora** (formato hh:mm:ss 24 ore) **in** cui desideri interrompere la riproduzione dei messaggi archiviati.

   1. Scegli **Avvia riproduzione**.

1. (Facoltativo) Per **arrestare** la riproduzione di un messaggio, vai alla pagina **Dettagli sottoscrizione** e scegli **Interrompi riproduzione** dal menu a discesa **Riproduci**.

1. (Facoltativo) Per **monitorare** le metriche di riproduzione dei messaggi dall'interno di questo flusso di lavoro utilizzando, vedi. CloudWatch [Monitora le metriche di riproduzione dei messaggi utilizzando Amazon CloudWatch](#message-archiving-and-replay-subscription-cloudwatch)

**Visualizzazione e modifica di una policy di riproduzione dei messaggi**

Nella pagina **Dettagli sottoscrizione** puoi eseguire le seguenti operazioni:
+ Per **visualizzare** lo stato di riproduzione dei messaggi, nel campo **Stato riproduzione** vengono visualizzati i seguenti valori:
  + **Completato**: la riproduzione ha correttamente ridistribuito tutti i messaggi e ora distribuisce i messaggi appena pubblicati.
  + **In corso**: la riproduzione sta attualmente riproducendo i messaggi selezionati.
  + **Non riuscito**: la riproduzione non è stata completata.
  + **In sospeso**: lo stato predefinito durante l'avvio della riproduzione.
+ (Facoltativo) Per **modificare** la policy di riproduzione dei messaggi, vai alla pagina **Dettagli sottoscrizione** e scegli **Interrompi riproduzione** dal menu a discesa **Riproduci**. L'avvio di una riproduzione sostituirà la riproduzione esistente.

## Aggiunta di una policy di riproduzione all'abbonamento utilizzando l'API
<a name="message-archiving-and-replay-subscription-api"></a>

Per riprodurre i messaggi archiviati, usa l'attributo `ReplayPolicy`. `ReplayPolicy` può essere utilizzato con le operazioni API `Subscribe` e `SetSubscriptionAttributes`. Questa policy ha i seguenti valori:
+ **`StartingPoint`** (Obbligatorio): segnala da dove iniziare a riprodurre i messaggi.
+ **`EndingPoint`** (Facoltativo): segnala quando interrompere la riproduzione dei messaggi. Se `EndingPoint` viene omesso, la riproduzione continuerà fino a quando non verrà raggiunta l'ora corrente.
+ **`PointType`** (Obbligatorio): imposta il tipo di punto iniziale e finale. Attualmente, l'unico valore supportato per `PointType` è `Timestamp`.

Ad esempio, per ripristinare un errore downstream e inviare nuovamente tutti i messaggi per un periodo di due ore il 1° ottobre 2023, utilizza l'operazione API `SetSubscriptionAttributes` per impostare una `ReplayPolicy` come segue:

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

Per riprodurre tutti i messaggi inviati all'argomento a partire dal 1° ottobre 2023 e continuare a ricevere tutti i messaggi appena pubblicati sull'argomento, utilizza l'operazione API `SetSubscriptionAttributes` per impostare una `ReplayPolicy` sull'abbonamento nel modo seguente:

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

Per verificare che un messaggio sia stato riprodotto, l'attributo booleano `Replayed` viene aggiunto a ogni messaggio riprodotto.

## Aggiunta di una policy di riproduzione all'abbonamento utilizzando l'SDK
<a name="message-replay-sdk"></a>

Per utilizzare un AWS SDK, devi configurarlo con le tue credenziali. Per ulteriori informazioni, consulta [`config`Shared and `credentials` files nella AWS SDKs and](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) *Tools Reference Guide.*

Il seguente esempio di codice mostra come impostare la `ReplayPolicy` su un abbonamento per recapitare nuovamente i messaggi dall'archivio degli argomenti FIFO di Amazon SNS per una finestra temporale di 2 ore il 1° ottobre 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);
```

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

Quando applichi un `ReplayPolicy` abbonamento Amazon SNS, il `EndingPoint` valore è facoltativo. Se non `EndingPoint` viene fornito alcun valore, la riproduzione inizierà dal valore specificato `StartingPoint` e continuerà fino al raggiungimento dell'ora corrente, inclusa l'elaborazione dei messaggi appena pubblicati. Una volta recuperato, l'abbonamento funzionerà come un normale abbonamento e riceverà nuovi messaggi man mano che vengono pubblicati.

Se `EndingPoint` viene specificato un, il servizio riprodurrà i messaggi dall'inizio alla fine `EndingPoint` e poi `StartingPoint` si interromperà. **Questa azione mette effettivamente in pausa l'abbonamento.** Mentre l'abbonamento è in pausa, i messaggi appena pubblicati non verranno recapitati all'endpoint sottoscritto.

Per riprendere il recapito dei messaggi, applicane uno nuovo `ReplayPolicy` senza specificarne uno `EndingPoint` e impostalo sul momento desiderato `StartingPoint` a partire dal quale continuare a ricevere i messaggi. Ad esempio, per riprendere un abbonamento dal punto in cui era terminato un replay precedente, imposta il nuovo su `StartingPoint` quello fornito in precedenza. `EndingPoint`

## Filtro dei messaggi riprodotti
<a name="message-archiving-and-replay-subscription-filtering"></a>

Il filtraggio dei messaggi di Amazon SNS ti consente di controllare i messaggi riprodotti che Amazon SNS riproduce sull'endpoint dell'abbonato. Quando il filtraggio e l'archiviazione dei messaggi sono entrambi abilitati, Amazon SNS recupera prima il messaggio dall'archivio dati dell'argomento, quindi applica il messaggio alla `FilterPolicy` dell'abbonamento. Il messaggio viene recapitato all'endpoint sottoscritto quando c'è una corrispondenza, altrimenti il messaggio viene filtrato. Per ulteriori informazioni, consulta [Policy di filtro degli abbonamenti Amazon SNS](sns-subscription-filter-policies.md).

## Monitora le metriche di riproduzione dei messaggi utilizzando Amazon CloudWatch
<a name="message-archiving-and-replay-subscription-cloudwatch"></a>

Puoi monitorare i messaggi di riproduzione utilizzando Amazon CloudWatch utilizzando le seguenti metriche. Per ricevere notifiche in caso di anomalie nei carichi di lavoro e contribuire a evitare impatti, puoi configurare gli CloudWatch allarmi Amazon in base a questi parametri. Per ulteriori dettagli, consultare [Registrazione e monitoraggio in Amazon SNS](sns-logging-monitoring.md).


| Metrica | Description | 
| --- | --- | 
|  **NumberOfReplayedNotificationsDelivered**  |  Fornisce all'abbonato il numero aggregato di messaggi riprodotti dall'archivio degli argomenti, con una risoluzione di 1 minuto.  | 
|  **NumberOfReplayedNotificationsFailed**   |  Fornisce all'abbonato il numero aggregato di messaggi riprodotti non inviati dall'archivio degli argomenti, con una risoluzione di 1 minuto.  | 