

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à.

# Utilizzo di Amazon SQS, Amazon SNS e Lambda
<a name="how-to-enable-disable-notification-intro"></a>

L'abilitazione delle notifiche è un'operazione a livello di bucket. Le informazioni di configurazione delle notifiche vengono memorizzate nella risorsa secondaria di *notifica* associata a un bucket. Dopo avere creato o modificato la configurazione di notifica del bucket, in genere è necessario attendere 5 minuti affinché le modifiche abbiano effetto. Si verificherà un `s3:TestEvent` quando la notifica viene attivata per la prima volta. Per gestire la configurazione delle notifiche, è possibile utilizzare i metodi indicati di seguito:
+ **Utilizzo della console di Amazon S3** — E' possibile utilizzare l'interfaccia utente della console per impostare una configurazione di notifiche su un bucket senza dover scrivere alcun codice. Per ulteriori informazioni, consulta [Attivazione e configurazione delle notifiche di eventi tramite la console di Amazon S3](enable-event-notifications.md).
+ **Utilizzo programmatico** di AWS SDKs: internamente, sia la console che la SDKs chiamata all'API REST di Amazon S3 per gestire le sottorisorse di *notifica associate* al bucket. Per esempi di configurazione di notifiche che utilizzano gli SDK di AWS , consulta [Spiegazione passo per passo: configurare un bucket per le notifiche (argomento SNS o coda SQS)](ways-to-add-notification-config-to-bucket.md).
**Nota**  
Puoi effettuare le chiamate a REST API di Amazon S3 anche direttamente dal codice. Tuttavia, ciò può risultare scomodo in quanto richiede la scrittura di codice per autenticare le richieste. 

Indipendentemente dal metodo utilizzato, Amazon S3 archivia la configurazione delle notifiche in formato XML nella risorsa secondaria *notifica* associata a un bucket. Per informazioni sulle risorse secondarie del bucket, consulta la sezione [Opzioni di configurazione dei bucket per uso generico](UsingBucket.md#bucket-config-options-intro).

**Nota**  
Se si verificano più notifiche di eventi falliti a causa di destinazioni eliminate, è possibile che si riceva il messaggio **Impossibile convalidare le seguenti configurazioni di destinazione** quando si cerca di eliminarle. È possibile risolvere il problema nella console S3 eliminando contemporaneamente tutte le notifiche non riuscite.

**Topics**
+ [

# Concessione di autorizzazioni per pubblicare messaggi di notifica eventi in una destinazione
](grant-destinations-permissions-to-s3.md)
+ [

# Attivazione e configurazione delle notifiche di eventi tramite la console di Amazon S3
](enable-event-notifications.md)
+ [

## Configurazione delle notifiche degli eventi a livello di programmazione
](#event-notification-configuration)
+ [

# Spiegazione passo per passo: configurare un bucket per le notifiche (argomento SNS o coda SQS)
](ways-to-add-notification-config-to-bucket.md)
+ [

# Configurazione delle notifiche di eventi mediante il filtro dei nomi delle chiavi oggetto
](notification-how-to-filtering.md)
+ [

# Struttura del messaggio di evento
](notification-content-structure.md)

# Concessione di autorizzazioni per pubblicare messaggi di notifica eventi in una destinazione
<a name="grant-destinations-permissions-to-s3"></a>

È necessario concedere al principale di Amazon S3 le autorizzazioni necessarie per richiamare l'API pertinente per pubblicare i messaggi in un argomento SNS, una coda SQS o una funzione Lambda. In questo modo Amazon S3 può pubblicare messaggi di notifica di eventi in una destinazione.

Per risolvere i problemi relativi alla pubblicazione dei messaggi di notifica di eventi su una destinazione, consulta [Risoluzione dei problemi relativi alla pubblicazione delle notifiche di eventi di Amazon S3 in un argomento di Servizio di notifica semplice Amazon](https://repost.aws/knowledge-center/sns-not-receiving-s3-event-notifications).

**Topics**
+ [

## Concessione delle autorizzazioni per richiamare una funzione AWS Lambda
](#grant-lambda-invoke-permission-to-s3)
+ [

## Concessione di autorizzazioni per pubblicare messaggi in un argomento SNS o una coda SQS
](#grant-sns-sqs-permission-for-s3)

## Concessione delle autorizzazioni per richiamare una funzione AWS Lambda
<a name="grant-lambda-invoke-permission-to-s3"></a>

Amazon S3 pubblica messaggi di evento AWS Lambda invocando una funzione Lambda e fornendo il messaggio dell'evento come argomento.

Quando si utilizza la console di Amazon S3 per configurare le notifiche eventi in un bucket di Amazon S3 per una funzione Lambda, la console configura le autorizzazioni necessarie sulla funzione Lambda. In questo modo Amazon S3 dispone delle autorizzazioni per richiamare la funzione dal bucket. Per ulteriori informazioni, consulta [Attivazione e configurazione delle notifiche di eventi tramite la console di Amazon S3](enable-event-notifications.md). 

Puoi anche concedere ad Amazon S3 le autorizzazioni AWS Lambda per richiamare la tua funzione Lambda. Per ulteriori informazioni, consulta [Tutorial: Using AWS Lambda with Amazon S3](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) nella *AWS Lambda Developer* Guide.

## Concessione di autorizzazioni per pubblicare messaggi in un argomento SNS o una coda SQS
<a name="grant-sns-sqs-permission-for-s3"></a>

Per concedere ad Amazon S3 le autorizzazioni per pubblicare messaggi sull'argomento SNS o sulla coda SQS, allega una policy AWS Identity and Access Management (IAM) all'argomento SNS o alla coda SQS di destinazione. 

Per un esempio di come collegare una policy a un argomento SNS o a una coda SQS, consulta la sezione [Spiegazione passo per passo: configurare un bucket per le notifiche (argomento SNS o coda SQS)](ways-to-add-notification-config-to-bucket.md). Per ulteriori informazioni sulle autorizzazioni, consulta i seguenti argomenti:
+ [Casi di esempio per il controllo degli accessi ad Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/AccessPolicyLanguage_UseCases_Sns.html) nella *Guida per sviluppatori di Amazon Simple Notification Service*
+ [Identity and Access Management in Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html) nella *Guida per gli sviluppatori di Amazon Simple Queue Service*

### Policy IAM per un argomento SNS di destinazione
<a name="sns-topic-policy"></a>

Di seguito è riportato un esempio di policy AWS Identity and Access Management (IAM) da allegare all'argomento SNS di destinazione. Per maggiori informazioni su come utilizzare questa policy per configurare un argomento Amazon SNS di destinazione per le notifiche degli eventi, consulta [Spiegazione passo per passo: configurare un bucket per le notifiche (argomento SNS o coda SQS)](ways-to-add-notification-config-to-bucket.md).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "Example SNS topic policy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SNS:Publish"
            ],
            "Resource": "arn:aws:sns:us-east-1:111122223333:example-sns-topic",
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-123456789012"
                }
            }
        }
    ]
}
```

------

### Policy IAM per una coda SQS di destinazione
<a name="sqs-queue-policy"></a>

Di seguito è riportato un esempio di policy IAM collegata alla coda SQS di destinazione. Per maggiori informazioni su come utilizzare questa policy per impostare una coda Amazon SQS di destinazione per le notifiche degli eventi, consulta [Spiegazione passo per passo: configurare un bucket per le notifiche (argomento SNS o coda SQS)](ways-to-add-notification-config-to-bucket.md).

Per utilizzare questa politica, devi aggiornare l'ARN della coda Amazon SQS, il nome del bucket e l'ID del proprietario del bucket. Account AWS 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SQS:SendMessage"
            ],
            "Resource": "arn:aws:sqs:us-east-1:111122223333:queue-name",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-123456789012"
                }
            }
        }
    ]
}
```

