

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

# Integrazione di Amazon Aurora MySQL con altri servizi AWS
<a name="AuroraMySQL.Integrating"></a>

Amazon Aurora MySQL si integra con altri AWS servizi in modo da poter estendere il cluster Aurora MySQL DB per utilizzare funzionalità aggiuntive nel cloud. AWS Il cluster Aurora MySQL DB può utilizzare AWS i servizi per eseguire le seguenti operazioni:
+ Richiama una funzione in modo sincrono o asincrono utilizzando le funzioni native o. AWS Lambda `lambda_sync` `lambda_async` Per ulteriori informazioni, consulta [Chiamare una funzione Lambda da un cluster DB Amazon Aurora MySQL](AuroraMySQL.Integrating.Lambda.md).
+ Caricamento dei dati da file di testo o XML archiviati in un bucket Amazon Simple Storage Service (Amazon S3) nel cluster DB utilizzando il comando `LOAD DATA FROM S3` o `LOAD XML FROM S3`. Per ulteriori informazioni, consulta [Caricamento dei dati in un cluster DB Amazon Aurora MySQL da file di testo in un bucket Amazon S3](AuroraMySQL.Integrating.LoadFromS3.md).
+ Salvataggio dei dati nei file di testo archiviati in un bucket Amazon S3 dal cluster DB utilizzando il comando `SELECT INTO OUTFILE S3`. Per ulteriori informazioni, consulta [Salvataggio dei dati da un cluster DB Amazon Aurora MySQL nei file di testo in un bucket Amazon S3](AuroraMySQL.Integrating.SaveIntoS3.md). 
+ Aggiunta o rimozione automatica di repliche Aurora con Application Auto Scaling. Per ulteriori informazioni, consulta [Dimensionamento automatico di Amazon Aurora con le repliche Aurora](Aurora.Integrating.AutoScaling.md).
+  Esegui analisi del sentiment con Amazon Comprehend o un'ampia varietà di algoritmi SageMaker di apprendimento automatico con AI. Per ulteriori informazioni, consulta [Utilizzo di machine learning di Amazon Aurora](aurora-ml.md). 

Aurora assicura la possibilità di accedere ad altri AWS servizi utilizzando AWS Identity and Access Management (IAM). Concedi l'autorizzazione ad accedere ad altri AWS servizi creando un ruolo IAM con le autorizzazioni necessarie e quindi associando il ruolo al tuo cluster DB. Per dettagli e istruzioni su come consentire al cluster Aurora MySQL DB di accedere ad altri AWS servizi per tuo conto, consulta. [Autorizzazione di Amazon Aurora MySQL ad accedere ad altri servizi per tuo conto AWS](AuroraMySQL.Integrating.Authorizing.md)

# Autorizzazione di Amazon Aurora MySQL ad accedere ad altri servizi per tuo conto AWS
<a name="AuroraMySQL.Integrating.Authorizing"></a>

Per consentire al cluster Aurora MySQL DB di accedere ad altri servizi per tuo conto, crea e configura un ruolo (IAM). AWS Identity and Access Management Questo ruolo autorizza gli utenti del database nel cluster DB ad accedere ad altri servizi. AWS Per ulteriori informazioni, consulta [Configurazione dei ruoli IAM per accedere ai AWS servizi](AuroraMySQL.Integrating.Authorizing.IAM.md).

È inoltre necessario configurare il cluster Aurora DB per consentire le connessioni in uscita al servizio di destinazione. AWS Per ulteriori informazioni, consulta [Abilitazione della comunicazione di rete da Amazon Aurora ad altri servizi AWS](AuroraMySQL.Integrating.Authorizing.Network.md).

In questo caso, gli utenti del database possono eseguire le operazioni utilizzando gli altri servizi AWS :
+ Richiama una funzione in modo sincrono o asincrono utilizzando le funzioni native o. AWS Lambda `lambda_sync` `lambda_async` In alternativa, chiamata asincrona di una funzione AWS Lambda utilizzando la procedura `mysql.lambda_async`. Per ulteriori informazioni, consulta [Chiamare una funzione Lambda con una funzione nativa Aurora MySQL](AuroraMySQL.Integrating.NativeLambda.md).
+ Caricamento dei dati da file di testo o XML memorizzati in un bucket Amazon S3 nel cluster DB utilizzando l'istruzione `LOAD DATA FROM S3` o `LOAD XML FROM S3`. Per ulteriori informazioni, consulta [Caricamento dei dati in un cluster DB Amazon Aurora MySQL da file di testo in un bucket Amazon S3](AuroraMySQL.Integrating.LoadFromS3.md).
+ Salvataggio dei dati dal cluster DB nei file di testo memorizzati in un bucket Amazon S3 utilizzando l'istruzione `SELECT INTO OUTFILE S3`. Per ulteriori informazioni, consulta [Salvataggio dei dati da un cluster DB Amazon Aurora MySQL nei file di testo in un bucket Amazon S3](AuroraMySQL.Integrating.SaveIntoS3.md).
+ Esporta i dati di log in Amazon CloudWatch Logs MySQL. Per ulteriori informazioni, consulta [Pubblicazione di log Amazon Aurora MySQL in Amazon CloudWatch Logs](AuroraMySQL.Integrating.CloudWatch.md).
+ Aggiunta o rimozione automatica di repliche Aurora con Application Auto Scaling. Per ulteriori informazioni, consulta [Dimensionamento automatico di Amazon Aurora con le repliche Aurora](Aurora.Integrating.AutoScaling.md).

# Configurazione dei ruoli IAM per accedere ai AWS servizi
<a name="AuroraMySQL.Integrating.Authorizing.IAM"></a>

Per consentire al cluster Aurora DB di accedere a un altro AWS servizio, procedi come segue:

1. Crea una policy IAM che conceda l'autorizzazione al AWS servizio. Per ulteriori informazioni, consulta i seguenti argomenti.
   + [Creazione di una policy IAM per l'accesso alle risorse Amazon S3](AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.md)
   + [Creazione di una policy IAM per accedere alle AWS Lambda risorse](AuroraMySQL.Integrating.Authorizing.IAM.LambdaCreatePolicy.md)
   + [Creazione di una policy IAM per accedere alle CloudWatch risorse Logs](AuroraMySQL.Integrating.Authorizing.IAM.CWCreatePolicy.md)
   + [Creazione di una policy IAM per accedere alle AWS KMS risorse](AuroraMySQL.Integrating.Authorizing.IAM.KMSCreatePolicy.md)

1. Crea un ruolo IAM e collega la policy che hai creato. Per ulteriori informazioni, consulta [Creazione di un ruolo IAM per consentire ad Amazon Aurora di accedere ai servizi AWS](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md).

1. Associa il ruolo IAM al cluster DB Aurora. Per ulteriori informazioni, consulta [Associazione di un ruolo IAM a un cluster DB Amazon Aurora MySQL](AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.md).

# Creazione di una policy IAM per l'accesso alle risorse Amazon S3
<a name="AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy"></a>

Aurora può accedere alle risorse di Amazon S3 per caricare i dati o per salvare i dati da un cluster DB Aurora. Tuttavia, è necessario prima creare una policy IAM che assegni le autorizzazioni del bucket e dell'oggetto che rendono possibile l'accesso di Aurora ad Amazon S3.

La tabella seguente indica le funzionalità di Aurora che possono accedere a un bucket Amazon S3 per tuo conto e le autorizzazioni minime del bucket e dell'oggetto richieste da ciascuna funzionalità.


| Caratteristica | Autorizzazioni del bucket | Autorizzazioni dell'oggetto | 
| --- | --- | --- | 
|  `LOAD DATA FROM S3`  |  `ListBucket`  |  `GetObject` `GetObjectVersion`  | 
| LOAD XML FROM S3 |  `ListBucket`  |  `GetObject` `GetObjectVersion`  | 
|  `SELECT INTO OUTFILE S3`  |  `ListBucket`  |  `AbortMultipartUpload` `DeleteObject` `GetObject` `ListMultipartUploadParts` `PutObject`  | 

La seguente policy aggiunge le autorizzazioni che Amazon S3 potrebbe richiedere da Aurora per accedere al bucket per tuo conto. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAuroraToExampleBucket",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:AbortMultipartUpload",
                "s3:ListBucket",
                "s3:DeleteObject",
                "s3:GetObjectVersion",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*",
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        }
    ]
}
```

------

**Nota**  
 Assicurati di includere entrambe le voci per il valore `Resource`. Aurora ha bisogno delle autorizzazioni sia sul bucket stesso che su tutti gli oggetti all'interno del bucket.   
In base al caso d'uso, potrebbe non essere necessario aggiungere tutte le autorizzazioni presenti nella policy di esempio. Potrebbero inoltre essere richieste altre autorizzazioni. Ad esempio, se il bucket Amazon S3 è crittografato, occorre aggiungere autorizzazioni `kms:Decrypt`.

È possibile seguire i passaggi seguenti per creare una policy IAM che conceda le autorizzazioni minime necessarie affinché Aurora possa accedere a un bucket Amazon S3 per tuo conto. Per consentire ad Aurora l'accesso a tutti i bucket Amazon S3, puoi saltare questi passaggi e utilizzare la policy IAM predefinita `AmazonS3ReadOnlyAccess` o `AmazonS3FullAccess` invece di crearne una nuova.

**Per creare una policy IAM per consentire l'accesso alle risorse Amazon S3**

1. Aprire la [console di gestione IAM](https://console.aws.amazon.com/iam/home?#home).

1. Nel pannello di navigazione, selezionare **Policies (Policy)**.

1. Scegli **Create Policy** (Crea policy).

1. Nella scheda **Visual editor (Editor visivo)** selezionare **Choose a service (Scegli un servizio)** e quindi **S3**.

1. Per **Actions (Operazioni)**, scegliere **Expand all (Espandi tutto)**, quindi scegliere le autorizzazioni del bucket e dell'oggetto necessarie per la policy IAM.

   Le autorizzazioni dell'oggetto si riferiscono alle operazioni sugli oggetti in Amazon S3 e devono essere concesse per gli oggetti presenti nel bucket e non per il bucket stesso. Per ulteriori informazioni sulle autorizzazioni per le operazioni degli oggetti in Amazon S3, consulta [Autorizzazioni per operazioni relative agli oggetti](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-objects).

1. Scegliere **Resources (Risorse)** e selezionare **Add ARN (Aggiungi ARN)** per **bucket**.

1. Nella finestra di dialogo **Add ARN(s) (Aggiungi ARN)**, fornire i dettagli sulla risorsa e scegliere **Add (Aggiungi)**.

   Specificare il bucket Amazon S3 a cui consentire l'accesso. Ad esempio, per consentire ad Aurora di accedere al bucket Amazon S3 denominato *amzn-s3-demo-bucket*, impostare il valore Amazon Resource Name (ARN) su `arn:aws:s3:::amzn-s3-demo-bucket`.

1. Se la risorsa **object (oggetto)** è elencata, scegliere **Add ARN (Aggiungi ARN)** per **object (oggetto)**.

1. Nella finestra di dialogo **Add ARN(s) (Aggiungi ARN)**, fornire i dettagli sulla risorsa.

   Per il bucket Amazon S3 specificare il bucket Amazon S3 a cui consentire l'accesso. Per l'oggetto, è anche possibile scegliere **Any (Qualsiasi)** per concedere le autorizzazioni per qualsiasi oggetto nel bucket.
**Nota**  
È possibile impostare **Amazon Resource Name (ARN)** su un valore dell'ARN più specifico in modo da consentire ad Aurora di accedere solo a specifici file o cartelle presenti in un bucket Amazon S3. Per ulteriori informazioni su come definire una policy di accesso per Amazon S3, consulta [Gestione delle autorizzazioni di accesso alle risorse Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).

1. (Facoltativo) Scegliere **Add ARN (Aggiungi ARN)** affinché il **bucket** aggiunga un altro bucket Amazon S3 alla policy e ripetere i passaggi precedenti per il bucket.
**Nota**  
È possibile ripetere questa operazione per aggiungere le istruzioni di autorizzazione del bucket corrispondenti alla policy per ciascun bucket Amazon S3 a cui Aurora deve accedere. Facoltativamente, è anche possibile concedere l'accesso a tutti i bucket e gli oggetti in Amazon S3.

1. Scegliere **Review policy (Esamina policy)**.

1. Per **Name (Nome)**, immettere un nome per la policy IAM, ad esempio `AllowAuroraToExampleBucket`. Questo nome viene utilizzato quando si crea un ruolo IAM e lo si associa al cluster DB Aurora. È anche possibile aggiungere un valore **Description (Descrizione)** facoltativo.

1. Seleziona **Create Policy** (Crea policy).

1. Completa le fasi descritte in [Creazione di un ruolo IAM per consentire ad Amazon Aurora di accedere ai servizi AWS](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md).

# Creazione di una policy IAM per accedere alle AWS Lambda risorse
<a name="AuroraMySQL.Integrating.Authorizing.IAM.LambdaCreatePolicy"></a>

Puoi creare una policy IAM che fornisca le autorizzazioni minime richieste ad Aurora per richiamare AWS Lambda una funzione per tuo conto.

La seguente policy aggiunge le autorizzazioni richieste da Aurora per richiamare la funzione AWS Lambda per tuo conto.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAuroraToExampleFunction",
      "Effect": "Allow",
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:example_function"
    }
  ]
}
```

------

Puoi utilizzare i seguenti passaggi per creare una policy IAM che fornisca le autorizzazioni minime richieste ad Aurora per richiamare AWS Lambda una funzione per tuo conto. Per consentire ad Aurora di richiamare tutte le tue AWS Lambda funzioni, puoi saltare questi passaggi e utilizzare la `AWSLambdaRole` policy predefinita invece di crearne una tua.

**Per creare una policy IAM per concedere invoke alle tue funzioni AWS Lambda**