------

Per entrambe le policy IAM di Amazon SNS e Amazon SQS, è possibile specificare la condizione `StringLike` nella policy anziché la condizione `ArnLike`.

Quando si utilizza `ArnLike`, le partizioni, il servizio, l’ID dell’account, il tipo di risorsa e l’ID della risorsa parziale dell’ARN devono corrispondere esattamente all’ARN nel contesto della richiesta. La corrispondenza parziale è consentita solo per la Regione e il percorso della risorsa.

 Quando al posto di `ArnLike` viene utilizzato `StringLike`, la corrispondenza ignora la struttura dell’ARN e consente una corrispondenza parziale, indipendentemente dalla parte sostituita dal carattere jolly. Per ulteriori informazioni, consulta [Elementi delle policy JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) nella *Guida per l'utente di IAM*.

```
"Condition": {         
  "StringLike": { "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket" }
  }
```

### AWS KMS politica chiave
<a name="key-policy-sns-sqs"></a>

Se la coda SQS o gli argomenti SNS sono crittografati con una chiave gestita dal cliente AWS Key Management Service (AWS KMS), devi concedere al servizio Amazon S3 l'autorizzazione principale per lavorare con gli argomenti o la coda crittografati. Per concedere al servizio Amazon S3 l'autorizzazione principale, aggiungi l'istruzione seguente alla policy delle chiavi per la chiave gestita dal cliente.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}
```

------

*Per ulteriori informazioni sulle politiche AWS KMS chiave, consulta [Using key policy nella AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) Developer Guide.AWS Key Management Service * 

Per ulteriori informazioni sull'utilizzo della crittografia lato server con AWS KMS Amazon SQS e Amazon SNS, consulta quanto segue:
+ [Gestione delle chiavi](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html) nella *Guida per sviluppatori di Amazon Simple Notification Service*.
+ [Gestione delle chiavi](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html) nella *Guida per sviluppatori di Amazon Simple Queue Service*.
+ [Crittografia dei messaggi pubblicati su Amazon SNS con AWS KMS](https://aws.amazon.com/blogs/compute/encrypting-messages-published-to-amazon-sns-with-aws-kms/) nel *Blog di calcolo di AWS *.

# Attivazione e configurazione delle notifiche di eventi tramite la console di Amazon S3
<a name="enable-event-notifications"></a>

È possibile abilitare determinati eventi del bucket per uso generico Amazon S3 per inviare un messaggio di notifica a una destinazione ogni volta che si verificano gli eventi. In questa sezione viene descritto come utilizzare la console di Amazon S3 per abilitare le notifiche di evento. Per informazioni su come utilizzare le notifiche di eventi con Amazon S3 REST APIs, consulta. AWS SDKs [Configurazione delle notifiche degli eventi a livello di programmazione](how-to-enable-disable-notification-intro.md#event-notification-configuration) 

**Prerequisiti**: prima di abilitare le notifiche di eventi per il bucket, è necessario impostare uno dei tipi di destinazione e quindi configurare le autorizzazioni. Per ulteriori informazioni, consultare [Destinazioni eventi supportate](notification-how-to-event-types-and-destinations.md#supported-notification-destinations) e [Concessione di autorizzazioni per pubblicare messaggi di notifica eventi in una destinazione](grant-destinations-permissions-to-s3.md).

**Nota**  
Le code FIFO (First-In-First-Out) di Amazon Simple Queue Service non sono supportate come destinazione delle notifiche degli eventi di Amazon S3. Per inviare una notifica per un evento Amazon S3 a una coda FIFO di Amazon SQS, puoi utilizzare Amazon. EventBridge Per ulteriori informazioni, consulta [Attivazione di Amazon EventBridge](enable-event-notifications-eventbridge.md).

**Topics**
+ [

## Attivazione delle notifiche di Amazon SNS, Amazon SQS o Lambda tramite la console di Amazon S3
](#enable-event-notifications-sns-sqs-lam)

## Attivazione delle notifiche di Amazon SNS, Amazon SQS o Lambda tramite la console di Amazon S3
<a name="enable-event-notifications-sns-sqs-lam"></a>

**Per abilitare e configurare le notifiche di evento per un bucket S3**

1. Accedi Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel riquadro di navigazione sinistro, scegli **Bucket per uso generico**.

1. Nell’elenco dei bucket scegli il nome del bucket per il quale desideri abilitare gli eventi.

1. Scegliere **Properties (Proprietà)**.

1. Passare alla sezione **Event Notifications (Notifiche evento)** e scegliere **Create event notification (Crea notifica evento)**.

1. Nella sezione **General configuration (Configurazione generale)** specificare il nome dell'evento descrittivo per la notifica dell'evento. Facoltativamente, è anche possibile specificare un prefisso e un suffisso per limitare le notifiche agli oggetti con chiavi che terminano con i caratteri specificati.

   1. Immettere una descrizione per **Event name (Nome evento)**.

      Se non specifichi un nome, viene generato e utilizzato un GUID (Globally Unique Identifier). 

   1. (Facoltativo) Per filtrare le notifiche degli eventi in base al prefisso, immettere **Prefix**. 

      Ad esempio, è possibile impostare un filtro prefisso in modo da ricevere notifiche solo quando i file vengono aggiunti a una cartella specifica co, `images/`). 

   1. (Facoltativo) Per filtrare le notifiche degli eventi in base al suffisso, immettere **Suffix**. 

      Per ulteriori informazioni, consulta [Configurazione delle notifiche di eventi mediante il filtro dei nomi delle chiavi oggetto](notification-how-to-filtering.md). 

1. Nella sezione **Tipi di evento**, selezionare uno o più tipi di evento per i quali si desidera ricevere notifiche. 

   Per un elenco dei vari tipi di evento, consulta [Tipi di eventi supportati per SQS, SNS e Lambda](notification-how-to-event-types-and-destinations.md#supported-notification-event-types).

1. Nella sezione **Destination (Destinazione)**, scegliere la destinazione della notifica dell'evento. 
**Nota**  
Prima di poter pubblicare le notifiche di eventi, è necessario concedere al principale di Amazon S3 le autorizzazioni necessarie per richiamare l'API pertinente. In questo modo è possibile pubblicare le notifiche su una funzione Lambda, un argomento SNS o una coda SQS.

   1. Selezionare il tipo di destinazione: **Lambda Function (Funzione Lambda)**, **SNS Topic (Argomento SNS)** o **SQS Queue (Coda SQS)**.

   1. Dopo aver scelto il tipo di destinazione, scegliere una funzione, un argomento o una coda dall'elenco.

   1. In alternativa, se preferisci specificare un Amazon Resource Name (ARN), seleziona **Inserisci ARN** e specifica l'ARN.

   Per ulteriori informazioni, consulta [Destinazioni eventi supportate](notification-how-to-event-types-and-destinations.md#supported-notification-destinations).

1. Seleziona **Salva modifiche** e Amazon S3 invia un messaggio di prova alla destinazione della notifica dell'evento.

## Configurazione delle notifiche degli eventi a livello di programmazione
<a name="event-notification-configuration"></a>

Per impostazione predefinita, le notifiche sono disattivate per tutti i tipi di evento. Pertanto, inizialmente la risorsa secondaria *notifica* archivia una configurazione vuota.

```
<NotificationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
</NotificationConfiguration>
```

Per abilitare le notifiche per tipi di eventi specifici, sostituisci il file XML con la configurazione appropriata che identifica i tipi di evento che Amazon S3 deve pubblicare e la destinazione in cui gli eventi devono essere pubblicati. Per ciascuna destinazione, si aggiunge una configurazione XML corrispondente. 

**Per pubblicare messaggi di eventi in una coda SQS**  
Per impostare una coda SQS come destinazione di notifica per uno o più tipi di evento, aggiungi la `QueueConfiguration`.

```
<NotificationConfiguration>
  <QueueConfiguration>
    <Id>optional-id-string</Id>
    <Queue>sqs-queue-arn</Queue>
    <Event>event-type</Event>
    <Event>event-type</Event>
     ...
  </QueueConfiguration>
   ...
</NotificationConfiguration>
```

**Per pubblicare i messaggi di eventi in un argomento SNS**  
Per impostare un argomento SNS come destinazione di notifica per tipi di eventi specifici, aggiungi la `TopicConfiguration`.

```
<NotificationConfiguration>
  <TopicConfiguration>
     <Id>optional-id-string</Id>
     <Topic>sns-topic-arn</Topic>
     <Event>event-type</Event>
     <Event>event-type</Event>
      ...
  </TopicConfiguration>
   ...
</NotificationConfiguration>
```

**Per richiamare la AWS Lambda funzione e fornire un messaggio di evento come argomento**  
Per impostare una funzione Lambda come destinazione di notifica per tipi di eventi specifici, aggiungi la `CloudFunctionConfiguration`.

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>   
     <Id>optional-id-string</Id>   
     <CloudFunction>cloud-function-arn</CloudFunction>        
     <Event>event-type</Event>      
     <Event>event-type</Event>      
      ...  
  </CloudFunctionConfiguration>
   ...
</NotificationConfiguration>
```

**Per rimuovere tutte le notifiche configurate su un bucket**  
Per rimuovere tutte le notifiche configurate in un bucket, salva un elemento `<NotificationConfiguration/>` vuoto nella risorsa secondaria di *notifica*. 

Quando Amazon S3 rileva un evento di tipo specifico, pubblica un messaggio con le informazioni sull'evento. Per ulteriori informazioni, consulta [Struttura del messaggio di evento](notification-content-structure.md). 

Per ulteriori informazioni sulla configurazione delle notifiche di eventi, consulta i seguenti argomenti: 
+ [Spiegazione passo per passo: configurare un bucket per le notifiche (argomento SNS o coda SQS)](ways-to-add-notification-config-to-bucket.md).
+ [Configurazione delle notifiche di eventi mediante il filtro dei nomi delle chiavi oggetto](notification-how-to-filtering.md)

# Spiegazione passo per passo: configurare un bucket per le notifiche (argomento SNS o coda SQS)
<a name="ways-to-add-notification-config-to-bucket"></a>

Puoi ricevere notifiche Amazon S3 utilizzando Amazon Simple Notification Service (Amazon SNS) o Amazon Simple Queue Service (Amazon SQS). Nella spiegazione passo per passo seguente viene aggiunta una configurazione di notifica al bucket utilizzando un argomento Amazon SNS e una coda Amazon SQS.