1. Aprire la [console IAM](https://console.aws.amazon.com/iam/home?#home).

1. Nel riquadro di navigazione, scegli **Policy**.

1. Scegli **Create Policy** (Crea policy).

1. Nella scheda **Visual editor (Editor visivo)**, selezionare **Choose a service (Scegli un servizio)** e scegliere **Lambda**.

1. Per **Actions (Operazioni)**, scegliere **Expand all (Espandi tutto)**, quindi scegliere le autorizzazioni AWS Lambda necessarie per la policy IAM.

   Verificare che `InvokeFunction` sia selezionato. È l'autorizzazione minima richiesta per consentire ad Amazon Aurora di richiamare una funzione. AWS Lambda 

1. Scegliere **Resources (Risorse)** e selezionare **Add ARN (Aggiungi ARN)** per **function (funzione)**.

1. Nella finestra di dialogo **Add ARN(s) (Aggiungi ARN)**, fornire i dettagli sulla risorsa.

   Specificare la funzione Lambda a cui consentire l'accesso. Ad esempio, per consentire ad Aurora l'accesso a una funzione Lambda denominata `example_function`, impostare il valore dell'ARN su `arn:aws:lambda:::function:example_function`. 

   Per ulteriori informazioni su come definire una politica di accesso per AWS Lambda, consulta [Autenticazione e controllo degli accessi](https://docs.aws.amazon.com/lambda/latest/dg/lambda-auth-and-access-control.html) per. AWS Lambda

1. Facoltativamente, scegli **Aggiungi autorizzazioni aggiuntive** per aggiungere un'altra AWS Lambda funzione alla politica e ripeti i passaggi precedenti per la funzione.
**Nota**  
Puoi ripetere l'operazione per aggiungere le istruzioni di autorizzazione alla funzione corrispondenti alla tua politica per ogni AWS Lambda funzione a cui desideri che Aurora acceda.

1. Scegliere **Review policy (Esamina policy)**.

1. Impostare **Name (Nome)** su un nome per la policy IAM, ad esempio `AllowAuroraToExampleFunction`. Questo nome viene utilizzato quando si crea un ruolo IAM e lo si associa al cluster DB Aurora. È anche possibile aggiungere un valore **Description (Descrizione)** facoltativo.

1. Seleziona **Create Policy** (Crea policy).

1. Completa le fasi descritte in [Creazione di un ruolo IAM per consentire ad Amazon Aurora di accedere ai servizi AWS](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md).

# Creazione di una policy IAM per accedere alle CloudWatch risorse Logs
<a name="AuroraMySQL.Integrating.Authorizing.IAM.CWCreatePolicy"></a>

Aurora può accedere ai CloudWatch log per esportare i dati dei log di controllo da un cluster Aurora DB. Tuttavia, devi prima creare una policy IAM che fornisca le autorizzazioni per il gruppo di log e il flusso di log che consentono ad Aurora di accedere ai CloudWatch log. 

La seguente policy aggiunge le autorizzazioni richieste da Aurora per accedere ad CloudWatch Amazon Logs per tuo conto e le autorizzazioni minime richieste per creare gruppi di log ed esportare dati. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnableCreationAndManagementOfRDSCloudwatchLogEvents",
            "Effect": "Allow",
            "Action": [
                "logs:GetLogEvents",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:/aws/rds/*:log-stream:*"
        },
        {
            "Sid": "EnableCreationAndManagementOfRDSCloudwatchLogGroupsAndStreams",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:DescribeLogStreams",
                "logs:PutRetentionPolicy",
                "logs:CreateLogGroup"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:/aws/rds/*"
        }
    ]
}
```

------

Puoi modificare la ARNs policy per limitare l'accesso a una regione e a un account specificiAWS.

Puoi utilizzare i seguenti passaggi per creare una policy IAM che fornisca le autorizzazioni minime richieste ad Aurora per CloudWatch accedere ai log per tuo conto. Per consentire ad Aurora l'accesso completo ai CloudWatch log, puoi saltare questi passaggi e utilizzare la policy IAM `CloudWatchLogsFullAccess` predefinita invece di crearne una tua. *Per ulteriori informazioni, consulta [Using Identity-Based Policy (IAM policies) for CloudWatch Logs nella](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-identity-based-access-control-cwl.html#managed-policies-cwl) Amazon User Guide. CloudWatch *

**Per creare una policy IAM per concedere l'accesso alle tue risorse Logs CloudWatch**

1. Aprire la [console IAM](https://console.aws.amazon.com/iam/home?#home).

1. Nel riquadro di navigazione, scegli **Policy**.

1. Scegli **Create Policy** (Crea policy).

1. Nella scheda **Visual Editor**, scegli **Scegli un servizio**, quindi scegli **CloudWatchLogs**.

1. Per **Actions**, scegli **Espandi tutto** (a destra), quindi scegli le autorizzazioni Amazon CloudWatch Logs necessarie per la policy IAM.

   Verificare che le seguenti autorizzazioni siano selezionate:
   + `CreateLogGroup`
   + `CreateLogStream`
   + `DescribeLogStreams`
   + `GetLogEvents`
   + `PutLogEvents`
   + `PutRetentionPolicy`

1. Scegliere **Resources (Risorse)** e selezionare **Add ARN (Aggiungi ARN)** per **log-group (gruppo di log)**.

1. Nella finestra di dialogo **Add ARN(s) (Aggiungi ARN)**, immettere i seguenti valori:
   + **Regione**: una AWS regione o `*`
   + **Account** – Un numero di account o `*`
   + **Log Group Name (Nome gruppo di log** – `/aws/rds/*`

1. Nella finestra di dialogo **Add ARN(s) (Aggiungi ARN)**, scegliere **Add (Aggiungi)**.

1. Scegliere **Add ARN (Aggiungi ARN)** per **log-stream (flusso di log)**.

1. Nella finestra di dialogo **Add ARN(s) (Aggiungi ARN)**, immettere i seguenti valori:
   + **Regione**: una AWS regione o `*`
   + **Account** – Un numero di account o `*`
   + **Log Group Name (Nome gruppo di log** – `/aws/rds/*`
   + **Log Stream Name (Nome flusso di log** – `*`

1. Nella finestra di dialogo **Add ARN(s) (Aggiungi ARN)**, scegliere **Add (Aggiungi)**.

1. Scegliere **Review policy (Esamina policy)**.

1. Impostare **Name (Nome)** su un nome per la policy IAM, ad esempio `AmazonRDSCloudWatchLogs`. Questo nome viene utilizzato quando si crea un ruolo IAM e lo si associa al cluster DB Aurora. È anche possibile aggiungere un valore **Description (Descrizione)** facoltativo.

1. Seleziona **Create Policy** (Crea policy).

1. Completa le fasi descritte in [Creazione di un ruolo IAM per consentire ad Amazon Aurora di accedere ai servizi AWS](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md).

# Creazione di una policy IAM per accedere alle AWS KMS risorse
<a name="AuroraMySQL.Integrating.Authorizing.IAM.KMSCreatePolicy"></a>

Aurora può accedere alle AWS KMS keys utilizzate per la crittografia dei backup dei database. Tuttavia, è necessario innanzitutto creare una policy IAM che assegni le autorizzazioni che consentano ad Aurora di accedere alle chiavi KMS.

La seguente policy aggiunge le autorizzazioni che Aurora richiede per accedere alle chiavi KMS per tuo conto.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAuroraToAccessKey",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-ID"
    }
  ]
}
```

------

È possibile seguire i passaggi seguenti per creare una policy IAM che concede le autorizzazioni minime necessarie affinché Aurora possa accedere alle chiavi KMS per tuo conto.

**Per creare una policy IAM per consentire l'accesso alle chiavi KMS**

1. Aprire la [console IAM](https://console.aws.amazon.com/iam/home?#home).

1. Nel riquadro di navigazione, scegli **Policy**.

1. Scegli **Create Policy** (Crea policy).

1. Nella scheda **Visual editor (Editor visivo)**, selezionare **Choose a service (Scegli un servizio)** e scegliere **KMS**.

1. Per **Actions (Operazioni)**, scegliere **Write (Scrivi)** e selezionare **Decrypt (Decrittografa)**.

1. Scegliere **Resources (Risorse)** e selezionare **Add ARN (Aggiungi ARN)**.

1. Nella finestra di dialogo **Add ARN(s) (Aggiungi ARN)**, immettere i seguenti valori:
   + **Regione**: digita la AWS regione, ad esempio`us-west-2`.
   + **Account** – Specificare il numero dell'account utente.
   + **Nome flusso di registro**: digitare l'identificatore della chiave KMS.

1. Nella finestra di dialogo **Add ARN(s) (Aggiungi ARN)**, scegliere **Add (Aggiungi)**.

1. Scegliere **Review policy (Esamina policy)**.

1. Impostare **Name (Nome)** su un nome per la policy IAM, ad esempio `AmazonRDSKMSKey`. Questo nome viene utilizzato quando si crea un ruolo IAM e lo si associa al cluster DB Aurora. È anche possibile aggiungere un valore **Description (Descrizione)** facoltativo.

1. Seleziona **Create Policy** (Crea policy).

1. Completa le fasi descritte in [Creazione di un ruolo IAM per consentire ad Amazon Aurora di accedere ai servizi AWS](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md).

# Creazione di un ruolo IAM per consentire ad Amazon Aurora di accedere ai servizi AWS
<a name="AuroraMySQL.Integrating.Authorizing.IAM.CreateRole"></a>

Dopo aver creato una policy IAM per consentire ad Aurora di accedere alle AWS risorse, devi creare un ruolo IAM e collegare la policy IAM al nuovo ruolo IAM.

Per creare un ruolo IAM che consenta al cluster Amazon RDS di comunicare con altri servizi AWS per tuo conto, completa la procedura riportata di seguito.<a name="Create.IAMRole.AWSServices"></a>

**Creare un ruolo IAM per consentire ad Amazon RDS di accedere ai servizi AWS**

1. Aprire la [console IAM](https://console.aws.amazon.com/iam/home?#home).

1. Nel pannello di navigazione, selezionare **Ruoli**.

1. Selezionare **Create role (Crea ruolo)**.

1. In **Servizio AWS **, scegli **RDS**.

1. In **Select your use case (Seleziona caso di utilizzo)**, selezionare **RDS – Add Role to Database (RDS – Aggiungi ruolo al database)**.

1. Scegli **Next (Successivo)**.

1. Nella pagina **Permissions policies** (Policy di autorizzazione), immetti il nome della policy nel campo **Search** (Cerca).

1. Quando viene visualizzata nell'elenco, selezionare la policy definita in precedenza utilizzando le istruzioni presenti in una delle seguenti sezioni:
   + [Creazione di una policy IAM per l'accesso alle risorse Amazon S3](AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.md)
   + [Creazione di una policy IAM per accedere alle AWS Lambda risorse](AuroraMySQL.Integrating.Authorizing.IAM.LambdaCreatePolicy.md)
   + [Creazione di una policy IAM per accedere alle CloudWatch risorse Logs](AuroraMySQL.Integrating.Authorizing.IAM.CWCreatePolicy.md)
   + [Creazione di una policy IAM per accedere alle AWS KMS risorse](AuroraMySQL.Integrating.Authorizing.IAM.KMSCreatePolicy.md)

1. Scegli **Next (Successivo)**.

1. IN **Role name (Nome ruolo)**, digitare un nome per il ruolo IAM, ad esempio `RDSLoadFromS3`. È anche possibile aggiungere un valore **Description (Descrizione)** facoltativo.

1. Selezionare **Crea ruolo**.

1. Completa le fasi descritte in [Associazione di un ruolo IAM a un cluster DB Amazon Aurora MySQL](AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.md).

# Associazione di un ruolo IAM a un cluster DB Amazon Aurora MySQL
<a name="AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster"></a>

Per consentire agli utenti del database in un cluster Amazon Aurora DB di accedere ad altri AWS servizi, associ il ruolo IAM che hai creato [Creazione di un ruolo IAM per consentire ad Amazon Aurora di accedere ai servizi AWS](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md) a quel cluster DB. È anche possibile configurare AWS per creare un nuovo ruolo IAM associando direttamente il servizio.

**Nota**  
Non è possibile associare un ruolo IAM a un cluster DB Aurora Serverless v1. Per ulteriori informazioni, consulta [Utilizzo di Amazon Aurora Serverless v1](aurora-serverless.md).  
Puoi associare un ruolo IAM a un cluster database Aurora Serverless v2.

Per associare un ruolo IAM a un cluster DB è necessario effettuare due operazioni:

1. Aggiungi il ruolo all'elenco dei ruoli associati per un cluster DB utilizzando la console RDS, il AWS CLI comando [add-role-to-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/add-role-to-db-cluster.html) o l'operazione API [AddRoleToDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddRoleToDBCluster.html)RDS.

   Puoi aggiungere un massimo di cinque ruoli IAM per ogni cluster DB Aurora.

1. Imposta il parametro a livello di cluster per il AWS servizio correlato sull'ARN per il ruolo IAM associato.

   La seguente tabella elenca i nomi dei parametri a livello di cluster per i ruoli IAM utilizzati per accedere ad altri servizi AWS .    
<a name="aurora_cluster_params_iam_roles"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.html)

Per associare un ruolo IAM per consentire al tuo cluster Amazon RDS di comunicare con altri AWS servizi per tuo conto, procedi nel seguente modo.

## Console
<a name="AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.CON"></a>

**Per associare un ruolo IAM a un cluster DB Aurora utilizzando la console**

1. Aprire la console RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Scegliere **Databases (Database)**.

1. Scegliere il nome del cluster DB Aurora da associare a un ruolo IAM per mostrarne i dettagli.

1. Nella scheda **Connettività e sicurezza**, nella sezione **Gestisci ruoli IAM**, esegui una delle seguenti operazioni:
   + **Seleziona ruoli IAM da aggiungere a questo cluster** (impostazione predefinita)
   + **Seleziona un servizio per connetterti a questo cluster**  
![\[Associare un ruolo IAM a un cluster DB\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/AuroraUserGuide/images/AuroraAssociateIAMRole-02.png)

1. Per utilizzare un ruolo IAM esistente, selezionalo dal menu, quindi scegli **Aggiungi ruolo**.

   Se l'aggiunta del ruolo ha esito positivo, il suo stato viene visualizzato come `Pending`, quindi `Available`.

1. Per connettere direttamente un servizio:

   1. Scegli **Seleziona un servizio per connetterti a questo cluster**.

   1. Scegli il servizio dal menu, quindi seleziona **Connetti un servizio**.

   1. Per **Connect cluster to *Service Name***, inserisci l'Amazon Resource Name (ARN) da utilizzare per connetterti al servizio, quindi scegli il servizio **Connect**.

   AWS crea un nuovo ruolo IAM per la connessione al servizio. Il suo stato viene visualizzato come `Pending`, quindi `Available`.

1. (Facoltativo) Per arrestare l'associazione di un ruolo IAM a un cluster database e rimuovere l'autorizzazione correlata, scegli il ruolo e quindi seleziona **Elimina**.

**Per impostare il parametro a livello di cluster per il ruolo IAM associato**

1. Nel riquadro di navigazione della console di RDS selezionare **Parameter groups (Gruppi di parametri)**.

1. Se si sta già utilizzando un gruppo di parametri database personalizzato, è possibile selezionare quel gruppo per usarlo invece di creare un nuovo gruppo di parametri del cluster DB. Se si sta utilizzando il gruppo di parametri del cluster DB predefinito, creare un nuovo gruppo di parametri del cluster DB, come descritto nei passaggi seguenti:

   1. Scegliere **Create parameter group (Crea gruppo di parametri)**.

   1. Per **Famiglia del gruppo di parametri**, scegli `aurora-mysql8.0` per un cluster di database compatibile con Aurora MySQL 8.0 o scegli `aurora-mysql5.7` per un cluster di database compatibile con Aurora MySQL 5.7.

   1. Per **Type (Tipo)**, scegliere **DB Cluster Parameter Group (Gruppo di parametri del cluster DB)**. 

   1. Per **Group name (Nome gruppo)**, digitare il nome del nuovo gruppo di parametri del cluster DB.

   1. Per **Description (Descrizione)**, digitare una descrizione per il nuovo gruppo di parametri del cluster DB.  
![\[Creare gruppo di parametri del cluster DB\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/AuroraUserGuide/images/AuroraAssociateIAMRole-03.png)

   1. Scegliere **Create (Crea)**. 

1. Nella pagina **Parameter groups (Gruppi di parametri)**, selezionare il gruppo di parametri del cluster DB e scegliere **Edit (Modifica)** per **Parameter group actions (Operazioni del gruppo di parametri)**.

1. Imposta i [parametri](#aurora_cluster_params_iam_roles) appropriati a livello di cluster sui valori ARN del ruolo IAM correlato.

   Ad esempio, è possibile impostare il parametro `aws_default_s3_role` su `arn:aws:iam::123456789012:role/AllowS3Access`.

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

1. Per modificare il gruppo di parametri del cluster di database per il cluster di database, completare le seguenti fasi:

   1. Scegliere **Databases (Database)**, quindi scegliere il cluster di database Aurora.

   1. Scegliere **Modify (Modifica)**.

   1. Scorrere fino a **Database options (Opzioni database)** e impostare **DB cluster parameter group (Gruppo di parametri del cluster di database)** sul gruppo di parametri del cluster di database.

   1. Scegli **Continue (Continua)**.

   1. Controllare le modifiche e scegliere **Apply immediately (Applica immediatamente)**.

   1. Scegliere **Modify cluster (Modifica cluster)**.

   1. Scegliere **Databases (Database)** e scegliere l'istanza primaria per il cluster di database.

   1. In **Actions (Operazioni)**, scegliere **Reboot (Riavvia)**.

      Al riavvio dell'istanza, il ruolo IAM viene associato al cluster DB.

      Per ulteriori informazioni sui gruppi di parametri del cluster, consulta [Parametri di configurazione Aurora MySQL](AuroraMySQL.Reference.ParameterGroups.md).

## CLI
<a name="AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.CLI"></a>

**Per associare un ruolo IAM a un cluster DB utilizzando AWS CLI**

1. Chiama il `add-role-to-db-cluster` comando da AWS CLI ARNs per aggiungere i tuoi ruoli IAM al cluster DB, come illustrato di seguito. 

   ```
   PROMPT> aws rds add-role-to-db-cluster --db-cluster-identifier my-cluster --role-arn arn:aws:iam::123456789012:role/AllowAuroraS3Role
   PROMPT> aws rds add-role-to-db-cluster --db-cluster-identifier my-cluster --role-arn arn:aws:iam::123456789012:role/AllowAuroraLambdaRole
   ```

1. Se si sta utilizzando il gruppo di parametri del cluster DB predefinito, creare un nuovo gruppo di parametri del cluster DB. Se si sta già utilizzando un gruppo di parametri database personalizzato, è possibile usare quel gruppo invece di creare un nuovo gruppo di parametri del cluster DB.

   Per creare un nuovo gruppo di parametri del cluster DB, chiamate il `create-db-cluster-parameter-group` comando da AWS CLI, come illustrato di seguito.

   ```
   PROMPT> aws rds create-db-cluster-parameter-group  --db-cluster-parameter-group-name AllowAWSAccess \
        --db-parameter-group-family aurora5.7 --description "Allow access to Amazon S3 and AWS Lambda"
   ```

   Per un cluster DB compatibile con Aurora MySQL 5.7, specificare `aurora-mysql5.7` per `--db-parameter-group-family`. Per un cluster database compatibile con Aurora MySQL 8.0, specificare `aurora-mysql8.0` per `--db-parameter-group-family`.

1. Impostare i parametri o i parametri appropriati a livello di cluster e i relativi valori ARN del ruolo IAM nel gruppo di parametri del cluster DB, come illustrato di seguito. 

   ```
   PROMPT> aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name AllowAWSAccess \
       --parameters "ParameterName=aws_default_s3_role,ParameterValue=arn:aws:iam::123456789012:role/AllowAuroraS3Role,method=pending-reboot" \
       --parameters "ParameterName=aws_default_lambda_role,ParameterValue=arn:aws:iam::123456789012:role/AllowAuroraLambdaRole,method=pending-reboot"
   ```

1. Modificare il cluster DB per usare il nuovo gruppo di parametri del cluster DB e riavviare il cluster, come mostrato di seguito.

   ```
   PROMPT> aws rds modify-db-cluster --db-cluster-identifier my-cluster --db-cluster-parameter-group-name AllowAWSAccess
   PROMPT> aws rds reboot-db-instance --db-instance-identifier my-cluster-primary
   ```

   Al riavvio dell'istanza, i ruoli IAM vengono associati al cluster DB.

   Per ulteriori informazioni sui gruppi di parametri del cluster, consulta [Parametri di configurazione Aurora MySQL](AuroraMySQL.Reference.ParameterGroups.md).

# Abilitazione della comunicazione di rete da Amazon Aurora ad altri servizi AWS
<a name="AuroraMySQL.Integrating.Authorizing.Network"></a>

Per utilizzare determinati altri AWS servizi con Amazon Aurora, la configurazione di rete del cluster Aurora DB deve consentire le connessioni in uscita agli endpoint per tali servizi. Le seguenti operazioni richiedono questa configurazione di rete.
+  Invocare funzioni. AWS Lambda Per informazioni su questa funzionalità, vedere [Chiamare una funzione Lambda con una funzione nativa Aurora MySQL](AuroraMySQL.Integrating.NativeLambda.md). 
+  Accesso ai file da Amazon S3. Per informazioni su questa funzionalità, vedere [Caricamento dei dati in un cluster DB Amazon Aurora MySQL da file di testo in un bucket Amazon S3](AuroraMySQL.Integrating.LoadFromS3.md) e [Salvataggio dei dati da un cluster DB Amazon Aurora MySQL nei file di testo in un bucket Amazon S3](AuroraMySQL.Integrating.SaveIntoS3.md). 
+ Accesso agli AWS KMS endpoint. AWS KMS l'accesso è necessario per utilizzare i flussi di attività del database con Aurora MySQL. Per informazioni su questa funzionalità, vedere [Monitoraggio di Amazon Aurora tramite i flussi di attività del database](DBActivityStreams.md).
+ Accesso agli endpoint AI. SageMaker SageMaker L'accesso all'intelligenza artificiale è necessario per utilizzare l'apprendimento automatico SageMaker AI con Aurora MySQL. Per informazioni su questa funzionalità, vedere [Utilizzo di machine learning di Amazon Aurora con Aurora MySQL](mysql-ml.md).

Quando non è possibile connettersi a un endpoint del servizio, Aurora restituisce il seguente messaggio di errore:

```
ERROR 1871 (HY000): S3 API returned error: Network Connection
```

```
ERROR 1873 (HY000): Lambda API returned error: Network Connection. Unable to connect to endpoint
```

```
ERROR 1815 (HY000): Internal error: Unable to initialize S3Stream
```

Per i flussi di attività del database che utilizzano Aurora MySQL, il flusso di attività smette di funzionare se il cluster DB non può accedere all'endpoint. AWS KMS In tal caso, Aurora notifica questo problema utilizzando eventi RDS.

Se riscontri questi messaggi mentre usi i AWS servizi corrispondenti, controlla se il tuo cluster Aurora DB è pubblico o privato. Se il cluster DB Aurora è privato, devi configurarlo per abilitare le connessioni.

Affinché un cluster DB Aurora sia pubblico, deve essere contrassegnato come accessibile pubblicamente. Se esamini i dettagli del cluster DB in, se questo è il caso Console di gestione AWS, l'**opzione Accessibile pubblicamente** è **Sì**. Inoltre, il cluster DB deve trovarsi in una sottorete pubblica di Amazon VPC. Per ulteriori informazioni sulle istanze database accessibili pubblicamente, consulta [Uso di un cluster database in un VPC](USER_VPC.WorkingWithRDSInstanceinaVPC.md). Per ulteriori informazioni sulle sottoreti pubbliche Amazon VPC, consulta [VPC e sottoreti](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html).

Se il cluster DB Aurora non è accessibile pubblicamente e si trova in una sottorete pubblica VPC significa che è privato. È possibile che si disponga di un cluster DB privato e si desideri utilizzare una delle funzionalità che richiedono questa configurazione di rete. In tal caso, configura il cluster in modo che possa connettersi agli indirizzi Internet tramite Network Address Translation (NAT). In alternativa ad Amazon S3, Amazon SageMaker AI e AWS Lambda, puoi invece configurare il VPC per avere un endpoint VPC per l'altro servizio associato alla tabella di routing del cluster DB, vedi. [Uso di un cluster database in un VPC](USER_VPC.WorkingWithRDSInstanceinaVPC.md) Per ulteriori informazioni sulla configurazione di NAT in VPC, consulta [Gateway NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html). Per ulteriori informazioni sulla configurazione degli endpoint VPC, consulta [Endpoint VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html). Puoi anche creare un endpoint del gateway S3 per accedere al bucket S3. Per ulteriori informazioni, consulta [Endpoint gateway per Amazon S3](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html).

Potresti anche dover aprire le porte temporanee per le tue liste di controllo degli accessi alla rete (ACLs) nelle regole in uscita per il tuo gruppo di sicurezza VPC. Per ulteriori informazioni sulle porte temporanee per la rete ACLs, consulta Porte temporanee nella Guida per [l'utente di *Amazon* Virtual](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports) Private Cloud.

## Argomenti correlati
<a name="AuroraMySQL.Integrating.Authorizing.RelatedTopics"></a>
+ [Integrazione di Aurora con altri servizi AWS](Aurora.Integrating.md)
+ [Gestione di un cluster DB Amazon Aurora](CHAP_Aurora.md)

# Caricamento dei dati in un cluster DB Amazon Aurora MySQL da file di testo in un bucket Amazon S3
<a name="AuroraMySQL.Integrating.LoadFromS3"></a><a name="load_from_s3"></a><a name="load_data"></a><a name="load_xml"></a>

Puoi usare l'istruzione `LOAD DATA FROM S3` o `LOAD XML FROM S3` per caricare i dati dai file memorizzati in un bucket Amazon S3. In Aurora MySQL, i file vengono prima archiviati sul disco locale e quindi importati nel database. Al termine delle importazioni nel database, i file locali vengono eliminati.

**Nota**  
Il caricamento dei dati in una tabella dai file di testo non è supportato in Aurora Serverless v1. È supportata per Aurora Serverless v2.

**Contents**
+ [Accesso di Aurora a Amazon S3;](#AuroraMySQL.Integrating.LoadFromS3.Authorize)
+ [Concessione dei privilegi per caricare dati in Amazon Aurora MySQL](#AuroraMySQL.Integrating.LoadFromS3.Grant)
+ [Specifica del  percorso (URI) in un bucket Amazon S3](#AuroraMySQL.Integrating.LoadFromS3.URI)
+ [LOAD DATA FROM S3](#AuroraMySQL.Integrating.LoadFromS3.Text)
  + [Sintassi](#AuroraMySQL.Integrating.LoadFromS3.Text.Syntax)
  + [Parameters](#AuroraMySQL.Integrating.LoadFromS3.Text.Parameters)
  + [Utilizzo di un manifest per specificare i file di dati da caricare](#AuroraMySQL.Integrating.LoadFromS3.Manifest)
    + [Verifica dei file caricati utilizzando la tabella aurora\$1s3\$1load\$1history](#AuroraMySQL.Integrating.LoadFromS3.Manifest.History)
  + [Esempi](#AuroraMySQL.Integrating.LoadFromS3.Text.Examples)
+ [LOAD XML FROM S3](#AuroraMySQL.Integrating.LoadFromS3.XML)
  + [Sintassi](#AuroraMySQL.Integrating.LoadFromS3.XML.Syntax)
  + [Parameters](#AuroraMySQL.Integrating.LoadFromS3.XML.Parameters)

## Accesso di Aurora a Amazon S3;
<a name="AuroraMySQL.Integrating.LoadFromS3.Authorize"></a>

Prima di poter caricare i dati da un bucket Amazon S3, è necessario innanzitutto concedere l'autorizzazione al cluster DB Aurora MySQL per accedere ad Amazon S3.

**Per concedere ad Aurora MySQL l'accesso ad Amazon S3**

1. Crea una policy AWS Identity and Access Management (IAM) che fornisca le autorizzazioni per bucket e oggetti che consentono al cluster Aurora MySQL DB di accedere ad Amazon S3. Per istruzioni, consulta [Creazione di una policy IAM per l'accesso alle risorse Amazon S3](AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.md).
**Nota**  
In Aurora MySQL 3.05 e versioni successive, è possibile caricare oggetti crittografati utilizzando AWS KMS keys gestite dal cliente. A tale scopo, includi l'autorizzazione `kms:Decrypt` nella policy IAM. Per ulteriori informazioni, consulta [Creazione di una policy IAM per accedere alle AWS KMS risorse](AuroraMySQL.Integrating.Authorizing.IAM.KMSCreatePolicy.md).  
Non è necessaria questa autorizzazione per caricare oggetti crittografati utilizzando Chiavi gestite da AWS o chiavi gestite da Amazon S3 (SSE-S3).

1. Creare un ruolo IAM e collegare la policy IAM creata in [Creazione di una policy IAM per l'accesso alle risorse Amazon S3](AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.md) al nuovo ruolo IAM. Per istruzioni, consulta [Creazione di un ruolo IAM per consentire ad Amazon Aurora di accedere ai servizi AWS](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md).

1. Assicurati che il cluster DB stia utilizzando un gruppo di parametri del cluster DB personalizzato.

   Per ulteriori informazioni sulla creazione di un gruppo di parametri del cluster DB, consulta [Creazione di un gruppo di parametri del cluster DB in Amazon Aurora](USER_WorkingWithParamGroups.CreatingCluster.md).

1. Per Aurora MySQL versione 2, imposta il parametro del cluster di database `aurora_load_from_s3_role` o `aws_default_s3_role` sul nome della risorsa Amazon (ARN) del nuovo ruolo IAM. Se un ruolo IAM non è specificato per `aurora_load_from_s3_role`, Aurora utilizza il ruolo IAM specificato in `aws_default_s3_role`.

   Per Aurora MySQL versione 3, utilizza `aws_default_s3_role`.

   Se il cluster fa parte di un database globale Aurora, imposta questo parametro per ogni cluster Aurora nel database globale. Sebbene solo il cluster primario in un database globale Aurora può caricare i dati, un altro cluster potrebbe essere promosso dal meccanismo di failover e diventare il cluster primario.

   Per ulteriori informazioni sui parametri del cluster DB, vedi [Parametri dell’istanza database e del cluster database di Amazon Aurora](USER_WorkingWithDBClusterParamGroups.md#Aurora.Managing.ParameterGroups).

1. Per consentire l'accesso ad Aurora MySQL agli utenti del database in un cluster DB Amazon S3, è necessario associare il ruolo creato in [Creazione di un ruolo IAM per consentire ad Amazon Aurora di accedere ai servizi AWS](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md) al cluster DB. Per un database globale Aurora, associa il ruolo a ogni cluster Aurora nel database globale. Per informazioni su come associare un ruolo IAM a un cluster DB, vedi [Associazione di un ruolo IAM a un cluster DB Amazon Aurora MySQL](AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.md).

1. Configura il cluster DB Aurora MySQL per consentire le connessioni in uscita ad Amazon S3. Per istruzioni, consulta [Abilitazione della comunicazione di rete da Amazon Aurora ad altri servizi AWS](AuroraMySQL.Integrating.Authorizing.Network.md). 

   Se il cluster DB non è accessibile pubblicamente e si trova in una sottorete pubblica VPC significa che è privato. Puoi creare un endpoint del gateway S3 per accedere al bucket S3. Per ulteriori informazioni, consulta [Endpoint gateway per Amazon S3](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html).

    Per un database globale Aurora, abilita le connessioni in uscita per ogni cluster Aurora nel database globale. 

## Concessione dei privilegi per caricare dati in Amazon Aurora MySQL
<a name="AuroraMySQL.Integrating.LoadFromS3.Grant"></a>

L'utente del database che invia l'istruzione `LOAD DATA FROM S3` o `LOAD XML FROM S3` deve avere un ruolo o privilegio specifico per rilasciare una delle due istruzioni. In Aurora MySQL versione 3, concedi il ruolo `AWS_LOAD_S3_ACCESS`. In Aurora MySQL versione 2, concedi il privilegio `LOAD FROM S3`. All'utente amministrativo per un cluster di database è concesso il ruolo o il privilegio appropriato per impostazione predefinita. Puoi concedere il privilegio a un altro utente usando le seguenti istruzioni.

 Utilizzare la seguente istruzione per Aurora MySQL versione 3: 

```
GRANT AWS_LOAD_S3_ACCESS TO 'user'@'domain-or-ip-address'
```

**Suggerimento**  
Quando utilizzi la tecnica basata sul ruolo in Aurora MySQL versione 3, puoi anche attivare il ruolo utilizzando l'istruzione `SET ROLE role_name` o `SET ROLE ALL`. Se non si ha familiarità con il sistema dei ruoli MySQL 8.0, è possibile ottenere ulteriori informazioni in [Privilegio basato sui ruoli](AuroraMySQL.Compare-80-v3.md#AuroraMySQL.privilege-model). Per maggiori dettagli, consulta la pagina [Using roles](https://dev.mysql.com/doc/refman/8.0/en/roles.html) nel *Manuale di riferimento di MySQL*.  
Questo vale solo per la sessione attiva corrente. Quando ti riconnetti, devi eseguire di nuovo l’istruzione `SET ROLE` per concedere i privilegi. Per ulteriori informazioni, consulta [Istruzione SET ROLE](https://dev.mysql.com/doc/refman/8.0/en/set-role.html) nel *Manuale di riferimento di MySQL*.  
Puoi utilizzare il parametro `activate_all_roles_on_login` del cluster di database per attivare automaticamente tutti i ruoli quando un utente si connette a un'istanza database. Quando questo parametro è impostato, non è necessario chiamare esplicitamente l’istruzione `SET ROLE` per attivare un ruolo. Per ulteriori informazioni, consulta [activate\$1all\$1roles\$1on\$1login](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_activate_all_roles_on_login) nel *Manuale di riferimento di MySQL*.  
Tuttavia, è necessario chiamare esplicitamente `SET ROLE ALL` all’inizio di una stored procedure per attivare il ruolo, quando la stored procedure viene chiamata da un altro utente.

Utilizza la seguente istruzione per Aurora MySQL versione 2:

```
GRANT LOAD FROM S3 ON *.* TO 'user'@'domain-or-ip-address'
```

Il ruolo `AWS_LOAD_S3_ACCESS` e il privilegio `LOAD FROM S3` sono specifici di Amazon Aurora e non sono disponibili per i database MySQL esterni o le istanze database RDS per MySQL. Se è stata impostata la replica tra un cluster di database Aurora come origine di replica e un database MySQL come client di replica, l’istruzione `GRANT` per il ruolo o il privilegio causa l’arresto della replica con un errore. Puoi ignorare l'errore in modo sicuro per riprendere la replica. Per ignorare l'errore su un'istanza RDS per MySQL, utilizza la procedura [mysql\$1rds\$1skip\$1repl\$1error](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql_rds_skip_repl_error.html). Per ignorare l'errore su un database MySQL esterno, usa la variabile di sistema [slave\$1skip\$1errors](https://dev.mysql.com/doc/refman/5.7/en/replication-options-replica.html#sysvar_slave_skip_errors) (Aurora MySQL versione 2) o [replica\$1skip\$1errors](https://dev.mysql.com/doc/refman/8.0/en/replication-options-replica.html#sysvar_replica_skip_errors) (Aurora MySQL versione 3).

**Nota**  
L’utente del database deve disporre di privilegi `INSERT` per il database in cui carica i dati.

## Specifica del  percorso (URI) in un bucket Amazon S3
<a name="AuroraMySQL.Integrating.LoadFromS3.URI"></a>

La sintassi per specificare il percorso (URI) dei file archiviati su un bucket Amazon S3 è la seguente.

```
s3-region://amzn-s3-demo-bucket/file-name-or-prefix
```

Il percorso include i seguenti valori:
+ `region`(opzionale): la AWS regione che contiene il bucket Amazon S3 da cui caricare. Questo valore è facoltativo. Se non specifichi un valore per `region`, Aurora carica il file da Amazon S3 nella stessa regione del cluster DB.
+ `bucket-name` – Il nome del bucket Amazon S3 che contiene i dati da caricare. Sono supportati i prefissi degli oggetti che identificano un percorso di cartella virtuale.
+ `file-name-or-prefix` – Il nome del file di testo Amazon S3 o XML o un prefisso che identifica uno o più file di testo o XML da caricare. È anche possibile specificare un file manifest che identifica uno o più file di testo da caricare. Per ulteriori informazioni sull'utilizzo di un file manifest per caricare file di testo da Amazon S3, consulta [Utilizzo di un manifest per specificare i file di dati da caricare](#AuroraMySQL.Integrating.LoadFromS3.Manifest).

**Copia dell'URI dei file in un bucket S3**

1. Accedi a 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, scegli **Bucket**, quindi scegli il bucket di cui desideri copiare l'URI.

1. Seleziona il prefisso o il file che desideri caricare da S3.

1. Scegli **Copia URI S3**.

## LOAD DATA FROM S3
<a name="AuroraMySQL.Integrating.LoadFromS3.Text"></a>

Puoi usare l'istruzione `LOAD DATA FROM S3` per caricare i dati da un qualsiasi formato di file di testo supportato dall'istruzione MySQL [LOAD DATA INFILE](https://dev.mysql.com/doc/refman/8.0/en/load-data.html), ad esempio i dati di testo delimitati da virgola. I file compressi non sono supportati.

**Nota**  
Assicurati che il cluster database Aurora MySQL consenta le connessioni in uscita a S3. Per ulteriori informazioni, consulta [Abilitazione della comunicazione di rete da Amazon Aurora ad altri servizi AWS](AuroraMySQL.Integrating.Authorizing.Network.md).

### Sintassi
<a name="AuroraMySQL.Integrating.LoadFromS3.Text.Syntax"></a>

```
LOAD DATA [FROM] S3 [FILE | PREFIX | MANIFEST] 'S3-URI'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [PARTITION (partition_name,...)]
    [CHARACTER SET charset_name]
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number {LINES | ROWS}]
    [(col_name_or_user_var,...)]
    [SET col_name = expr,...]
```

**Nota**  
In Aurora MySQL 3.05 e versioni successive, la parola chiave `FROM` è facoltativa.

### Parameters
<a name="AuroraMySQL.Integrating.LoadFromS3.Text.Parameters"></a>

L'istruzione `LOAD DATA FROM S3` utilizza i seguenti parametri obbligatori e facoltativi. Altri dettagli su questi parametri sono disponibili in [Istruzione LOAD DATA](https://dev.mysql.com/doc/refman/8.0/en/load-data.html) nella documentazione di MySQL.

**FILE \$1 PREFIX \$1 MANIFEST**  
Indica se caricare i dati da un singolo file, da tutti i file che corrispondono a un determinato prefisso o da tutti i file in un manifesto specificato. `FILE` è il valore predefinito.

**S3-URI**  
Specifica l'URI per un file di testo o manifesto da caricare o un prefisso Amazon S3 da utilizzare. Specificare l'URI usando la sintassi descritta in [Specifica del  percorso (URI) in un bucket Amazon S3](#AuroraMySQL.Integrating.LoadFromS3.URI).

**REPLACE \$1 IGNORE**  
Determina quale azione intraprendere se una riga di input ha gli stessi valori chiave univoci di una riga esistente nella tabella del database.  
+ Specifica `REPLACE` se la riga di input deve sostituire la riga esistente nella tabella.
+ Specifica `IGNORE` se la riga di input deve essere scartata.

**INTO TABLE**  
Identifica il nome della tabella del database in cui caricare le righe di input.

**PARTITION**  
Richiede che tutte le righe di input vengano inserite nelle partizioni identificate dall'elenco specificato di nomi di partizione separati da virgola. Se una riga di input non può essere inserita in una delle partizioni specificate, l'istruzione non riesce e viene restituito un errore.

**CHARACTER SET**  
Identifica il set di caratteri dei dati nel file di input.

**FIELDS \$1 COLUMNS**  
Identifica il modo in cui i campi o le colonne nel file di input sono delimitati. I campi sono delimitati da tabulazioni per impostazione predefinita.

**LINES**  
Identifica il modo in cui le righe nel file di input sono delimitati. Le linee sono delimitate da un carattere di nuova riga (`'\n'`) per impostazione predefinita.

**IGNORA *number* RIGHE \$1 RIGHE**  
Specifica di ignorare un determinato numero di righe all'inizio del file di input. Ad esempio, è possibile utilizzare `IGNORE 1 LINES` per ignorare la riga di intestazione iniziale contenente i nomi di colonna o `IGNORE 2 ROWS` per ignorare le prime due righe di dati nel file di input. Se si utilizza anche `PREFIX`, `IGNORE` ignora un numero specifico di righe all'inizio del primo file di input.

**col\$1name\$1or\$1user\$1var, ...**  
Specifica un elenco separato da virgola di uno o più nomi di colonne o variabili utente che identificano quali colonne caricare in base al nome. Il nome di una variabile utente utilizzata per questo scopo deve corrispondere al nome di un elemento del file di testo, preceduto da @. Puoi utilizzare le variabili utente per memorizzare i valori dei campi corrispondenti per un successivo riutilizzo.  
Ad esempio, la seguente istruzione carica la prima colonna dal file di input nella prima colonna di `table1` e imposta il valore della colonna `table_column2` in `table1` sul valore di input della seconda colonna diviso per 100.  

```
LOAD DATA FROM S3 's3://amzn-s3-demo-bucket/data.txt'
    INTO TABLE table1
    (column1, @var1)
    SET table_column2 = @var1/100;
```

**SET**  
Specifica l'elenco delle operazioni di assegnazione separate da virgole che imposta i valori delle colonne della tabella sui valori non inclusi nel file di input.  
Ad esempio, la seguente istruzione imposta le prime due colonne di `table1` sui valori delle prime due colonne del file di input e imposta il valore della colonna `column3` in `table1` sul timestamp corrente.  

```
LOAD DATA FROM S3  's3://amzn-s3-demo-bucket/data.txt'
    INTO TABLE table1
    (column1, column2)
    SET column3 = CURRENT_TIMESTAMP;
```
È possibile utilizzare le sottoquery nella parte destra delle assegnazioni `SET`. Per una sottoquery che restituisce un valore da assegnare a una colonna, puoi utilizzare solo una sottoquery scalare. Inoltre, non è possibile utilizzare una sottoquery per selezionare dalla tabella che viene caricata. 

Non puoi usare la parola chiave `LOCAL` dell'istruzione `LOAD DATA FROM S3` se stai caricando i dati da un bucket Amazon S3.

### Utilizzo di un manifest per specificare i file di dati da caricare
<a name="AuroraMySQL.Integrating.LoadFromS3.Manifest"></a>

È possibile utilizzare l'istruzione `LOAD DATA FROM S3` con la parola chiave `MANIFEST` per specificare un file manifest in formato JSON che elenca i file di testo da caricare in una tabella nel cluster DB.

Il seguente schema JSON descrive il formato e il contenuto di un file manifest.

```
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "additionalProperties": false,
    "definitions": {},
    "id": "Aurora_LoadFromS3_Manifest",
    "properties": {
        "entries": {
            "additionalItems": false,
            "id": "/properties/entries",
            "items": {
                "additionalProperties": false,
                "id": "/properties/entries/items",
                "properties": {
                    "mandatory": {
                        "default": "false",
                        "id": "/properties/entries/items/properties/mandatory",
                        "type": "boolean"
                    },
                    "url": {
                        "id": "/properties/entries/items/properties/url",
                        "maxLength": 1024,
                        "minLength": 1,
                        "type": "string"
                    }
                },
                "required": [
                    "url"
                ],
                "type": "object"
            },
            "type": "array",
            "uniqueItems": true
        }
    },
    "required": [
        "entries"
    ],
    "type": "object"
}
```

Ogni `url` nel manifest deve specificare un URL con il nome bucket e il percorso completo dell'oggetto per il file, non solo un prefisso. Puoi utilizzare un manifest per caricare file da diversi bucket, regioni o file che non condividono lo stesso prefisso. Se una regione non è specificata nell'URL, viene utilizzata la regione del cluster DB Aurora di destinazione. L'esempio seguente mostra un file manifest che carica quattro file da diversi bucket.

```
{
  "entries": [
    {
      "url":"s3://aurora-bucket/2013-10-04-customerdata", 
      "mandatory":true
    },
    {
      "url":"s3-us-west-2://aurora-bucket-usw2/2013-10-05-customerdata",
      "mandatory":true
    },
    {
      "url":"s3://aurora-bucket/2013-10-04-customerdata", 
      "mandatory":false
    },
    {
      "url":"s3://aurora-bucket/2013-10-05-customerdata"
    }
  ]
}
```

Il flag facoltativo `mandatory` specifica se `LOAD DATA FROM S3` deve restituire un errore qualora il file non venga trovato. L'impostazione predefinita del flag `mandatory` è `false`. Indipendentemente dall'impostazione di `mandatory`, `LOAD DATA FROM S3` termina se non viene trovato alcun file.

I file manifest possono avere qualsiasi estensione. L'esempio seguente esegue l'istruzione `LOAD DATA FROM S3` con manifest nell'esempio precedente, che viene denominato **customer.manifest**. 

```
LOAD DATA FROM S3 MANIFEST 's3-us-west-2://aurora-bucket/customer.manifest'
    INTO TABLE CUSTOMER
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (ID, FIRSTNAME, LASTNAME, EMAIL);
```

Al termine dell'istruzione, per ogni file caricato viene scritta una voce nella tabella `aurora_s3_load_history`. 

#### Verifica dei file caricati utilizzando la tabella aurora\$1s3\$1load\$1history
<a name="AuroraMySQL.Integrating.LoadFromS3.Manifest.History"></a>

Ogni istruzione `LOAD DATA FROM S3` con esito positivo aggiorna la tabella `aurora_s3_load_history` nello schema `mysql` con una voce per ogni file che è stato caricato.

Dopo aver eseguito l'istruzione `LOAD DATA FROM S3`, puoi verificare quali file sono stati caricati eseguendo una query sulla tabella `aurora_s3_load_history`. Per visualizzare i file caricati da un'iterazione dell'istruzione, utilizza la clausola `WHERE` per filtrare i record sull'URI Amazon S3 per il file manifest utilizzato nell'istruzione. Se hai utilizzato lo stesso file manifest di prima, filtra i risultati utilizzando il campo `timestamp`.

```
select * from mysql.aurora_s3_load_history where load_prefix = 'S3_URI';
```

La tabella seguente descrive i campi della tabella `aurora_s3_load_history`.


| Campo | Descrizione | 
| --- | --- | 
| `load_prefix` |  L'URI specificato nell'istruzione di caricamento. L'URI può mappare a uno dei seguenti elementi: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.LoadFromS3.html)  | 
|  `file_name`  |  Il nome di un file che è stato caricato in Aurora da Amazon S3 utilizzando l'URI identificato nel campo `load_prefix`.  | 
| `version_number` |  Il numero di versione del file identificato dal campo `file_name` che è stato caricato se il bucket Amazon S3 ha un numero di versione.  | 
|  `bytes_loaded`  |  Le dimensioni del file caricato in byte.  | 
| `load_timestamp`  |  Timestamp relativo al momento del completamento dell'istruzione `LOAD DATA FROM S3`.  | 

### Esempi
<a name="AuroraMySQL.Integrating.LoadFromS3.Text.Examples"></a>

La seguente istruzione carica i dati da un bucket Amazon S3 che si trova nella stessa regione del cluster DB Aurora. L'istruzione legge i dati delimitati da virgole nel file `customerdata.txt` che si trova nel bucket Amazon S3 *amzn-s3-demo-bucket* e carica i dati nella tabella `store-schema.customer-table`.

```
LOAD DATA FROM S3 's3://amzn-s3-demo-bucket/customerdata.csv' 
    INTO TABLE store-schema.customer-table
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (ID, FIRSTNAME, LASTNAME, ADDRESS, EMAIL, PHONE);
```

La seguente istruzione carica i dati da un bucket Amazon S3 che si trova in una regione diversa rispetto al cluster DB Aurora. L'istruzione legge i dati delimitati da virgole da tutti i file che corrispondono al prefisso di oggetto `employee-data` nel bucket Amazon S3 *amzn-s3-demo-bucket* nella regione `us-west-2` e carica i dati nella tabella `employees`.

```
LOAD DATA FROM S3 PREFIX 's3-us-west-2://amzn-s3-demo-bucket/employee_data'
    INTO TABLE employees
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (ID, FIRSTNAME, LASTNAME, EMAIL, SALARY);
```

La seguente istruzione carica i dati dai file specificati in un file manifest JSON denominato q1\$1sales.json nella tabella `sales`. 

```
LOAD DATA FROM S3 MANIFEST 's3-us-west-2://amzn-s3-demo-bucket1/q1_sales.json'
    INTO TABLE sales
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (MONTH, STORE, GROSS, NET);
```

## LOAD XML FROM S3
<a name="AuroraMySQL.Integrating.LoadFromS3.XML"></a>

Puoi usare l'istruzione `LOAD XML FROM S3` per caricare i dati dai file XML memorizzati in un bucket Amazon S3 in uno dei seguenti tre diversi formati XML:
+ I nomi di colonna come attributi di un elemento `<row>`. Il valore dell'attributo identifica il contenuto del campo della tabella.

  ```
  <row column1="value1" column2="value2" .../>
  ```
+ I nomi di colonna come elementi figlio di un elemento `<row>`. Il valore dell'elemento figlio identifica il contenuto del campo della tabella.

  ```
  <row>
    <column1>value1</column1>
    <column2>value2</column2>
  </row>
  ```
+ I nomi di colonna nell'attributo `name` dell'elemento `<field>` in un elemento `<row>`. Il valore dell'elemento `<field>` identifica il contenuto del campo della tabella. 

  ```
  <row>
    <field name='column1'>value1</field>
    <field name='column2'>value2</field>
  </row>
  ```

### Sintassi
<a name="AuroraMySQL.Integrating.LoadFromS3.XML.Syntax"></a>

```
LOAD XML FROM S3 'S3-URI'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [PARTITION (partition_name,...)]
    [CHARACTER SET charset_name]
    [ROWS IDENTIFIED BY '<element-name>']
    [IGNORE number {LINES | ROWS}]
    [(field_name_or_user_var,...)]
    [SET col_name = expr,...]
```

### Parameters
<a name="AuroraMySQL.Integrating.LoadFromS3.XML.Parameters"></a>

L'istruzione `LOAD XML FROM S3` utilizza i seguenti parametri obbligatori e facoltativi. Altri dettagli su questi parametri sono disponibili in [Istruzione LOAD XML](https://dev.mysql.com/doc/refman/8.0/en/load-xml.html) nella documentazione di MySQL.

**FILE \$1 PREFIX**  
Indica se caricare i dati da un singolo file o da tutti i file che corrispondono a un determinato prefisso. `FILE` è il valore predefinito.

**REPLACE \$1 IGNORE**  
Determina quale azione intraprendere se una riga di input ha gli stessi valori chiave univoci di una riga esistente nella tabella del database.  
+ Specifica `REPLACE` se la riga di input deve sostituire la riga esistente nella tabella.
+ Specifica `IGNORE` per ignorare la riga di input. `IGNORE` è il valore predefinito.

**INTO TABLE**  
Identifica il nome della tabella del database in cui caricare le righe di input.

**PARTITION**  
Richiede che tutte le righe di input vengano inserite nelle partizioni identificate dall'elenco specificato di nomi di partizione separati da virgola. Se una riga di input non può essere inserita in una delle partizioni specificate, l'istruzione non riesce e viene restituito un errore.

**CHARACTER SET**  
Identifica il set di caratteri dei dati nel file di input.

**ROWS IDENTIFIED BY**  
Identifica il nome dell'elemento che identifica una riga nel file di input. Il valore predefinito è `<row>`.

**IGNORA *number* RIGHE \$1 RIGHE**  
Specifica di ignorare un determinato numero di righe all'inizio del file di input. Ad esempio, è possibile utilizzare `IGNORE 1 LINES` per ignorare la prima riga del file di testo o `IGNORE 2 ROWS` per ignorare le prime due righe di dati nell'XML di input.

**field\$1name\$1or\$1user\$1var, ...**  
Specifica un elenco separato da virgola di uno o più nomi di elementi XML o variabili utente che identificano quali elementi caricare in base al nome. Il nome di una variabile utente utilizzata per questo scopo deve corrispondere al nome di un elemento del file XML, preceduto da @. Puoi utilizzare le variabili utente per memorizzare i valori dei campi corrispondenti per un successivo riutilizzo.  
Ad esempio, la seguente istruzione carica la prima colonna dal file di input nella prima colonna di `table1` e imposta il valore della colonna `table_column2` in `table1` sul valore di input della seconda colonna diviso per 100.  

```
LOAD XML FROM S3 's3://amzn-s3-demo-bucket/data.xml'
   INTO TABLE table1
   (column1, @var1)
   SET table_column2 = @var1/100;
```

**SET**  
Specifica l'elenco delle operazioni di assegnazione separate da virgole che imposta i valori delle colonne della tabella sui valori non inclusi nel file di input.  
Ad esempio, la seguente istruzione imposta le prime due colonne di `table1` sui valori delle prime due colonne del file di input e imposta il valore della colonna `column3` in `table1` sul timestamp corrente.  

```
LOAD XML FROM S3 's3://amzn-s3-demo-bucket/data.xml'
   INTO TABLE table1
   (column1, column2)
   SET column3 = CURRENT_TIMESTAMP;
```
È possibile utilizzare le sottoquery nella parte destra delle assegnazioni `SET`. Per una sottoquery che restituisce un valore da assegnare a una colonna, puoi utilizzare solo una sottoquery scalare. Inoltre, non è possibile utilizzare una sottoquery per eseguire selezioni nella tabella caricata.

# Salvataggio dei dati da un cluster DB Amazon Aurora MySQL nei file di testo in un bucket Amazon S3
<a name="AuroraMySQL.Integrating.SaveIntoS3"></a><a name="save_into_s3"></a><a name="select_into_outfile"></a>

Puoi utilizzare l’istruzione `SELECT INTO OUTFILE S3` per eseguire una query sui dati da un cluster di database Amazon Aurora MySQL ed eseguirne il salvataggio nei file di testo archiviati in un bucket Amazon S3. In Aurora MySQL, i file vengono prima archiviati sul disco locale e quindi esportati in S3. Al termine delle esportazioni, i file locali vengono eliminati.

Puoi crittografare il bucket Amazon S3 utilizzando una chiave gestita Amazon S3 (SSE-S3) o (SSE-KMS: AWS KMS key o chiave gestita dal cliente). Chiave gestita da AWS 

L’istruzione `LOAD DATA FROM S3` può utilizzare i file creati dall’istruzione `SELECT INTO OUTFILE S3` per caricare i dati in un cluster di database Aurora. Per ulteriori informazioni, consulta [Caricamento dei dati in un cluster DB Amazon Aurora MySQL da file di testo in un bucket Amazon S3](AuroraMySQL.Integrating.LoadFromS3.md).

**Nota**  
Questa funzionalità non è supportata per i cluster di database Aurora Serverless v1. È supportata per i cluster di database Aurora Serverless v2.  
Puoi anche salvare i dati del cluster DB e i dati degli snapshot del cluster DB su Amazon S3 utilizzando AWS CLI, o Console di gestione AWS l'API Amazon RDS. Per ulteriori informazioni, consultare [Esportazione dei dati del cluster database in Amazon S3](export-cluster-data.md) e [Esportazione dei dati dello snapshot del cluster di database in Amazon S3](aurora-export-snapshot.md).

**Contents**
+ [Accesso di Aurora MySQL a Amazon S3;](#AuroraMySQL.Integrating.SaveIntoS3.Authorize)
+ [Concessione dei privilegi per salvare dati in Aurora MySQL](#AuroraMySQL.Integrating.SaveIntoS3.Grant)
+ [Specifica di un percorso in un bucket Amazon S3](#AuroraMySQL.Integrating.SaveIntoS3.URI)
+ [Creazione di un manifest per elencare i fili di dati](#AuroraMySQL.Integrating.SaveIntoS3.Manifest)
+ [SELECT INTO OUTFILE S3](#AuroraMySQL.Integrating.SaveIntoS3.Statement)
  + [Sintassi](#AuroraMySQL.Integrating.SaveIntoS3.Statement.Syntax)
  + [Parameters](#AuroraMySQL.Integrating.SaveIntoS3.Statement.Parameters)
  + [Considerazioni](#AuroraMySQL.Integrating.SaveIntoS3.Considerations)
  + [Esempi](#AuroraMySQL.Integrating.SaveIntoS3.Examples)

## Accesso di Aurora MySQL a Amazon S3;
<a name="AuroraMySQL.Integrating.SaveIntoS3.Authorize"></a>

Prima di poter salvare i dati in un bucket Amazon S3, è necessario innanzitutto concedere l'autorizzazione al cluster DB Aurora MySQL per accedere ad Amazon S3.

**Per concedere ad Aurora MySQL l'accesso ad Amazon S3**

1. Crea una policy AWS Identity and Access Management (IAM) che fornisca le autorizzazioni per bucket e oggetti che consentono al cluster Aurora MySQL DB di accedere ad Amazon S3. Per istruzioni, consulta [Creazione di una policy IAM per l'accesso alle risorse Amazon S3](AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.md).
**Nota**  
In Aurora MySQL versione 3.05 e successive, è possibile crittografare gli oggetti utilizzando chiavi gestite dal cliente. AWS KMS A tale scopo, includi l'autorizzazione `kms:GenerateDataKey` nella policy IAM. Per ulteriori informazioni, consulta [Creazione di una policy IAM per accedere alle AWS KMS risorse](AuroraMySQL.Integrating.Authorizing.IAM.KMSCreatePolicy.md).  
Non è necessaria questa autorizzazione per crittografare gli oggetti utilizzando Chiavi gestite da AWS o le chiavi gestite di Amazon S3 (SSE-S3).

1. Creare un ruolo IAM e collegare la policy IAM creata in [Creazione di una policy IAM per l'accesso alle risorse Amazon S3](AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.md) al nuovo ruolo IAM. Per istruzioni, consulta [Creazione di un ruolo IAM per consentire ad Amazon Aurora di accedere ai servizi AWS](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md).

1. Per Aurora MySQL versione 2, imposta il parametro del cluster di database `aurora_select_into_s3_role` o `aws_default_s3_role` sul nome della risorsa Amazon (ARN) del nuovo ruolo IAM. Se un ruolo IAM non è specificato per `aurora_select_into_s3_role`, Aurora utilizza il ruolo IAM specificato in `aws_default_s3_role`.

   Per Aurora MySQL versione 3, utilizza `aws_default_s3_role`.

   Se il cluster fa parte di un database globale Aurora, imposta questo parametro per ogni cluster Aurora nel database globale.

   Per ulteriori informazioni sui parametri del cluster DB, vedi [Parametri dell’istanza database e del cluster database di Amazon Aurora](USER_WorkingWithDBClusterParamGroups.md#Aurora.Managing.ParameterGroups).

1. Per consentire l'accesso ad Aurora MySQL agli utenti del database in un cluster DB Amazon S3, è necessario associare il ruolo creato in [Creazione di un ruolo IAM per consentire ad Amazon Aurora di accedere ai servizi AWS](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md) al cluster DB.

   Per un database globale Aurora, associa il ruolo a ogni cluster Aurora nel database globale.

   Per informazioni su come associare un ruolo IAM a un cluster DB, vedi [Associazione di un ruolo IAM a un cluster DB Amazon Aurora MySQL](AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.md).

1. Configura il cluster DB Aurora MySQL per consentire le connessioni in uscita ad Amazon S3. Per istruzioni, consulta [Abilitazione della comunicazione di rete da Amazon Aurora ad altri servizi AWS](AuroraMySQL.Integrating.Authorizing.Network.md). 

    Per un database globale Aurora, abilita le connessioni in uscita per ogni cluster Aurora nel database globale. 

## Concessione dei privilegi per salvare dati in Aurora MySQL
<a name="AuroraMySQL.Integrating.SaveIntoS3.Grant"></a>

L'utente del database che emette l'istruzione `SELECT INTO OUTFILE S3` deve avere un ruolo o un privilegio specifico. In Aurora MySQL versione 3, concedi il ruolo `AWS_SELECT_S3_ACCESS`. In Aurora MySQL versione 2, concedi il privilegio `SELECT INTO S3`. All'utente amministrativo per un cluster di database è concesso il ruolo o il privilegio appropriato per impostazione predefinita. Puoi concedere il privilegio a un altro utente usando le seguenti istruzioni.

 Utilizzare la seguente istruzione per Aurora MySQL versione 3: 

```
GRANT AWS_SELECT_S3_ACCESS TO 'user'@'domain-or-ip-address'
```

**Suggerimento**  
Quando utilizzi la tecnica basata sul ruolo in Aurora MySQL versione 3, puoi anche attivare il ruolo utilizzando l'istruzione `SET ROLE role_name` o `SET ROLE ALL`. Se non si ha familiarità con il sistema dei ruoli MySQL 8.0, è possibile ottenere ulteriori informazioni in [Privilegio basato sui ruoli](AuroraMySQL.Compare-80-v3.md#AuroraMySQL.privilege-model). Per maggiori dettagli, consulta la pagina [Using roles](https://dev.mysql.com/doc/refman/8.0/en/roles.html) nel *Manuale di riferimento di MySQL*.  
Questo vale solo per la sessione attiva corrente. Quando ti riconnetti, devi eseguire di nuovo l’istruzione `SET ROLE` per concedere i privilegi. Per ulteriori informazioni, consulta [Istruzione SET ROLE](https://dev.mysql.com/doc/refman/8.0/en/set-role.html) nel *Manuale di riferimento di MySQL*.  
Puoi utilizzare il parametro `activate_all_roles_on_login` del cluster di database per attivare automaticamente tutti i ruoli quando un utente si connette a un'istanza database. Quando questo parametro è impostato, non è necessario chiamare esplicitamente l’istruzione `SET ROLE` per attivare un ruolo. Per ulteriori informazioni, consulta [activate\$1all\$1roles\$1on\$1login](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_activate_all_roles_on_login) nel *Manuale di riferimento di MySQL*.  
Tuttavia, è necessario chiamare esplicitamente `SET ROLE ALL` all’inizio di una stored procedure per attivare il ruolo, quando la stored procedure viene chiamata da un altro utente.

Utilizza la seguente istruzione per Aurora MySQL versione 2:

```
GRANT SELECT INTO S3 ON *.* TO 'user'@'domain-or-ip-address'
```

Il ruolo `AWS_SELECT_S3_ACCESS` e privilegio `SELECT INTO S3` sono specifici di Amazon Aurora MySQL e non sono disponibili per i database MySQL o le istanze database RDS per MySQL. Se è stata configurata la replica tra un cluster di database Aurora MySQL come origine di replica e un database MySQL come client di replica, l’istruzione `GRANT` per il ruolo o il privilegio causa l’arresto della replica con un errore. Puoi ignorare l'errore in modo sicuro per riprendere la replica. Per ignorare l'errore su un'istanza database RDS for MySQL, utilizzare la procedura [mysql\$1rds\$1skip\$1repl\$1error](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql_rds_skip_repl_error.html). Per ignorare l'errore su un database MySQL esterno, usa la variabile di sistema [slave\$1skip\$1errors](https://dev.mysql.com/doc/refman/5.7/en/replication-options-replica.html#sysvar_slave_skip_errors) (Aurora MySQL versione 2) o [replica\$1skip\$1errors](https://dev.mysql.com/doc/refman/8.0/en/replication-options-replica.html#sysvar_replica_skip_errors) (Aurora MySQL versione 3).

## Specifica di un percorso in un bucket Amazon S3
<a name="AuroraMySQL.Integrating.SaveIntoS3.URI"></a>

La sintassi per specificare un percorso per archiviare i file manifest e di dati in un bucket Amazon S3 è simile a quella utilizzata nell'istruzione `LOAD DATA FROM S3 PREFIX`, come mostrato di seguito.

```
s3-region://bucket-name/file-prefix
```

Il percorso include i seguenti valori:
+ `region`(opzionale): la AWS regione che contiene il bucket Amazon S3 in cui salvare i dati. Questo valore è facoltativo. Se non specifichi un valore per `region`, Aurora salva i file in Amazon S3 nella stessa regione del cluster DB.
+ `bucket-name` – Il nome del bucket Amazon S3 in cui salvare i dati. Sono supportati i prefissi degli oggetti che identificano un percorso di cartella virtuale.
+ `file-prefix` – Il prefisso dell'oggetto Amazon S3 che identifica i file da salvare in Amazon S3. 

I file di dati creati dall'`SELECT INTO OUTFILE S3`istruzione utilizzano il seguente percorso, in cui *00000* rappresenta un numero intero a base zero a 5 cifre.

```
s3-region://bucket-name/file-prefix.part_00000
```

Ad esempio, supponiamo che un'istruzione `SELECT INTO OUTFILE S3` specifichi `s3-us-west-2://bucket/prefix` come percorso in cui archiviare i file di dati e crea tre file di dati. Il bucket Amazon S3 specificato contiene i seguenti file di dati.
+ s3-us-west-2://bucket/prefix.part\$100000
+ s3-us-west-2://bucket/prefix.part\$100001
+ s3-us-west-2://bucket/prefix.part\$100002

## Creazione di un manifest per elencare i fili di dati
<a name="AuroraMySQL.Integrating.SaveIntoS3.Manifest"></a>

È possibile utilizzare l'istruzione `SELECT INTO OUTFILE S3` con l'opzione `MANIFEST ON` per creare un file manifest in formato JSON che elenca i file di testo creati dall'istruzione. L'istruzione `LOAD DATA FROM S3` può utilizzare il file manifest per caricare i file di dati di nuovo in un cluster DB Aurora MySQL. Per ulteriori informazioni sull'utilizzo di un file manifest per caricare file di dati da Amazon S3 in un cluster DB Aurora MySQL, consulta [Utilizzo di un manifest per specificare i file di dati da caricare](AuroraMySQL.Integrating.LoadFromS3.md#AuroraMySQL.Integrating.LoadFromS3.Manifest). 

I file di dati inclusi nel manifest creati dall'istruzione `SELECT INTO OUTFILE S3` sono elencati nell'ordine in cui vengono creati dall'istruzione. Ad esempio, supponiamo che un'istruzione `SELECT INTO OUTFILE S3` specifichi `s3-us-west-2://bucket/prefix` come percorso in cui archiviare i file di dati e crea tre file di dati e un file manifest. Il bucket Amazon S3 specificato contiene un file manifest denominato `s3-us-west-2://bucket/prefix.manifest` che contiene le seguenti informazioni.

```
{
  "entries": [
    {
      "url":"s3-us-west-2://bucket/prefix.part_00000"
    },
    {
      "url":"s3-us-west-2://bucket/prefix.part_00001"
    },
    {
      "url":"s3-us-west-2://bucket/prefix.part_00002"
    }
  ]
}
```

## SELECT INTO OUTFILE S3
<a name="AuroraMySQL.Integrating.SaveIntoS3.Statement"></a>

Puoi usare l'istruzione `SELECT INTO OUTFILE S3` per eseguire una query sui dati da un cluster DB e salvarlo direttamente nei file di testo delimitato archiviati in un bucket Amazon S3.

I file compressi non sono supportati. I file crittografati sono supportati a partire da Aurora MySQL versione 2.09.0.

### Sintassi
<a name="AuroraMySQL.Integrating.SaveIntoS3.Statement.Syntax"></a>

```
SELECT
    [ALL | DISTINCT | DISTINCTROW ]
        [HIGH_PRIORITY]
        [STRAIGHT_JOIN]
        [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
        [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr ...]
    [FROM table_references
        [PARTITION partition_list]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
        [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
         [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
INTO OUTFILE S3 's3_uri'
[CHARACTER SET charset_name]
    [export_options]
    [MANIFEST {ON | OFF}]
    [OVERWRITE {ON | OFF}]
    [ENCRYPTION {ON | OFF | SSE_S3 | SSE_KMS ['cmk_id']}]

export_options:
    [FORMAT {CSV|TEXT} [HEADER]]
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
]
```

### Parameters
<a name="AuroraMySQL.Integrating.SaveIntoS3.Statement.Parameters"></a>

L'istruzione `SELECT INTO OUTFILE S3` utilizza i seguenti parametri obbligatori e facoltativi specifici per Aurora.

**s3-uri**  
Specifica l'URI per un prefisso Amazon S3 da utilizzare. Utilizza la sintassi descritta in [Specifica di un percorso in un bucket Amazon S3](#AuroraMySQL.Integrating.SaveIntoS3.URI).

**FORMAT \$1CSV\$1TEXT\$1 [HEADER]**  
Facoltativamente salva i dati in formato CSV.  
L'opzione `TEXT` è quella predefinita e produce il formato di esportazione MySQL esistente.  
L'opzione `CSV` genera valori di dati separati da virgole. Il formato CSV segue le specifiche nella [RFC-4180](https://tools.ietf.org/html/rfc4180). Se si specifica la parola chiave facoltativa `HEADER`, il file di output contiene una riga di intestazione. Le etichette nella riga di intestazione corrispondono ai nomi di colonna dell'istruzione `SELECT`. È possibile utilizzare i file CSV per addestrare modelli di dati da utilizzare con i servizi ML. AWS Per ulteriori informazioni sull'utilizzo dei dati Aurora esportati AWS con i servizi ML, vedere. [Esportazione di dati in Amazon S3 SageMaker per la formazione su modelli di intelligenza artificiale (Advanced)](mysql-ml.md#exporting-data-to-s3-for-model-training)

**MANIFEST \$1ON \$1 OFF\$1**  
Indica se un file manifesto viene creato in Amazon S3. Il file manifest è un file JSON ( JavaScript Object Notation) che può essere utilizzato per caricare dati in un cluster Aurora DB con l'istruzione. `LOAD DATA FROM S3 MANIFEST` Per ulteriori informazioni su `LOAD DATA FROM S3 MANIFEST`, consulta [Caricamento dei dati in un cluster DB Amazon Aurora MySQL da file di testo in un bucket Amazon S3](AuroraMySQL.Integrating.LoadFromS3.md).  
Se `MANIFEST ON` è specificato nella query, il file manifest viene creato in Amazon S3 dopo che tutti i file di dati sono stati creati e caricati. Il file manifest viene creato utilizzando il seguente percorso:  

```
s3-region://bucket-name/file-prefix.manifest
```
Per ulteriori informazioni sul formato del contenuto del file manifest, consulta [Creazione di un manifest per elencare i fili di dati](#AuroraMySQL.Integrating.SaveIntoS3.Manifest).

**OVERWRITE \$1ON \$1 OFF\$1**  
Indica se i file esistenti nel bucket Amazon S3 specificato vengono sovrascritti. Se `OVERWRITE ON` è specificato, i file esistenti che corrispondono al prefisso del file nell'URI specificato in `s3-uri` vengono sovrascritti. In caso contrario, si verifica un errore.

**CRITTOGRAFIA \$1ON \$1 OFF \$1 SSE\$1S3 \$1 SSE\$1KMS ['']\$1 *cmk\$1id***  
Indica se utilizzare la crittografia lato server con chiavi gestite di Amazon S3 (SSE-S3) AWS KMS keys o (SSE-KMS, incluse le chiavi gestite dal cliente). Chiavi gestite da AWS Le impostazioni `SSE_S3` e `SSE_KMS` sono disponibili in Aurora MySQL 3.05 e versioni successive.  
Puoi anche utilizzare la variabile di sessione `aurora_select_into_s3_encryption_default` anziché la clausola `ENCRYPTION`, come illustrato nell'esempio seguente. Usa la clausola SQL o la variabile di sessione, ma non entrambe.  

```
set session set session aurora_select_into_s3_encryption_default={ON | OFF | SSE_S3 | SSE_KMS};
```
Le impostazioni `SSE_S3` e `SSE_KMS` sono disponibili in Aurora MySQL 3.05 e versioni successive.  
Impostando `aurora_select_into_s3_encryption_default` sul seguente valore:  
+ `OFF`: viene seguita la policy di crittografia predefinita del bucket S3. Il valore predefinito di `aurora_select_into_s3_encryption_default` è `OFF`.
+ `ON` oppure `SSE_S3`: l'oggetto S3 viene crittografato tramite chiavi gestite da Amazon S3 (SSE-S3).
+ `SSE_KMS`— L'oggetto S3 è crittografato utilizzando un. AWS KMS key

  In questo caso, includi anche la variabile di sessione `aurora_s3_default_cmk_id`, ad esempio:

  ```
  set session aurora_select_into_s3_encryption_default={SSE_KMS};
  set session aurora_s3_default_cmk_id={NULL | 'cmk_id'};
  ```
  + Quando `aurora_s3_default_cmk_id` è `NULL`, l'oggetto S3 viene crittografato utilizzando una Chiave gestita da AWS.
  + Quando `aurora_s3_default_cmk_id` è una stringa `cmk_id` non vuota, l'oggetto S3 viene crittografato utilizzando una chiave gestita dal cliente.

    Il valore di `cmk_id` non può essere una stringa vuota.
Quando utilizzi il comando `SELECT INTO OUTFILE S3`, Aurora determina la crittografia come segue:  
+ Se nel comando SQL è inclusa la clausola `ENCRYPTION`, Aurora si basa solo sul valore di `ENCRYPTION` e non utilizza una variabile di sessione.
+ Se la clausola `ENCRYPTION` non è presente, Aurora si basa sul valore della variabile di sessione.
*Per ulteriori informazioni, consulta [Uso della crittografia lato server con chiavi gestite Amazon S3 (SSE-S3) e Utilizzo della crittografia lato server con chiavi (SSE-KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)[) nella Guida per l'utente di Amazon AWS KMS Simple Storage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) Service.*

Altri dettagli su questi parametri sono disponibili in [Istruzione SELECT](https://dev.mysql.com/doc/refman/8.0/en/select.html) e [Istruzione LOAD DATA](https://dev.mysql.com/doc/refman/8.0/en/load-data.html) nella documentazione di MySQL.

### Considerazioni
<a name="AuroraMySQL.Integrating.SaveIntoS3.Considerations"></a>

Il numero di file scritti nel bucket Amazon S3 dipende dalla quantità di dati selezionati dall'istruzione `SELECT INTO OUTFILE S3` e dalla soglia della dimensione del file per Aurora MySQL. La soglia della dimensione del file predefinita è 6 gigabyte (GB). Se i dati selezionati dall'istruzione sono inferiori alla soglia della dimensione del file, viene creato un singolo file; in caso contrario, vengono creati più file. Altre considerazioni per i file creati da questa dichiarazione includono quanto segue:
+ Aurora MySQL garantisce che le righe nei file di dati non siano suddivise tra i limiti dei file. Nel caso di più file, la dimensione di ogni file di dati tranne l'ultimo è in genere vicino alla soglia della dimensione del file. Tuttavia, ogni tanto poiché restano sotto la soglia della dimensione del file, una riga viene suddivisa su due file di dati. In questo caso, Aurora MySQL crea un file di dati che mantiene intatta la riga, ma potrebbe essere più grande della soglia della dimensione del file. 
+ Perché ogni istruzione `SELECT` in Aurora MySQL viene eseguita come una transazione atomica, un'istruzione `SELECT INTO OUTFILE S3` che seleziona un set di dati di grandi dimensioni potrebbe essere eseguita per qualche tempo. Se l'istruzione non riesce per qualsiasi motivo, potrebbe essere necessario ricominciare ed emettere nuovamente l'istruzione. Se l'istruzione non riesce, tuttavia, i file che sono già stati caricati in Amazon S3 rimangono nel bucket Amazon S3 specifico. Puoi utilizzare un'altra istruzione per caricare i dati rimanenti anziché ricominciare da capo.
+ Se la quantità di dati da selezionare è elevata (oltre 25 GB), ti consigliamo di utilizzare più istruzioni `SELECT INTO OUTFILE S3` per salvare i dati in Amazon S3. Ogni istruzione dovrebbe selezionare una parte diversa dei dati da salvare e anche specificare un diverso `file_prefix` nel parametro `s3-uri` da utilizzare quando si salvano i file di dati. Il partizionamento dei dati da selezionare con più istruzioni facilita il recupero da un errore in un'istruzione. Se si verifica un errore per un'istruzione, solo una parte dei dati deve essere riselezionata e caricata in Amazon S3. L'utilizzo di più istruzioni aiuta anche a evitare una singola transazione di lunga durata, che può migliorare le prestazioni.
+ Se più istruzioni `SELECT INTO OUTFILE S3` che utilizzano lo stesso `file_prefix` nel parametro `s3-uri` vengono eseguite in parallelo per selezionare i dati in Amazon S3, il comportamento non è definito.
+ I metadati, come lo schema della tabella o i metadati dei file, non vengono caricati da Aurora MySQL in Amazon S3.
+ In alcuni casi, potresti rieseguire una query `SELECT INTO OUTFILE S3`, ad esempio per ripristinare a causa di un errore. In questi casi, devi rimuovere tutti i file di dati esistenti nel bucket Amazon S3 con lo stesso prefisso di file specificato in `s3-uri` o includere `OVERWRITE ON` nella query `SELECT INTO OUTFILE S3`.

L'istruzione `SELECT INTO OUTFILE S3` restituisce un tipico numero di errore MySQL e la risposta in caso di esito positivo o negativo. Se non hai accesso al numero di errore e alla risposta di MySQL, il modo più semplice per determinare quando termina l'esecuzione è specificare `MANIFEST ON` nell'istruzione. Il file manifest è l'ultimo file scritto dall'istruzione. In altre parole, se hai un file manifest, l'istruzione ha completato.

Al momento non è possibile monitorare direttamente l'avanzamento dell'istruzione `SELECT INTO OUTFILE S3` durante l'esecuzione. Tuttavia, supponiamo di scrivere una grande quantità di dati da Aurora MySQL in Amazon S3 usando questa istruzione e di conoscere la dimensione dei dati selezionati dall'istruzione. In questo caso, puoi stimare l'avanzamento monitorando la creazione di file di dati in Amazon S3.

Per fare ciò, è possibile utilizzare il fatto che un file di dati viene creato nel bucket Amazon S3 specificato ogni circa 6 GB di dati selezionati dall'istruzione. Dividi la dimensione dei dati selezionati da 6 GB per ottenere il numero stimato di file di dati da creare. È quindi possibile stimare l'avanzamento dell'istruzione monitorando il numero di file caricati in Amazon S3 durante l'esecuzione.

### Esempi
<a name="AuroraMySQL.Integrating.SaveIntoS3.Examples"></a>

La seguente istruzione seleziona tutti i dati nella tabella `employees` e li salva in un bucket Amazon S3 che si trova in una regione diversa dal cluster DB Aurora MySQL. L'istruzione crea file di dati in cui ogni campo è terminato da una virgola (`,`) e ogni riga è terminata da un carattere di nuova riga (`\n`). L'istruzione restituisce un errore se i file che corrispondono al prefisso del file `sample_employee_data` esistono nel bucket Amazon S3 specificato.

```
SELECT * FROM employees INTO OUTFILE S3 's3-us-west-2://aurora-select-into-s3-pdx/sample_employee_data'
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n';
```

La seguente istruzione seleziona tutti i dati nella tabella `employees` e li salva in un bucket Amazon S3 che si trova nella stessa regione del cluster DB Aurora MySQL. L'istruzione crea file di dati in cui ogni campo è terminato da una virgola (`,`) e ogni riga è terminata da un carattere di nuova riga (`\n`) e un file manifest. L'istruzione restituisce un errore se i file che corrispondono al prefisso del file `sample_employee_data` esistono nel bucket Amazon S3 specificato.

```
SELECT * FROM employees INTO OUTFILE S3 's3://aurora-select-into-s3-pdx/sample_employee_data'
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    MANIFEST ON;
```

La seguente istruzione seleziona tutti i dati nella tabella `employees` e li salva in un bucket Amazon S3 che si trova in una regione diversa dal cluster DB Aurora. L'istruzione crea file di dati in cui ogni campo è terminato da una virgola (`,`) e ogni riga è terminata da un carattere di nuova riga (`\n`). L'istruzione sostituisce ogni file che corrisponde al prefisso del file `sample_employee_data` esistono nel bucket Amazon S3 specificato.

```
SELECT * FROM employees INTO OUTFILE S3 's3-us-west-2://aurora-select-into-s3-pdx/sample_employee_data'
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    OVERWRITE ON;
```

La seguente istruzione seleziona tutti i dati nella tabella `employees` e li salva in un bucket Amazon S3 che si trova nella stessa regione del cluster DB Aurora MySQL. L'istruzione crea file di dati in cui ogni campo è terminato da una virgola (`,`) e ogni riga è terminata da un carattere di nuova riga (`\n`) e un file manifest. L'istruzione sostituisce ogni file che corrisponde al prefisso del file `sample_employee_data` esistono nel bucket Amazon S3 specificato.

```
SELECT * FROM employees INTO OUTFILE S3 's3://aurora-select-into-s3-pdx/sample_employee_data'
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    MANIFEST ON
    OVERWRITE ON;
```

# Chiamare una funzione Lambda da un cluster DB Amazon Aurora MySQL
<a name="AuroraMySQL.Integrating.Lambda"></a><a name="lambda"></a>

Puoi richiamare una AWS Lambda funzione da un cluster Edition DB compatibile con Amazon Aurora MySQL con la funzione nativa oppure. `lambda_sync` `lambda_async` Prima di chiamare una funzione Lambda da Aurora MySQL, il un cluster DB Aurora deve avere l'accesso a Lambda. Per dettagli sulla concessione dell'accesso ad Aurora MySQL, consultare [Accesso di Aurora a Lambda;](AuroraMySQL.Integrating.LambdaAccess.md). Per informazioni sulla `lambda_sync` e su funzioni archiviate `lambda_async`, consultare [Chiamare una funzione Lambda con una funzione nativa Aurora MySQL](AuroraMySQL.Integrating.NativeLambda.md). 

 Puoi anche richiamare una AWS Lambda funzione utilizzando una procedura memorizzata. Tuttavia, l'utilizzo di una procedura archiviate è obsoleto. Ti consigliamo vivamente di usare una funzione nativa Aurora MySQL se utilizzi una delle seguenti versioni di Aurora MySQL: 
+ Aurora MySQL versione 2, per cluster compatibili con MySQL 5.7.
+ Aurora MySQL versione 3.01 e successive, per cluster compatibili con MySQL 8.0. La stored procedure non è disponibile in Aurora MySQL versione 3.

Per informazioni su come concedere ad Aurora l’accesso a Lambda e come invocare una funzione Lambda, consulta i seguenti argomenti.

**Topics**
+ [Accesso di Aurora a Lambda;](AuroraMySQL.Integrating.LambdaAccess.md)
+ [Chiamare una funzione Lambda con una funzione nativa Aurora MySQL](AuroraMySQL.Integrating.NativeLambda.md)
+ [Chiamare una funzione Lambda con una procedura archiviata Aurora MySQL (obsoleto)](AuroraMySQL.Integrating.ProcLambda.md)

# Accesso di Aurora a Lambda;
<a name="AuroraMySQL.Integrating.LambdaAccess"></a>

Prima di poter chiamare le funzioni Lambda da un cluster database Aurora MySQL, assicurarsi innanzitutto di concedere l'autorizzazione al cluster per accedere a Lambda.

**Per concedere ad Aurora MySQL l'accesso ad Lambda**

1. Creare una policy AWS Identity and Access Management (IAM) che assegni le autorizzazioni che permettono al cluster database Aurora MySQL di richiamare le funzioni Lambda. Per istruzioni, consulta [Creazione di una policy IAM per accedere alle AWS Lambda risorse](AuroraMySQL.Integrating.Authorizing.IAM.LambdaCreatePolicy.md).

1. Creare un ruolo IAM e collegare la policy IAM creata in [Creazione di una policy IAM per accedere alle AWS Lambda risorse](AuroraMySQL.Integrating.Authorizing.IAM.LambdaCreatePolicy.md) al nuovo ruolo IAM. Per istruzioni, consulta [Creazione di un ruolo IAM per consentire ad Amazon Aurora di accedere ai servizi AWS](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md).

1. Impostare il parametro `aws_default_lambda_role` del cluster DB sull'Amazon Resource Name (ARN) del nuovo ruolo IAM.

   Se il cluster fa parte di un database globale Aurora, applica la stessa impostazione per ogni cluster Aurora nel database globale. 

   Per ulteriori informazioni sui parametri del cluster DB, vedi [Parametri dell’istanza database e del cluster database di Amazon Aurora](USER_WorkingWithDBClusterParamGroups.md#Aurora.Managing.ParameterGroups).

1. Per consentire di chiamare le funzioni Lambda agli utenti del database in un cluster DB Aurora MySQL, è necessario associare il ruolo creato in [Creazione di un ruolo IAM per consentire ad Amazon Aurora di accedere ai servizi AWS](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md) con il cluster DB. Per informazioni su come associare un ruolo IAM a un cluster DB, vedi [Associazione di un ruolo IAM a un cluster DB Amazon Aurora MySQL](AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.md).

    Se il cluster fa parte di un database globale Aurora, associa il ruolo a ogni cluster Aurora nel database globale. 

1. Configura il cluster DB Aurora MySQL per consentire le connessioni in uscita ad Lambda. Per istruzioni, consulta [Abilitazione della comunicazione di rete da Amazon Aurora ad altri servizi AWS](AuroraMySQL.Integrating.Authorizing.Network.md).

    Se il cluster fa parte di un database globale Aurora, abilita le connessioni in uscita per ogni cluster Aurora nel database globale. 

# Chiamare una funzione Lambda con una funzione nativa Aurora MySQL
<a name="AuroraMySQL.Integrating.NativeLambda"></a>

**Nota**  
È possibile chiamare le funzioni native `lambda_sync` e `lambda_async` con Aurora MySQL versione 2 o Aurora MySQL versione 3.01 e versioni successive. Per ulteriori informazioni sulle versioni di Aurora MySQL, consulta [Aggiornamenti del motore del database per Amazon Aurora MySQLVersioni beta e con supporto a lungo termine (LTS, Long-Term Support) di Amazon Aurora MySQL](AuroraMySQL.Updates.md).

È possibile richiamare una AWS Lambda funzione da un cluster Aurora MySQL DB chiamando le funzioni native e. `lambda_sync` `lambda_async` Questo approccio può essere utile quando si desidera integrare il database in esecuzione su Aurora MySQL con altri servizi. AWS Ad esempio, potresti voler inviare una notifica usando Amazon Simple Notification Service (Amazon SNS) ogni volta che una riga viene inserita in una tabella specifica nel database.

**Contents**
+ [Utilizzo delle funzioni native per chiamare una funzione Lambda](#AuroraMySQL.Integrating.NativeLambda.lambda_functions)
  + [Concessione del ruolo in Aurora MySQL versione 3](#AuroraMySQL.Integrating.NativeLambda.lambda_functions.v3)
  + [Concessione del privilegio in Aurora MySQL versione 2](#AuroraMySQL.Integrating.NativeLambda.lambda_functions.v2)
  + [Sintassi per la funzione lambda\$1sync](#AuroraMySQL.Integrating.NativeLambda.lambda_functions.Sync.Syntax)
  + [Parametri per la funzione lambda\$1sync](#AuroraMySQL.Integrating.NativeLambda.lambda_functions.Sync.Parameters)
  + [Esempio per la funzione lambda\$1sync](#AuroraMySQL.Integrating.NativeLambda.lambda_functions.Sync.Example)
  + [Sintassi per la funzione lambda\$1async](#AuroraMySQL.Integrating.NativeLambda.lambda_functions.Async.Syntax)
  + [Parametri per la funzione lambda\$1async](#AuroraMySQL.Integrating.NativeLambda.lambda_functions.Async.Parameters)
  + [Esempio per la funzione lambda\$1async](#AuroraMySQL.Integrating.NativeLambda.lambda_functions.Async.Example)
  + [Invocazione di una funzione Lambda all'interno di un trigger](#AuroraMySQL.Integrating.NativeLambda.lambda_functions.trigger)

## Utilizzo delle funzioni native per chiamare una funzione Lambda
<a name="AuroraMySQL.Integrating.NativeLambda.lambda_functions"></a>

Le funzioni `lambda_sync` e `lambda_async` sono funzioni native predefinite che chiamano una funzione Lambda in modo sincrono o asincrono. Quando è necessario conoscere il risultato dell'esecuzione della funzione Lambda prima di passare a un'altra operazione, utilizza la funzione sincrona `lambda_sync`. Quando non è necessario conoscere il risultato della funzione Lambda prima di passare a un'altra operazione, utilizza la funzione asincrona `lambda_async`.

### Concessione del ruolo in Aurora MySQL versione 3
<a name="AuroraMySQL.Integrating.NativeLambda.lambda_functions.v3"></a>

In Aurora MySQL versione 3, l'utente che invoca una funzione nativa deve avere il ruolo `AWS_LAMBDA_ACCESS`. Per concedere questo privilegio a un utente, connettersi all'istanza database come utente amministratore ed eseguire la seguente istruzione.

```
GRANT AWS_LAMBDA_ACCESS TO user@domain-or-ip-address
```

Si può revocare questo ruolo eseguendo la seguente istruzione.

```
REVOKE AWS_LAMBDA_ACCESS FROM user@domain-or-ip-address
```

**Suggerimento**  
Quando utilizzi la tecnica basata sul ruolo in Aurora MySQL versione 3, puoi anche attivare il ruolo utilizzando l'istruzione `SET ROLE role_name` o `SET ROLE ALL`. Se non si ha familiarità con il sistema dei ruoli MySQL 8.0, è possibile ottenere ulteriori informazioni in [Privilegio basato sui ruoli](AuroraMySQL.Compare-80-v3.md#AuroraMySQL.privilege-model). Per maggiori dettagli, consulta la pagina [Using roles](https://dev.mysql.com/doc/refman/8.0/en/roles.html) nel *Manuale di riferimento di MySQL*.  
Questo vale solo per la sessione attiva corrente. Quando ti riconnetti, devi eseguire di nuovo l’istruzione `SET ROLE` per concedere i privilegi. Per ulteriori informazioni, consulta [Istruzione SET ROLE](https://dev.mysql.com/doc/refman/8.0/en/set-role.html) nel *Manuale di riferimento di MySQL*.  
Puoi utilizzare il parametro `activate_all_roles_on_login` del cluster di database per attivare automaticamente tutti i ruoli quando un utente si connette a un'istanza database. Quando questo parametro è impostato, non è necessario chiamare esplicitamente l’istruzione `SET ROLE` per attivare un ruolo. Per ulteriori informazioni, consulta [activate\$1all\$1roles\$1on\$1login](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_activate_all_roles_on_login) nel *Manuale di riferimento di MySQL*.  
Tuttavia, è necessario chiamare esplicitamente `SET ROLE ALL` all’inizio di una stored procedure per attivare il ruolo, quando la stored procedure viene chiamata da un altro utente.

Se ricevi un errore come il seguente quando provi a richiamare una funzione Lambda, esegui un'istruzione `SET ROLE`.

```
SQL Error [1227] [42000]: Access denied; you need (at least one of) the Invoke Lambda privilege(s) for this operation
```

Assicurati di concedere il ruolo all’utente corretto, come mostrato nelle voci della tabella `mysql.users`. Potrebbero esserci più utenti con lo stesso nome, ma su host diversi. A seconda dell’applicazione o dell’host che invoca la funzione `lambda_sync`, MySQL seleziona l’utente con la corrispondenza migliore in base alle voci della colonna `host`.

### Concessione del privilegio in Aurora MySQL versione 2
<a name="AuroraMySQL.Integrating.NativeLambda.lambda_functions.v2"></a>

In Aurora MySQL versione 2, l'utente che richiama una funzione nativa deve avere il privilegio `INVOKE LAMBDA`. Per concedere questo privilegio a un utente, connettersi all'istanza database come utente amministratore ed eseguire la seguente istruzione.

```
GRANT INVOKE LAMBDA ON *.* TO user@domain-or-ip-address
```

Puoi revocare questo privilegio eseguendo la seguente istruzione.

```
REVOKE INVOKE LAMBDA ON *.* FROM user@domain-or-ip-address
```

### Sintassi per la funzione lambda\$1sync
<a name="AuroraMySQL.Integrating.NativeLambda.lambda_functions.Sync.Syntax"></a>

Invochi la funzione `lambda_sync` in modo sincrono con il tipo di chiamata `RequestResponse`. La funzione restituisce il risultato della chiamata Lambda in un payload JSON. La funzione ha la seguente sintassi.

```
lambda_sync (
  lambda_function_ARN,
  JSON_payload
)
```

### Parametri per la funzione lambda\$1sync
<a name="AuroraMySQL.Integrating.NativeLambda.lambda_functions.Sync.Parameters"></a>

La funzione `lambda_sync` include i seguenti parametri.

* lambda\$1function\$1ARN *  
Amazon Resource Name (ARN) della funzione Lambda da chiamare.

* JSON\$1payload *  
Il payload per la funzione Lambda chiamata in formato JSON.

**Nota**  
Aurora MySQL versione 3 supporta le funzioni di analisi JSON di MySQL 8.0. Tuttavia, Aurora MySQL versione 2 non include queste funzioni. L'analisi JSON non è richiesta quando una funzione Lambda restituisce un valore atomico, come un numero o una stringa.

### Esempio per la funzione lambda\$1sync
<a name="AuroraMySQL.Integrating.NativeLambda.lambda_functions.Sync.Example"></a>

La seguente query basata su `lambda_sync` chiama la funzione Lambda `BasicTestLambda` in modo sincrono usando l'ARN della funzione. Il payload per la funzione è `{"operation": "ping"}`.

```
SELECT lambda_sync(
    'arn:aws:lambda:us-east-1:123456789012:function:BasicTestLambda',
    '{"operation": "ping"}');
```

### Sintassi per la funzione lambda\$1async
<a name="AuroraMySQL.Integrating.NativeLambda.lambda_functions.Async.Syntax"></a>

Invochi la funzione `lambda_async` in modo asincrono con il tipo di chiamata `Event`. La funzione restituisce il risultato della chiamata Lambda in un payload JSON. La funzione ha la seguente sintassi.

```
lambda_async (
  lambda_function_ARN,
  JSON_payload
)
```

### Parametri per la funzione lambda\$1async
<a name="AuroraMySQL.Integrating.NativeLambda.lambda_functions.Async.Parameters"></a>

La funzione `lambda_async` include i seguenti parametri.

* lambda\$1function\$1ARN *  
Amazon Resource Name (ARN) della funzione Lambda da chiamare.

* JSON\$1payload *  
Il payload per la funzione Lambda chiamata in formato JSON.

**Nota**  
Aurora MySQL versione 3 supporta le funzioni di analisi JSON di MySQL 8.0. Tuttavia, Aurora MySQL versione 2 non include queste funzioni. L'analisi JSON non è richiesta quando una funzione Lambda restituisce un valore atomico, come un numero o una stringa.

### Esempio per la funzione lambda\$1async
<a name="AuroraMySQL.Integrating.NativeLambda.lambda_functions.Async.Example"></a>

La seguente query basata su `lambda_async` chiama la funzione Lambda `BasicTestLambda` in modo asincrono usando l'ARN della funzione. Il payload per la funzione è `{"operation": "ping"}`.

```
SELECT lambda_async(
    'arn:aws:lambda:us-east-1:123456789012:function:BasicTestLambda',
    '{"operation": "ping"}');
```

### Invocazione di una funzione Lambda all'interno di un trigger
<a name="AuroraMySQL.Integrating.NativeLambda.lambda_functions.trigger"></a>

Puoi utilizzare i trigger per chiamare Lambda sulle istruzioni di modifica dei dati. L'esempio seguente illustra come utilizzare la funzione `lambda_async` nativa e memorizzare il risultato in una variabile.

```
mysql>SET @result=0;
mysql>DELIMITER //
mysql>CREATE TRIGGER myFirstTrigger
      AFTER INSERT
          ON Test_trigger FOR EACH ROW
      BEGIN
      SELECT lambda_async(
          'arn:aws:lambda:us-east-1:123456789012:function:BasicTestLambda',
          '{"operation": "ping"}')
          INTO @result;
      END; //
mysql>DELIMITER ;
```

**Nota**  
I trigger non vengono eseguiti una volta per istruzione SQL, ma una volta per riga modificata, una riga alla volta. Quando viene eseguito un trigger, il processo è sincrono. L'istruzione di modifica dei dati viene restituita solo al completamento del trigger.  
Fai attenzione quando richiami una AWS Lambda funzione dai trigger su tabelle che presentano un traffico di scrittura elevato. `INSERT`e `UPDATE` i `DELETE` trigger vengono attivati per riga. Un carico di lavoro che richiede molta scrittura su una tabella con `INSERT` o `DELETE` trigger genera un gran numero di chiamate alla funzione. `UPDATE` AWS Lambda 

# Chiamare una funzione Lambda con una procedura archiviata Aurora MySQL (obsoleto)
<a name="AuroraMySQL.Integrating.ProcLambda"></a>

È possibile richiamare una AWS Lambda funzione da un cluster Aurora MySQL DB chiamando la procedura. `mysql.lambda_async` Questo approccio può essere utile quando si desidera integrare il database in esecuzione su Aurora MySQL con altri servizi. AWS Ad esempio, potresti voler inviare una notifica usando Amazon Simple Notification Service (Amazon SNS) ogni volta che una riga viene inserita in una tabella specifica nel database. 

**Contents**
+ [Considerazioni sulle versioni Aurora MySQL](#AuroraMySQL.Integrating.ProcLambda.caveats)
+ [Utilizzo della procedura mysql.lambda\$1async per chiamare una funzione Lambda (obsoleto)](#AuroraMySQL.Integrating.Lambda.mysql_lambda_async)
  + [Sintassi](#AuroraMySQL.Integrating.Lambda.mysql_lambda_async.Syntax)
  + [Parameters](#AuroraMySQL.Integrating.Lambda.mysql_lambda_async.Parameters)
  + [Esempi](#AuroraMySQL.Integrating.Lambda.mysql_lambda_async.Examples)

## Considerazioni sulle versioni Aurora MySQL
<a name="AuroraMySQL.Integrating.ProcLambda.caveats"></a>

In Aurora MySQL versione 2 puoi utilizzare il metodo delle funzioni native anziché queste stored procedure per richiamare una funzione Lambda. Per ulteriori informazioni sulle funzioni native, consulta [Utilizzo delle funzioni native per chiamare una funzione Lambda](AuroraMySQL.Integrating.NativeLambda.md#AuroraMySQL.Integrating.NativeLambda.lambda_functions).

In Aurora MySQL versione 2, la stored procedure `mysql.lambda_async` non è più supportata. Ti consigliamo di utilizzare le funzioni Lambda native.

In Aurora MySQL versione 3, la procedura archiviata non è disponibile.

## Utilizzo della procedura mysql.lambda\$1async per chiamare una funzione Lambda (obsoleto)
<a name="AuroraMySQL.Integrating.Lambda.mysql_lambda_async"></a>

La procedura `mysql.lambda_async` è una stored procedure predefinita che chiama una funzione Lambda in modo asincrono. Per utilizzare questa procedura, l'utente del database deve avere il privilegio `EXECUTE` sulla stored procedure `mysql.lambda_async`.

### Sintassi
<a name="AuroraMySQL.Integrating.Lambda.mysql_lambda_async.Syntax"></a>

La procedura `mysql.lambda_async` ha la seguente sintassi.

```
CALL mysql.lambda_async (
  lambda_function_ARN,
  lambda_function_input
)
```

### Parameters
<a name="AuroraMySQL.Integrating.Lambda.mysql_lambda_async.Parameters"></a>

La procedura `mysql.lambda_async` include i seguenti parametri.

* lambda\$1function\$1ARN *  
Amazon Resource Name (ARN) della funzione Lambda da chiamare.

* lambda\$1function\$1input *  
La stringa di input in formato JSON per chiamare la funzione Lambda.

### Esempi
<a name="AuroraMySQL.Integrating.Lambda.mysql_lambda_async.Examples"></a>

Come best practice, ti consigliamo di inserire le chiamate alla procedura `mysql.lambda_async` in una procedura archiviata che può essere richiamata da origini diverse come trigger o codice client. Questo approccio può evitare problemi di resistenza non corrispondente e rendere più semplice per richiamare le funzioni Lambda. 

**Nota**  
Fai attenzione quando richiami una AWS Lambda funzione dai trigger su tabelle che presentano un traffico di scrittura elevato. `INSERT``UPDATE`, e i `DELETE` trigger vengono attivati per riga. Un carico di lavoro pesante in scrittura su una tabella con trigger `INSERT`, `UPDATE` e `DELETE` genera un numero elevato di chiamate alla funzione AWS Lambda .   
Sebbene le chiamate alla procedura `mysql.lambda_async` siano asincrone, i trigger sono sincroni. Un'istruzione che genera un numero elevato di attivazioni di trigger non attende il completamento della chiamata alla funzione AWS Lambda , ma attende il completamento dei trigger prima di restituire il controllo al client.

**Example Esempio: richiama una AWS Lambda funzione per inviare e-mail**  
Nell'esempio seguente viene creata una stored procedure che è possibile chiamare nel codice del database per inviare un'e-mail utilizzando una funzione Lambda.  
**AWS Lambda Funzione**  

```
import boto3

ses = boto3.client('ses')

def SES_send_email(event, context):

    return ses.send_email(
        Source=event['email_from'],
        Destination={
            'ToAddresses': [
            event['email_to'],
            ]
        },

        Message={
            'Subject': {
            'Data': event['email_subject']
            },
            'Body': {
                'Text': {
                    'Data': event['email_body']
                }
            }
        }
    )
```
**Stored procedure**  

```
DROP PROCEDURE IF EXISTS SES_send_email;
DELIMITER ;;
  CREATE PROCEDURE SES_send_email(IN email_from VARCHAR(255),
                                  IN email_to VARCHAR(255),
                                  IN subject VARCHAR(255),
                                  IN body TEXT) LANGUAGE SQL
  BEGIN
    CALL mysql.lambda_async(
         'arn:aws:lambda:us-west-2:123456789012:function:SES_send_email',
         CONCAT('{"email_to" : "', email_to,
             '", "email_from" : "', email_from,
             '", "email_subject" : "', subject,
             '", "email_body" : "', body, '"}')
     );
  END
  ;;
DELIMITER ;
```
**Chiama la stored procedure per chiamare la funzione AWS Lambda **  

```
mysql> call SES_send_email('example_from@amazon.com', 'example_to@amazon.com', 'Email subject', 'Email content');
```

**Example Esempio: richiama una AWS Lambda funzione per pubblicare un evento da un trigger**  
Nell'esempio seguente viene creata una stored procedure che pubblica un evento utilizzando Amazon SNS. Il codice chiama la procedura da un trigger quando una riga viene aggiunta a una tabella.  
**AWS Lambda Funzione**  

```
import boto3

sns = boto3.client('sns')

def SNS_publish_message(event, context):

    return sns.publish(
        TopicArn='arn:aws:sns:us-west-2:123456789012:Sample_Topic',
        Message=event['message'],
        Subject=event['subject'],
        MessageStructure='string'
    )
```
**Stored procedure**  

```
DROP PROCEDURE IF EXISTS SNS_Publish_Message;
DELIMITER ;;
CREATE PROCEDURE SNS_Publish_Message (IN subject VARCHAR(255),
                                      IN message TEXT) LANGUAGE SQL
BEGIN
  CALL mysql.lambda_async('arn:aws:lambda:us-west-2:123456789012:function:SNS_publish_message',
     CONCAT('{ "subject" : "', subject,
            '", "message" : "', message, '" }')
     );
END
;;
DELIMITER ;
```
**Tabella**  

```
CREATE TABLE 'Customer_Feedback' (
  'id' int(11) NOT NULL AUTO_INCREMENT,
  'customer_name' varchar(255) NOT NULL,
  'customer_feedback' varchar(1024) NOT NULL,
  PRIMARY KEY ('id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
**Trigger**  

```
DELIMITER ;;
CREATE TRIGGER TR_Customer_Feedback_AI
  AFTER INSERT ON Customer_Feedback
  FOR EACH ROW
BEGIN
  SELECT CONCAT('New customer feedback from ', NEW.customer_name), NEW.customer_feedback INTO @subject, @feedback;
  CALL SNS_Publish_Message(@subject, @feedback);
END
;;
DELIMITER ;
```
**Inserisci una riga nella tabella per attivare la notifica**  

```
mysql> insert into Customer_Feedback (customer_name, customer_feedback) VALUES ('Sample Customer', 'Good job guys!');
```

# Pubblicazione di log Amazon Aurora MySQL in Amazon CloudWatch Logs
<a name="AuroraMySQL.Integrating.CloudWatch"></a>

Puoi configurare il cluster DB Aurora MySQL per pubblicare log dei dati di errore, generici, dei rallentamenti e delle revisioni in un gruppo di log in Amazon CloudWatch Logs. Con CloudWatch Logs puoi eseguire analisi in tempo reale dei dati di log e usare CloudWatch per creare allarmi e visualizzare parametri. Puoi utilizzare CloudWatch Logs per archiviare i record dei log in uno storage estremamente durevole.

Per pubblicare i log in CloudWatch Logs i rispettivi log devono essere abilitati. I registri dei dati di errore sono abilitati per impostazione predefinita, ma è necessario abilitare esplicitamente gli altri tipi di log. Per informazioni sull'abilitazione dei log in MySQL, consulta la sezione relativa alla [selezione delle destinazioni di output del log delle query generiche e lente](https://dev.mysql.com/doc/refman/8.0/en/log-destinations.html) nella documentazione di MySQL. Per ulteriori informazioni sull'abilitazione dei log di audit di Aurora MySQL, consulta [Abilitazione dell'audit avanzato](AuroraMySQL.Auditing.md#AuroraMySQL.Auditing.Enable).

**Nota**  
Se l'esportazione dei dati del registro è disabilitata, Aurora non elimina i gruppi di log esistenti o i flussi di log. Se l'esportazione dei dati del log è disabilitata, i dati del log esistenti rimangono disponibili in CloudWatch Logs in base al valore di conservazione di log e si continuano a sostenere i costi per i dati del log di revisione archiviati. Puoi eliminare i flussi di log e i gruppo di log usando la console CloudWatch Logs, la AWS CLI o l'API CloudWatch Logs.
Un modo alternativo per pubblicare i log di audit in CloudWatch Logs consiste nell’abilitare l’auditing avanzato, quindi nel creare un gruppo di parametri del cluster di database personalizzato e nell’impostare il parametro `server_audit_logs_upload` su `1`. Il valore predefinito per il parametro del cluster di database `server_audit_logs_upload` è `0`. Per informazioni sull’abilitazione dell’auditing avanzato, consulta [Utilizzo dell'audit avanzato con un cluster di database Amazon Aurora MySQL](AuroraMySQL.Auditing.md).  
Se utilizzi questo metodo alternativo, devi avere un ruolo IAM per accedere a CloudWatch Logs e impostare il parametro a livello di cluster `aws_default_logs_role` sull'ARN di questo ruolo. Per ulteriori informazioni sulla creazione del ruolo, consulta [Configurazione dei ruoli IAM per accedere ai AWS servizi](AuroraMySQL.Integrating.Authorizing.IAM.md). Tuttavia, se disponi del ruolo `AWSServiceRoleForRDS` collegato ai servizi, tale ruolo fornisce accesso a CloudWatch Logs e sovrascrive qualsiasi ruolo personalizzato. Per informazioni sui ruoli collegati ai servizi per Amazon RDS, consultare [Utilizzo di ruoli collegati ai servizi per Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md).
Se non desideri esportare i log di revisione in CloudWatch Logs assicurati che tutti i metodi di esportazione dei log di revisione siano disabilitati. Questi metodi sono l'Console di gestione AWS, l'AWS CLI, l'API RDS e il parametro `server_audit_logs_upload`.
 La procedura per i cluster di database Aurora Serverless v1 è leggermente diversa rispetto a quella dei cluster di database con istanze database allocate o Aurora Serverless v2. I cluster Aurora Serverless v1 caricano automaticamente tutti i log che abiliti mediante i parametri di configurazione.  
Pertanto, puoi attivare o disattivare il caricamento dei log per i cluster di database Aurora Serverless v1 attivando e disattivando diversi tipi di log nel gruppo di parametri del cluster di database. Non modifichi le impostazioni del cluster stesso tramite la Console di gestione AWS, AWS CLI o l'API RDS. Per informazioni su come attivare e disattivare i registri MySQL per i cluster Aurora Serverless v1, consulta [Gruppi di parametri per Aurora Serverless v1](aurora-serverless-v1.how-it-works.md#aurora-serverless.parameter-groups). 

## Console
<a name="AuroraMySQL.Integrating.CloudWatch.Console"></a>

Puoi pubblicare i log di Aurora MySQL per i cluster con provisioning in CloudWatch Logs con la console.

**Per pubblicare i log Aurora MySQL dalla console**

1. Apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel riquadro di navigazione, scegliere **Databases (Database)**.

1. Scegliere il cluster DB Aurora MySQL per cui vuoi pubblicare i dati dei log.

1. Scegliere **Modify (Modifica)**.

1. Nella sezione **Log exports (Esportazioni log)** scegliere i log che si vuole iniziare a pubblicare in CloudWatch Logs.

1. Scegliere **Continue (Continua)** e quindi selezionare **Modify DB Cluster (Modifica cluster DB)** nella pagina di riepilogo.

## AWS CLI
<a name="AuroraMySQL.Integrating.CloudWatch.CLI"></a>

Puoi pubblicare i log di Aurora MySQL per i cluster con provisioning con AWS CLI. Per farlo, esegui il comando AWS CLI [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) con le opzioni seguenti: 
+ `--db-cluster-identifier`— – L'identificatore del cluster DB.
+ `--cloudwatch-logs-export-configuration`— – L'impostazione di configurazione per i tipi di log da abilitare per l'esportazione in CloudWatch Logs per il cluster DB.

Puoi pubblicare i log Aurora MySQL anche eseguendo uno dei seguenti comandi della AWS CLI: 
+ [create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html)
+ [restore-db-cluster-from-s3](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-s3.html)
+ [restore-db-cluster-from-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-snapshot.html)
+ [restore-db-cluster-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-to-point-in-time.html)

Esegui uno di questi comandi dell'AWS CLI con le opzioni seguenti:
+ `--db-cluster-identifier`— – L'identificatore del cluster DB.
+ `--engine`— – Il motore di database.
+ `--enable-cloudwatch-logs-exports`— – L'impostazione di configurazione per i tipi di log da abilitare per l'esportazione in CloudWatch Logs per il cluster DB.

Altre opzioni potrebbero essere richieste a seconda del comando dell'AWS CLI che esegui.

**Example**  
Il seguente comando modifica un cluster DB Aurora MySQL esistente per pubblicare i file di log in CloudWatch Logs.  
Per Linux, macOS o Unix:  

```
1. aws rds modify-db-cluster \
2.     --db-cluster-identifier mydbcluster \
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["error","general","slowquery","audit","instance"]}'
```
Per Windows:  

```
1. aws rds modify-db-cluster ^
2.     --db-cluster-identifier mydbcluster ^
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["error","general","slowquery","audit","instance"]}'
```

**Example**  
Il seguente comando crea un cluster DB Aurora MySQL per pubblicare i file di log in CloudWatch Logs.  
Per Linux, macOS o Unix:  

```
1. aws rds create-db-cluster \
2.     --db-cluster-identifier mydbcluster \
3.     --engine aurora \
4.     --enable-cloudwatch-logs-exports '["error","general","slowquery","audit","instance"]'
```
Per Windows:  

```
1. aws rds create-db-cluster ^
2.     --db-cluster-identifier mydbcluster ^
3.     --engine aurora ^
4.     --enable-cloudwatch-logs-exports '["error","general","slowquery","audit","instance"]'
```

## API RDS
<a name="AuroraMySQL.Integrating.CloudWatch.API"></a>

Puoi pubblicare i log di Aurora MySQL per i cluster con provisioning con l'API RDS. Per farlo, esegui l'operazione [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) con le seguenti opzioni: 
+ `DBClusterIdentifier`— – L'identificatore del cluster DB.
+ `CloudwatchLogsExportConfiguration`— – L'impostazione di configurazione per i tipi di log da abilitare per l'esportazione in CloudWatch Logs per il cluster DB.

Puoi anche pubblicare i log Aurora MySQL con l'API RDS eseguendo uno delle seguenti operazioni dell'API RDS: 
+ [CreateDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html)
+ [RestoreDBClusterFromS3](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromS3.html)
+ [RestoreDBClusterFromSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromSnapshot.html)
+ [RestoreDBClusterToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html)

Utilizza l'operazione API RDS con i seguenti parametri: 
+ `DBClusterIdentifier`— – L'identificatore del cluster DB.
+ `Engine`— – Il motore di database.
+ `EnableCloudwatchLogsExports`— – L'impostazione di configurazione per i tipi di log da abilitare per l'esportazione in CloudWatch Logs per il cluster DB.

Altri parametri potrebbero essere richiesti a seconda del comando dell'AWS CLI che esegui.

## Monitoraggio degli eventi di log in Amazon CloudWatch
<a name="AuroraMySQL.Integrating.CloudWatch.Monitor"></a>

Dopo aver abilitato gli eventi di log Aurora MySQL, puoi monitorare gli eventi in Amazon CloudWatch Logs. Un nuovo gruppo di log viene creato automaticamente per il cluster DB Aurora con il seguente prefisso, in cui `cluster-name` rappresenta il nome del cluster DB e `log_type` rappresenta il tipo di log.

```
/aws/rds/cluster/cluster-name/log_type
```

Ad esempio, se configuri la funzione di esportazione per includere il log delle query lente per un cluster DB denominato `mydbcluster`, i dati delle query lente vengono archiviati nel gruppo di log `/aws/rds/cluster/mydbcluster/slowquery`.

Gli eventi di tutte le istanze in un cluster vengono inviati a un gruppo di log utilizzando flussi di log diversi. Il comportamento dipende da quale delle seguenti condizioni è vera:
+ Esiste un gruppo di registro con il nome specificato.

  Aurora utilizza il gruppo di registro esistente per esportare i dati di registro per il cluster. Per creare i gruppi di registro con periodi di conservazione di registro predefiniti, filtri di parametri e accesso cliente, puoi utilizzare la configurazione automatizzata, ad esempio AWS CloudFormation.
+ Non esiste un gruppo di registro con il nome specificato.

  Quando viene rilevata una voce di log corrispondente nel file di log per l'istanza, Aurora MySQL crea automaticamente un nuovo gruppo di log in CloudWatch Logs. Il gruppo di log utilizza il periodo di conservazione predefinito dei log di **Never Expire (Nessuna scadenza)**.

  Puoi usare la console CloudWatch Logs, la AWS CLI oppure l'API di CloudWatch Logs per cambiare il periodo di conservazione dei registri. Per ulteriori informazioni su come modificare il periodo di conservazione di log in CloudWatch Logs, consulta [Modifica della conservazione dei dati di log in CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SettingLogRetention.html).

Puoi usare la console CloudWatch Logs, la AWS CLI o l'API di CloudWatch Logs per cercare informazioni nel registro eventi per un cluster DB. Per ulteriori informazioni sulla ricerca e l'applicazione di filtri per i dati di log, consulta [Ricerca e filtraggio dei dati di log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html).