**Nota**  
Le code FIFO (First-In-First-Out) di Amazon Simple Queue Service non sono supportate come destinazione delle notifiche degli eventi di Amazon S3. Per inviare una notifica per un evento Amazon S3 a una coda FIFO di Amazon SQS, puoi utilizzare Amazon. EventBridge Per ulteriori informazioni, consulta [Attivazione di Amazon EventBridge](enable-event-notifications-eventbridge.md).

**Topics**
+ [

## Riepilogo della spiegazione passo per passo
](#notification-walkthrough-summary)
+ [

## Fase 1: creare una coda Amazon SQS
](#step1-create-sqs-queue-for-notification)
+ [

## Fase 2: creare un argomento Amazon SNS
](#step1-create-sns-topic-for-notification)
+ [

## Fase 3: aggiungere una configurazione delle notifiche al bucket
](#step2-enable-notification)
+ [

## Fase 4: eseguire il test della configurazione
](#notification-walkthrough-1-test)

## Riepilogo della spiegazione passo per passo
<a name="notification-walkthrough-summary"></a>

Questa spiegazione passo per passo aiuta a completare le seguenti operazioni:
+ Pubblicare eventi di tipo `s3:ObjectCreated:*` in una coda Amazon SQS.
+ Pubblicare eventi di tipo `s3:ReducedRedundancyLostObject` in un argomento Amazon SNS.

Per informazioni sulla configurazione delle notifiche, consulta [Utilizzo di Amazon SQS, Amazon SNS e Lambda](how-to-enable-disable-notification-intro.md).

È possibile eseguire tutte queste fasi utilizzando la console, senza scrivere alcun codice. Inoltre, vengono forniti anche esempi di codice utilizzati AWS SDKs per Java e.NET per aiutarti ad aggiungere configurazioni di notifica a livello di codice.

La procedura include le seguenti fasi:

1. Creare una coda Amazon SQS.

   Attraverso la console di Amazon SQS, crea una coda SQS. È possibile accedere a qualsiasi messaggio che Amazon S3 invia alla coda in modo programmatico. Tuttavia, per questa procedura guidata, i messaggi di notifica si verificano nella console. 

   Collega una policy di accesso all'argomento per concedere ad Amazon S3 l'autorizzazione a pubblicare messaggi.

1. Creare un argomento Amazon SNS.

   Utilizzando la console di Amazon SNS, crea un argomento SNS e iscriviti all'argomento. In questo modo, riceverai tutti gli eventi pubblicati. Si specifica l'e-mail come protocollo di comunicazione. Dopo aver creato un argomento, Amazon SNS invia un'e-mail. È necessario utilizzare il collegamento nell'e-mail per confermare la sottoscrizione all'argomento. 

   Collega una policy di accesso all'argomento per concedere ad Amazon S3 l'autorizzazione a pubblicare messaggi. 

1. Aggiungere una configurazione delle notifiche a un bucket. 

## Fase 1: creare una coda Amazon SQS
<a name="step1-create-sqs-queue-for-notification"></a>

Segui le fasi per creare una coda Amazon Simple Queue Service (Amazon SQS) ed effettuarvi la sottoscrizione.

1. Utilizzando la console di Amazon SQS, creare una coda. Per istruzioni, consulta la sezione [Nozioni di base su Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) nella *Guida per gli sviluppatori di Amazon Simple Queue Service*. 

1. Sostituire la policy di accesso allegata alla coda con la policy riportata di seguito.

   1. Nella console di Amazon SQS, nell'elenco **Code**, seleziona il nome della coda.

   1. Nella scheda **Policy di accesso**, seleziona **Modifica**.

   1. Sostituire la policy di accesso allegata alla coda. Fornisci l'ARN di Amazon SQS, il nome del bucket di origine e l'ID dell'account del proprietario del bucket.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Id": "example-ID",
          "Statement": [
              {
                  "Sid": "example-statement-ID",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "s3.amazonaws.com"
                  },
                  "Action": [
                      "SQS:SendMessage"
                  ],
                  "Resource": "arn:aws:sqs:us-west-2:111122223333:s3-notification-queue",
                  "Condition": {
                      "ArnLike": {
                          "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1"
                      },
                      "StringEquals": {
                          "aws:SourceAccount": "bucket-owner-123456789012"
                      }
                  }
              }
          ]
      }
      ```

------

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

1. (Facoltativo) Se la coda Amazon SQS o l'argomento Amazon SNS è la crittografia lato server abilitata con AWS Key Management Service (AWS KMS), aggiungi la seguente policy alla chiave di crittografia simmetrica associata gestita dal cliente. 

   Devi aggiungere la policy a una chiave gestita dal cliente perché non è possibile modificare la chiave gestita da AWS per Amazon SQS o Amazon SNS. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "example-ID",
       "Statement": [
           {
               "Sid": "example-statement-ID",
               "Effect": "Allow",
               "Principal": {
                   "Service": "s3.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   Per ulteriori informazioni sull'utilizzo di SSE per Amazon SQS e Amazon SNS AWS KMS con, consulta quanto segue:
   + [Gestione delle chiavi](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html) nella *Guida per sviluppatori di Amazon Simple Notification Service*.
   + [Gestione delle chiavi](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html) nella *Guida per sviluppatori di Amazon Simple Queue Service*.

1. Prendere nota dell'ARN della coda. 

   La coda SQS creata è un'altra risorsa nel tuo Account AWS. Dispone di un Amazon Resource Name (ARN) univoco. Il presente ARN è necessario nella fase successiva. Il nome ARN presenta il formato seguente:

   ```
   arn:aws:sqs:aws-region:account-id:queue-name
   ```

## Fase 2: creare un argomento Amazon SNS
<a name="step1-create-sns-topic-for-notification"></a>

Completa la procedura per creare e sottoscrivere un argomento Amazon SNS.

1. Utilizzando la console di Amazon SNS, crea un argomento. Per le istruzioni, consulta la sezione [Creazione di un argomento Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) nella *Guida per gli sviluppatori di Amazon Simple Notification Service*. 

1. Effettuare la sottoscrizione all'argomento. Per questo esercizio, utilizzare l'e-mail come protocollo di comunicazione. Per le istruzioni, consulta la sezione [Sottoscrizione a un argomento di Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) nella *Guida per gli sviluppatori di Amazon Simple Notification Service*. 

   Si riceverà un'e-mail in cui è richiesto di confermare la sottoscrizione all'argomento. Confermare la sottoscrizione. 

1. Sostituire la policy di accesso collegata all'argomento con la policy riportata di seguito. Fornisci l'ARN dell'argomento SNS, il nome del bucket e l'ID dell'account del proprietario del bucket.

1. Prendere nota dell'ARN dell'argomento.

   L'argomento SNS che hai creato è un'altra tua Account AWS risorsa e ha un ARN unico. L'ARN è necessario nella fase successiva. L'ARN ha il formato seguente:

   ```
   arn:aws:sns:aws-region:account-id:topic-name
   ```

## Fase 3: aggiungere una configurazione delle notifiche al bucket
<a name="step2-enable-notification"></a>

Puoi abilitare le notifiche bucket utilizzando la console Amazon S3 o a livello di codice utilizzando. AWS SDKs Scegliere una delle opzioni per configurare le notifiche nel bucket. Questa sezione fornisce esempi di codice che utilizzano AWS SDKs for Java e.NET.

### Opzione A: abilitare le notifiche in un bucket utilizzando la console
<a name="step2-enable-notification-using-console"></a>

Utilizzando la console di Amazon S3, aggiungi una configurazione di notifica che richiede ad Amazon S3 di:
+ Pubblicare gli eventi di tipo **Tutti gli eventi di creazione dell'oggetto** nella coda Amazon SQS.
+ Pubblica gli eventi di tipo **Oggetto perso in RRS** sul tuo argomento Amazon SNS.

Una volta salvata la configurazione delle notifiche, Amazon S3 pubblica un messaggio di testo che viene inviato tramite e-mail. 

Per istruzioni, consulta [Attivazione e configurazione delle notifiche di eventi tramite la console di Amazon S3](enable-event-notifications.md). 

### Opzione B: abilita le notifiche su un bucket utilizzando AWS SDKs
<a name="step2-enable-notification-using-awssdk-dotnet"></a>

------
#### [ .NET ]

L'esempio di codice C\$1 riportato di seguito include il codice completo che aggiunge una configurazione delle notifiche in un bucket. Occorre aggiornare il codice e fornire il nome del bucket e l'ARN dell'argomento SNS. Per informazioni sulla configurazione e l'esecuzione degli esempi di codice, consulta [Getting Started with the AWS SDK for .NET nella AWS SDK for](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .NET *Developer Guide*. 

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class EnableNotificationsTest
    {
        private const string bucketName = "*** bucket name ***";
        private const string snsTopic = "*** SNS topic ARN ***";
        private const string sqsQueue = "*** SQS topic ARN ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            EnableNotificationAsync().Wait();
        }

        static async Task EnableNotificationAsync()
        {
            try
            {
               PutBucketNotificationRequest request = new PutBucketNotificationRequest
                {
                    BucketName = bucketName
                };

                TopicConfiguration c = new TopicConfiguration
                {
                    Events = new List<EventType> { EventType.ObjectCreatedCopy },
                    Topic = snsTopic
                };
                request.TopicConfigurations = new List<TopicConfiguration>();
                request.TopicConfigurations.Add(c);
                request.QueueConfigurations = new List<QueueConfiguration>();
                request.QueueConfigurations.Add(new QueueConfiguration()
                {
                    Events = new List<EventType> { EventType.ObjectCreatedPut },
                    Queue = sqsQueue
                });
                
                PutBucketNotificationResponse response = await client.PutBucketNotificationAsync(request);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' ", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown error encountered on server. Message:'{0}' ", e.Message);
            }
        }
    }
}
```

------
#### [ Java ]

Per esempi di come configurare le notifiche bucket con l' AWS SDK for Java, [consulta Process S3 event notification in Amazon *S3*](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ProcessS3EventNotification_section.html) API Reference.

------

## Fase 4: eseguire il test della configurazione
<a name="notification-walkthrough-1-test"></a>

Ora è possibile testare la configurazione caricando un oggetto nel bucket e verificando la notifica di eventi nella console di Amazon SQS. Per istruzioni, consulta la sezione [Ricezione di un messaggio](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.htmlReceiveMessage.html) nella sezione *"Nozioni di base" della Guida per gli sviluppatori di Amazon Simple Queue Service*. 

# Configurazione delle notifiche di eventi mediante il filtro dei nomi delle chiavi oggetto
<a name="notification-how-to-filtering"></a>

Quando configuri una notifica di eventi di Amazon S3, devi specificare quali tipi di eventi di Amazon S3 supportati fanno sì che Amazon S3 invii la notifica. Se nel bucket S3 si verifica un tipo di evento che non hai specificato, Amazon S3 non invia la notifica.

È possibile configurare le notifiche in modo da essere filtrate in base al prefisso e al suffisso del nome della chiave degli oggetti, Ad esempio, è possibile impostare una configurazione per ricevere una notifica solo quando i file di immagini con l'estensione del nome file "`.jpg`" vengono aggiunti a un bucket. In alternativa, puoi avere una configurazione che invia una notifica a un argomento di Amazon SNS quando un oggetto con il prefisso "`images/`" viene aggiunto al bucket, mentre le notifiche per gli oggetti con un prefisso "`logs/`" nello stesso bucket vengono inviate a una funzione. AWS Lambda 

**Nota**  
Un carattere jolly ("\$1") non può essere utilizzato nei filtri come prefisso o suffisso. Se il prefisso o il suffisso contiene uno spazio, è necessario sostituirlo con il carattere "\$1". Se utilizzi altri caratteri speciali nel valore del prefisso o del suffisso, dovrai immetterli nel [formato con codifica URL (codificato in percentuale)](https://en.wikipedia.org/wiki/Percent-encoding). Per un elenco completo dei caratteri speciali che devono essere convertiti in formato con codifica URL se utilizzati in un prefisso o in un suffisso per le notifiche di eventi, consulta [Caratteri sicuri](object-keys.md#object-key-guidelines-safe-characters).

È possibile impostare configurazioni delle notifiche che utilizzano il filtraggio del nome della chiave oggetto nella console di Amazon S3. Puoi farlo utilizzando Amazon S3 APIs tramite AWS SDKs o direttamente REST APIs . Per informazioni sull'utilizzo dell'interfaccia utente della console per impostare una configurazione di notifica in un bucket, consulta la sezione [Attivazione e configurazione delle notifiche di eventi tramite la console di Amazon S3](enable-event-notifications.md). 

Amazon S3 archivia la configurazione delle notifiche in formato XML nella risorsa secondaria *notification* associata a un bucket, come descritto in [Utilizzo di Amazon SQS, Amazon SNS e Lambda](how-to-enable-disable-notification-intro.md). Si utilizza la struttura XML `Filter` per definire le regole per filtrare le notifiche in base al prefisso o al suffisso del nome della chiave oggetto. Per informazioni sulla struttura XML `Filter`, consulta [notifica PUT Bucket](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTnotification.html) nella *Documentazione di riferimento delle API di Amazon Simple Storage Service*. 

Le configurazioni delle notifiche che utilizzano `Filter` non possono definire regole di filtri con prefissi che si sovrappongono, suffissi che si sovrappongono o prefisso e suffisso che si sovrappongono. Nelle sezioni seguenti sono riportati esempi di configurazioni delle notifiche valide con il filtro del nome della chiave dell'oggetto. Contengono anche esempi di configurazioni delle notifiche non valide a causa della sovrapposizione di prefisso/suffisso. 

**Topics**
+ [

## Esempi di configurazioni di notifiche valide con il filtro del nome della chiave dell'oggetto
](#notification-how-to-filtering-example-valid)
+ [

## Esempi di configurazioni di notifiche con sovrapposizione di prefisso/suffisso non valida
](#notification-how-to-filtering-examples-invalid)

## Esempi di configurazioni di notifiche valide con il filtro del nome della chiave dell'oggetto
<a name="notification-how-to-filtering-example-valid"></a>

La configurazione delle notifiche seguente contiene una configurazione della coda che identifica una coda Amazon SQS dove Amazon S3 deve pubblicare gli eventi di tipo `s3:ObjectCreated:Put`. Gli eventi vengono pubblicati ogni volta che un oggetto con prefisso `images/` e suffisso `jpg` viene aggiunto a un bucket tramite richiesta PUT. 

```
<NotificationConfiguration>
  <QueueConfiguration>
      <Id>1</Id>
      <Filter>
          <S3Key>
              <FilterRule>
                  <Name>prefix</Name>
                  <Value>images/</Value>
              </FilterRule>
              <FilterRule>
                  <Name>suffix</Name>
                  <Value>jpg</Value>
              </FilterRule>
          </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:s3notificationqueue</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
</NotificationConfiguration>
```

La configurazione delle notifiche riportata di seguito include diversi prefissi che non si sovrappongono. La configurazione stabilisce che le notifiche delle richieste PUT nella cartella `images/` vanno nella coda A (queue-A) mentre le notifiche delle richieste PUT nella cartella `logs/` vanno nella coda B (queue-B).

```
<NotificationConfiguration>
  <QueueConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images/</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-A</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
  <QueueConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>logs/</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-B</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
</NotificationConfiguration>
```

La configurazione delle notifiche riportata di seguito include diversi suffissi che non si sovrappongono. La configurazione definisce che tutte le `.jpg` immagini appena aggiunte al bucket vengono elaborate da cloud-function-A Lambda e tutte le immagini appena `.png` aggiunte vengono elaborate da. cloud-function-B I `.jpg` suffissi `.png` and non si sovrappongono anche se hanno la stessa ultima lettera. I due suffissi si considerano sovrapposti se una determinata stringa può terminare con entrambi. Una stringa non può terminare sia con `.png` che con `.jpg`, pertanto i suffissi nella configurazione di esempio non si sovrappongono. 

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.jpg</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
  <CloudFunctionConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.png</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
</NotificationConfiguration>
```

Le configurazioni delle notifiche che utilizzano `Filter` non possono definire regole per filtrare i prefissi che si sovrappongono nello stesso tipo di evento. Possono farlo solo se i prefissi sovrapposti sono utilizzati con suffissi che non si sovrappongono. L'esempio di configurazione seguente mostra in che modo gli oggetti creati con un prefisso comune ma con suffissi che non si sovrappongono possono essere distribuiti in diverse destinazioni.

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images</Value>
                </FilterRule>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.jpg</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
  <CloudFunctionConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images</Value>
                </FilterRule>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.png</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
</NotificationConfiguration>
```

## Esempi di configurazioni di notifiche con sovrapposizione di prefisso/suffisso non valida
<a name="notification-how-to-filtering-examples-invalid"></a>

La maggior parte delle configurazioni delle notifiche che utilizzano `Filter` non possono definire regole per filtrare i prefissi che si sovrappongono, i suffissi che si sovrappongono o le combinazioni di prefissi e suffissi che si sovrappongono per gli stessi tipi di eventi. È possibile avere prefissi che si sovrappongono a condizione che non si sovrappongano i suffissi. Per vedere un esempio, consulta [Configurazione delle notifiche di eventi mediante il filtro dei nomi delle chiavi oggetto](#notification-how-to-filtering).

È possibile utilizzare filtri di nomi delle chiavi degli oggetti che si sovrappongono con diversi tipi di eventi. Ad esempio, si potrebbe creare una configurazione delle notifiche che utilizza il prefisso `image/` per il tipo di evento `ObjectCreated:Put` e il prefisso `image/` per il tipo di evento `ObjectRemoved:*`. 

Se cerchi di salvare una configurazione delle notifiche con filtri di nomi non validi che si sovrappongono per gli stessi tipi di eventi, durante l'utilizzo dell'API o della console di Amazon S3, si verifica un errore. Questa sezione mostra esempi di configurazioni delle notifiche non valide a causa della sovrapposizione dei filtri dei nomi. 

Si presuppone che qualsiasi regola di configurazione delle notifiche esistente abbia prefisso e suffisso predefiniti che corrispondano rispettivamente a qualsiasi altro prefisso e suffisso. La configurazione delle notifiche riportata di seguito non è valida poiché include prefissi che si sovrappongono. In particolare, il prefisso root si sovrappone con qualsiasi altro prefisso. Lo stesso vale nel caso in cui in questo esempio si utilizzi un suffisso anziché il prefisso. Il suffisso root si sovrappone a qualsiasi altro suffisso.

```
<NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-two</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>prefix</Name>
                     <Value>images</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>             
</NotificationConfiguration>
```

La configurazione delle notifiche riportata di seguito non è valida in quanto include suffissi che si sovrappongono. I due suffissi si considerano sovrapposti se una determinata stringa può terminare con entrambi. Una stringa può terminare con `jpg` e `pg`. Quindi, i suffissi si sovrappongono. Lo stesso vale per i prefissi. Due prefissi sono considerati sovrapposti se una determinata stringa può iniziare con entrambi i prefissi.

```
 <NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic>
         <Event>s3:ObjectCreated:Put</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>pg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
</NotificationConfiguration
```

La configurazione delle notifiche riportata di seguito non è valida poiché include prefissi e suffissi che si sovrappongono. 

```
<NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>prefix</Name>
                     <Value>images</Value>
                 </FilterRule>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic>
         <Event>s3:ObjectCreated:Put</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
</NotificationConfiguration>
```

# Struttura del messaggio di evento
<a name="notification-content-structure"></a>

Il messaggio di notifica inviato da Amazon S3 per pubblicare un evento è in formato JSON.

Per una panoramica generale e istruzioni sulla configurazione delle notifiche degli eventi, consulta [Notifiche di eventi Amazon S3](EventNotifications.md).

Questo esempio mostra la *versione 2.1 della struttura JSON* di notifica degli eventi. Amazon S3 utilizza le *versioni 2.1*, *2.2* e *2.3* di questa struttura di eventi. Amazon S3 utilizza la versione 2.2 per le notifiche di eventi di replica tra Regioni. Utilizza la versione 2.3 per S3 Lifecycle, S3 Intelligent-Tiering, ACL di oggetti, assegnazione di tag di oggetti e ripristino oggetti per gli eventi di eliminazione. Queste versioni contengono informazioni aggiuntive specifiche per queste operazioni. Le versioni 2.2 e 2.3 sono altrimenti compatibili con la versione 2.1 che Amazon S3 utilizza attualmente per altri tipi di notifiche di eventi.

```
{  
   "Records":[  
      {  
         "eventVersion":"2.1",
         "eventSource":"aws:s3",
         "awsRegion":"us-west-2",
         "eventTime":"The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z) when Amazon S3 finished processing the request",
         "eventName":"The event type",
         "userIdentity":{  
            "principalId":"The unique ID of the IAM resource that caused the event"
         },
         "requestParameters":{  
            "sourceIPAddress":"The IP address where the request came from"
         },
         "responseElements":{  
            "x-amz-request-id":"The Amazon S3 generated request ID",
            "x-amz-id-2":"The Amazon S3 host that processed the request"
         },
         "s3":{  
            "s3SchemaVersion":"1.0",
            "configurationId":"The ID found in the bucket notification configuration",
            "bucket":{  
               "name":"The name of the bucket, for example, amzn-s3-demo-bucket",
               "ownerIdentity":{  
                  "principalId":"The Amazon retail customer ID of the bucket owner"
               },
               "arn":"The bucket Amazon Resource Name (ARN)"
            },
            "object":{  
               "key":"The object key name",
               "size":"The object size in bytes (as a number)",
               "eTag":"The object entity tag (ETag)",
               "versionId":"The object version if the bucket is versioning-enabled; null or not present if the bucket isn't versioning-enabled",
               "sequencer": "A string representation of a hexadecimal value used to determine event sequence; only used with PUT and DELETE requests"
            }
         },
         "glacierEventData": {
            "restoreEventData": {
               "lifecycleRestorationExpiryTime": "The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z), when the temporary copy of the restored object expires",
               "lifecycleRestoreStorageClass": "The source storage class for restored objects"
            }
         }
      }
   ]
}
```

Notare quanto segue sulla struttura dei messaggi di evento:
+ Il valore della chiave `eventVersion` contiene una versione maggiore e minore nel formato `major`.`minor`.

  La versione principale viene incrementata se Amazon S3 apporta una modifica alla struttura dell'evento che non è compatibile con le versioni precedenti. Questo include la rimozione di un campo JSON che è già presente o la modifica del modo in cui i contenuti di un campo vengono rappresentati (ad esempio, un formato di data).

  La versione secondaria viene incrementata se Amazon S3 aggiunge nuovi campi alla struttura dell'evento. Questo può succedere se vengono fornite nuove informazioni per alcuni o tutti gli eventi esistenti. Questo può succedere anche se vengono fornite nuove informazioni solo per i tipi di eventi appena introdotti. Per mantenere la compatibilità con le nuove versioni secondarie della struttura degli eventi, è consigliabile che le applicazioni ignorino i nuovi campi.

  Se vengono introdotti nuovi tipi di eventi ma la struttura dell’evento rimane invariata, la versione dell’evento non cambia.

  Per fare in modo che le applicazioni analizzino correttamente la struttura dell'evento, è consigliabile eseguire un confronto "uguale a" sul numero della versione maggiore. Per garantire che i campi previsti dall'applicazione siano presenti, consigliamo anche di eseguire un confronto greater-than-or-equal -to sulla versione secondaria.
+ Il valore di chiave `eventName` fa riferimento all’elenco dei [tipi di notifiche degli eventi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html) ma non contiene il prefisso `s3:`.
+ Il valore `userIdentity` chiave fa riferimento all'ID univoco della risorsa AWS Identity and Access Management (IAM) (utente, ruolo, gruppo e così via) che ha causato l'evento. Per la definizione di ciascun prefisso di identificazione IAM (ad esempio AIDA, AROA, AGPA) e per informazioni su come ottenere l’identificatore univoco, consulta [Identificatori univoci](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html##identifiers-unique-ids) nella *Guida per l’utente IAM*.
+ Il valore della `responseElements` chiave è utile se si desidera tracciare una richiesta dando seguito a Supporto AWS. Sia `x-amz-request-id` sia `x-amz-id-2` aiutano Amazon S3 a tenere traccia di una singola richiesta. Questi valori corrispondono a quelli che Amazon S3 restituisce nella risposta alla richiesta che avvia gli eventi. Pertanto, è possibile utilizzare questi valori per abbinare l’evento alla richiesta.
+ Il valore di chiave `s3` fornisce informazioni sul bucket e sull’oggetto coinvolto nell’evento. Il valore del nome della chiave dell'oggetto ha la codifica URL. Ad esempio `red flower.jpg` diventa `red+flower.jpg`. Amazon S3 restituisce “`application/x-www-form-urlencoded`” come tipo di contenuto nella risposta.

  Il valore di chiave `ownerIdentity` corrisponde all’ID del cliente di vendita al dettaglio Amazon (Amazon.com) del proprietario del bucket. Questo valore di ID non viene più utilizzato e viene mantenuto solo per motivi di compatibilità con le versioni precedenti. 
+ Il valore di chiave `sequencer` fornisce un modo per stabilire la sequenza degli eventi. Non è garantito che le notifiche di eventi arrivino nello stesso ordine in cui avvengono gli eventi. Tuttavia, notifiche di eventi che creano oggetti (richieste `PUT`) ed eliminano oggetti contengono un `sequencer`. È possibile utilizzare questo valore per determinare l’ordine degli eventi per una specifica chiave dell’oggetto. 

  Se si confrontano le stringhe `sequencer` da due notifiche eventi nella stessa chiave dell'oggetto, la notifica evento con il valore esadecimale `sequencer` più elevato è l'evento che è avvenuto per ultimo. Se si utilizzano notifiche di eventi per mantenere un database o un indice separato degli oggetti Amazon S3, è consigliabile confrontare e archiviare i valori `sequencer` man mano che la notifica di ciascun evento viene elaborata. 

  Tenere presente quanto segue:
  + Il valore di chiave `sequencer` non può essere utilizzato per determinare l’ordine degli eventi su diverse chiavi degli oggetti.
  + Le stringhe `sequencer` possono essere di diversa lunghezza. Quindi, per confrontare questi valori, per prima cosa aggiungi gli zeri al valore più breve e poi esegui un confronto lessicografico.
+ Il valore di chiave `glacierEventData` è visibile solo per gli eventi `s3:ObjectRestore:Completed`. 
+ Il valore di chiave `restoreEventData` contiene attributi correlati alla richiesta di ripristino.
+ Il valore di chiave `replicationEventData` è visibile solo per gli eventi di replica.
+ Il valore di chiave `intelligentTieringEventData` è visibile solo per gli eventi Piano intelligente S3.
+ Il valore di chiave `lifecycleEventData` è visibile solo per gli eventi di transizione del ciclo di vita S3.

## Messaggi di esempio
<a name="notification-content-structure-examples"></a>

Di seguito sono riportati alcuni esempi di messaggi di notifica degli eventi Amazon S3.

**Messaggio di prova Amazon S3**  
Quando configuri una notifica di eventi in un bucket, Amazon S3 invia il messaggio di prova riportato di seguito.

```
1. {  
2.    "Service":"Amazon S3",
3.    "Event":"s3:TestEvent",
4.    "Time":"2014-10-13T15:57:02.089Z",
5.    "Bucket":"amzn-s3-demo-bucket",
6.    "RequestId":"5582815E1AEA5ADF",
7.    "HostId":"8cLeGAmw098X5cv4Zkwcmo8vvZa3eH3eKxsPzbB9wrR+YstdA6Knx4Ip8EXAMPLE"
8. }
```

**Nota**  
Il messaggio `s3:TestEvent` utilizza un formato diverso rispetto alle normali notifiche degli eventi S3. A differenza di altre notifiche degli eventi che utilizzano la struttura dell’array `Records` mostrata in precedenza, l’evento di test utilizza un formato semplificato con campi diretti. Quando si implementa la gestione degli eventi, è necessario assicurarsi che il codice sia in grado di distinguere e gestire correttamente entrambi i formati di messaggio.

**Messaggio di esempio quando un oggetto viene creato utilizzando una richiesta `PUT`**  
Quello che segue è un esempio di un messaggio inviato da Amazon S3 per pubblicare un evento `s3:ObjectCreated:Put`.

```
 1. {  
 2.    "Records":[  
 3.       {  
 4.          "eventVersion":"2.1",
 5.          "eventSource":"aws:s3",
 6.          "awsRegion":"us-west-2",
 7.          "eventTime":"1970-01-01T00:00:00.000Z",
 8.          "eventName":"ObjectCreated:Put",
 9.          "userIdentity":{  
10.             "principalId":"AIDAJDPLRKLG7UEXAMPLE"
11.          },
12.          "requestParameters":{  
13.             "sourceIPAddress":"172.16.0.1"
14.          },
15.          "responseElements":{  
16.             "x-amz-request-id":"C3D13FE58DE4C810",
17.             "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD"
18.          },
19.          "s3":{  
20.             "s3SchemaVersion":"1.0",
21.             "configurationId":"testConfigRule",
22.             "bucket":{  
23.                "name":"amzn-s3-demo-bucket",
24.                "ownerIdentity":{  
25.                   "principalId":"A3NL1KOZZKExample"
26.                },
27.                "arn":"arn:aws:s3:::amzn-s3-demo-bucket"
28.             },
29.             "object":{  
30.                "key":"HappyFace.jpg",
31.                "size":1024,
32.                "eTag":"d41d8cd98f00b204e9800998ecf8427e",
33.                "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko",
34.                "sequencer":"0055AED6DCD90281E5"
35.             }
36.          }
37.       }
38.    ]
39. }
```

