

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

# Esportazione di dati da del cluster di database Aurora PostgreSQLRDS per PostgreSQL a Amazon S3
<a name="postgresql-s3-export"></a>

È possibile eseguire query sui dati da del cluster di database Aurora PostgreSQLRDS per PostgreSQL ed esportarli direttamente in file memorizzati in un bucket Amazon S3. A questo scopo, installa innanzitutto l'estensione Aurora PostgreSQL `aws_s3`. Questa estensione fornisce le funzioni utilizzate per esportare i risultati delle quey in Amazon S3. Di seguito, sono disponibili informazioni su come installare l'estensione ed esportare i dati in Amazon S3. 

Puoi esportare da un'istanza database con provisioning o Aurora Serverless v2. Questi passaggi non sono supportati per Aurora Serverless v1. 

**Nota**  
L'esportazione tra account in Amazon S3 non è supportata. 

Tutte le versioni attualmente disponibili di Aurora PostgreSQL supportano l'esportazione dei dati in Servizio di archiviazione semplice Amazon. Per informazioni dettagliate sulla versione, consulta gli [aggiornamenti di Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html) nelle *Note di rilascio di Aurora PostgreSQL*.

Se non disponi di un bucket configurato per l'esportazione, consulta i seguenti argomenti nella *Guida per l'utente di Servizio di archiviazione semplice Amazon*. 
+ [Configurazione di Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/setting-up-s3.html)
+ [Creare un secchio](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)

Per impostazione predefinita, i dati esportati da Aurora PostgreSQL ad Amazon S3 utilizzano la crittografia lato server con. Chiave gestita da AWS In alternativa, è possibile utilizzare la chiave gestita dal cliente che è già stata creata. Se utilizzi la crittografia a bucket, il bucket Amazon S3 deve essere crittografato AWS Key Management Service con la chiave AWS KMS() (SSE-KMS). Attualmente, i bucket crittografati con chiavi gestite da Amazon S3 (SSE-S3) non sono supportati. 

**Nota**  
Puoi salvare i dati degli snapshot del database e del cluster DB su Amazon S3 utilizzando AWS CLI, o Console di gestione AWS l'API Amazon RDS. Per ulteriori informazioni, consulta [Esportazione dei dati dello snapshot del cluster di database in Amazon S3](aurora-export-snapshot.md).

**Topics**
+ [

## Installazione dell'estensione aws\$1s3
](#USER_PostgreSQL.S3Export.InstallExtension)
+ [

## Panoramica dell'esportazione di dati in Amazon S3
](#postgresql-s3-export-overview)
+ [

## Specifica del percorso del file Amazon S3 in cui eseguire l'esportazione
](#postgresql-s3-export-file)
+ [

# Configurazione dell'accesso a un bucket Amazon S3
](postgresql-s3-export-access-bucket.md)
+ [

# Esportazione dei dati della query utilizzando la funzione aws\$1s3.query\$1export\$1to\$1s3
](postgresql-s3-export-examples.md)
+ [

# Informazioni di riferimento sulle funzioni
](postgresql-s3-export-functions.md)
+ [

# Risoluzione dei problemi di accesso a Amazon S3
](postgresql-s3-export-troubleshoot.md)

## Installazione dell'estensione aws\$1s3
<a name="USER_PostgreSQL.S3Export.InstallExtension"></a>

Prima di poter utilizzare Servizio di archiviazione semplice Amazon con il cluster database Aurora PostgreSQL, è necessario installare l'estensione `aws_s3`. Questa estensione fornisce funzioni per l'esportazione di dati dall'istanza di scrittura di un cluster database Aurora PostgreSQL in un bucket Amazon S3. Fornisce inoltre funzioni per l'importazione dei dati da Amazon S3. Per ulteriori informazioni, consulta [Importazione di dati da Amazon S3 in un cluster database Aurora PostgreSQL](USER_PostgreSQL.S3Import.md). L'estensione `aws_s3` dipende da alcune delle funzioni helper nell'estensione `aws_commons`, che vengono installate automaticamente quando necessario. 

**Per installare l'estensione `aws_s3`**

1. Usa psql (o pgAdmin) per connetterti all'istanza di scrittura del cluster database Aurora PostgreSQL come un utente che dispone di privilegi `rds_superuser`. Se hai mantenuto il nome predefinito durante il processo di configurazione, esegui la connessione come `postgres`.

   ```
   psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
   ```

1. Per installare l'estensione, esegui il comando seguente. 

   ```
   postgres=> CREATE EXTENSION aws_s3 CASCADE;
   NOTICE: installing required extension "aws_commons"
   CREATE EXTENSION
   ```

1. Per verificare che l'estensione sia installata, puoi usare il metacomando psql `\dx`.

   ```
   postgres=> \dx
          List of installed extensions
       Name     | Version |   Schema   |                 Description
   -------------+---------+------------+---------------------------------------------
    aws_commons | 1.2     | public     | Common data types across AWS services
    aws_s3      | 1.1     | public     | AWS S3 extension for importing data from S3
    plpgsql     | 1.0     | pg_catalog | PL/pgSQL procedural language
   (3 rows)
   ```

Le funzioni per importare dati da Amazon S3 ed esportare dati in Amazon S3 sono ora disponibili per l'uso.

### Verifica che la tua versione supporti le esportazioni verso Amazon S3
<a name="postgresql-s3-supported"></a>

Per verificare che la versione di Aurora PostgreSQL supporti l'esportazione in Amazon S3, puoi utilizzare il comando `describe-db-engine-versions`. L'esempio seguente verifica se la versione 10.14 può eseguire l'esportazione in Amazon S3.

```
aws rds describe-db-engine-versions --region us-east-1 \
--engine aurora-postgresql --engine-version 10.14 | grep s3Export
```

Se l'output include la stringa `"s3Export"`, allora il motore supporta le esportazioni Amazon S3. In caso contrario, il motore non le supporta.

## Panoramica dell'esportazione di dati in Amazon S3
<a name="postgresql-s3-export-overview"></a>

Per esportare i dati archiviati in un database Aurora PostgreSQL verso un bucket Amazon S3, attenersi alla procedura descritta di seguito.

**Per esportare i dati Aurora PostgreSQL in S3.**

1. Identifica un percorso del file Amazon S3 da utilizzare per l'esportazione dei dati. Per informazioni dettagliate su questo processo, consulta [Specifica del percorso del file Amazon S3 in cui eseguire l'esportazione](#postgresql-s3-export-file).

1. Fornisci l'autorizzazione ad accedere al bucket Amazon S3.

   Per esportare i dati in un file Amazon S3, concedi al cluster di database Aurora PostgreSQL l'autorizzazione per accedere al bucket Amazon S3 che verrà utilizzato dall'esportazione per lo storage. Questa operazione include le seguenti fasi:

   1. Crea una policy IAM che fornisce l'accesso a un bucket Amazon S3 in cui desideri eseguire l'esportazione.

   1. Creare un ruolo IAM.

   1. Collega la policy creata al ruolo creato.

   1. Aggiungi questo ruolo IAM al cluster di database .

   Per informazioni dettagliate su questo processo, consulta [Configurazione dell'accesso a un bucket Amazon S3](postgresql-s3-export-access-bucket.md).

1. Identifica una query del database per ottenere i dati. Esporta i dati della query chiamando la funzione `aws_s3.query_export_to_s3`. 

   Dopo aver completato le attività di preparazione precedenti, utilizza la funzione [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) per esportare i risultati della query in Amazon S3. Per informazioni dettagliate su questo processo, consulta [Esportazione dei dati della query utilizzando la funzione aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-examples.md).

## Specifica del percorso del file Amazon S3 in cui eseguire l'esportazione
<a name="postgresql-s3-export-file"></a>

Specifica le seguenti informazioni per identificare la posizione in Amazon S3 in cui desideri esportare i dati:
+ Nome del bucket – Un *bucket* è un container di oggetti o file Amazon S3.

  Per ulteriori informazioni sull’archiviazione dei dati con Amazon S3, consulta [Creazione di un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) e [Utilizzo degli oggetti](https://docs.aws.amazon.com/AmazonS3/latest/userguide/uploading-downloading-objects.html) nella *Guida per l’utente di Amazon Simple Storage Service*. 
+ Percorso del file – Il percorso del file identifica la posizione di archiviazione dell'esportazione nel bucket Amazon S3. Il percorso del file comprende:
  + Un prefisso del percorso facoltativo che identifica un percorso di cartella virtuale.
  + Un prefisso del file che identifica uno o più file da archiviare. Esportazioni di dimensioni maggiori vengono archiviate in più file, ciascuno con una dimensione massima di circa 6 GB. I nomi di file aggiuntivi hanno lo stesso prefisso di file ma con l'aggiunta di `_partXX`. `XX` rappresenta 2, poi 3 e così via.

  Ad esempio, un percorso del file con una cartella `exports` e un prefisso del file `query-1-export` è `/exports/query-1-export`.
+ AWS Regione (opzionale): la AWS regione in cui si trova il bucket Amazon S3. 
**Nota**  


  Per un elenco dei nomi delle AWS regioni e dei valori associati, vedere[ Regioni e zone di disponibilità](Concepts.RegionsAndAvailabilityZones.md).

Per conservare le informazioni sul file Amazon S3 relative alla posizione di archiviazione dell'esportazione, puoi utilizzare la funzione [aws\$1commons.create\$1s3\$1uri](postgresql-s3-export-functions.md#aws_commons.create_s3_uri) per creare una struttura composita `aws_commons._s3_uri_1` come descritto di seguito.

```
psql=> SELECT aws_commons.create_s3_uri(
   'amzn-s3-demo-bucket',
   'sample-filepath',
   'us-west-2'
) AS s3_uri_1 \gset
```

In seguito fornisci questo valore `s3_uri_1` come un parametro nella chiamata alla funzione [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3). Per alcuni esempi, consulta [Esportazione dei dati della query utilizzando la funzione aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-examples.md).

# Configurazione dell'accesso a un bucket Amazon S3
<a name="postgresql-s3-export-access-bucket"></a>

Per esportare i dati in Amazon S3, concedi all' del cluster di database PostgreSQL l'autorizzazione per accedere al bucket Amazon S3 di destinazione dei file. 

A tale scopo, procedi come indicato di seguito.

**Per concedere a un cluster di database PostgreSQL l'accesso ad Amazon S3 tramite un ruolo IAM**

1. Creare una policy IAM 

   Questa policy fornisce le autorizzazioni bucket e di oggetto che consentono all’ del cluster di database PostgreSQL di accedere a Amazon S3. 

   Come parte della creazione di questa policy, attenersi alla seguente procedura:

   1. Includere nella policy le seguenti operazioni obbligatorie per consentire il trasferimento dei file dall’ del cluster del database PostgreSQL a un bucket Amazon S3: 
      + `s3:PutObject`
      + `s3:AbortMultipartUpload`

   1. Includere l'Amazon Resource Name (ARN) che identifica il bucket Amazon S3 e gli oggetti nel bucket. Il formato ARN per l'accesso a Amazon S3 è: `arn:aws:s3:::amzn-s3-demo-bucket/*`

   Per ulteriori informazioni sulla creazione di una policy IAM per Aurora PostgreSQL, consulta [Creazione e utilizzo di una policy IAM per l'accesso al database IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md). Consulta anche il [Tutorial: Creare e collegare la prima policy gestita dal cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html) nella *Guida per l'utente di IAM*.

   Il AWS CLI comando seguente crea una policy IAM denominata `rds-s3-export-policy` con queste opzioni. Concede l'accesso a un bucket denominato *amzn-s3-demo-bucket*. 
**avvertimento**  
Si consiglia di impostare il database all'interno di un VPC privato con policy di endpoint configurate per accedere a bucket specifici. Per ulteriori informazioni, consulta [Utilizzo delle policy dell'endpoint per Amazon S3](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html#vpc-endpoints-policies-s3) nella Guida per l'utente di Amazon VPC.  
Si consiglia di non creare una policy con accesso a tutte le risorse. Questo accesso può rappresentare una minaccia per la sicurezza dei dati. Se si crea una policy che consente a `S3:PutObject` di accedere a tutte le risorse utilizzando `"Resource":"*"`, un utente con privilegi di esportazione può esportare i dati in tutti i bucket dell'account. Inoltre, l'utente può esportare i dati in *qualsiasi bucket pubblicamente scrivibile all'interno della regione AWS *. 

   Dopo aver creato la policy, annotarne l'Amazon Resource Name (ARN). Per la fase successiva, in cui si associa la policy a un ruolo IAM, è necessario l'ARN. 

   ```
   aws iam create-policy  --policy-name rds-s3-export-policy  --policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Sid": "s3export",
            "Action": [
              "s3:PutObject*",
              "s3:ListBucket",
              "s3:GetObject*",
              "s3:DeleteObject*",
              "s3:GetBucketLocation",
              "s3:AbortMultipartUpload"
            ],
            "Effect": "Allow",
            "Resource": [
              "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ] 
          }
        ] 
      }'
   ```

1. Creare un ruolo IAM. 

   In questo modo, Aurora PostgreSQL può assumere questo ruolo IAM per tuo conto, per accedere ai bucket Amazon S3. Per ulteriori informazioni, consulta la pagina relativa alla [creazione di un ruolo per delegare le autorizzazioni a un utente IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) nella *Guida per l'utente IAM*.

   Si consiglia di utilizzare le chiavi di contesto delle condizioni globali `[aws:SourceArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)` e `[aws:SourceAccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)` nelle policy basate sulle risorse per limitare le autorizzazioni del servizio a una risorsa specifica. Questo è il modo più efficace per proteggersi dal [problema di deputy confused](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). 

   Se si utilizzano entrambe le chiavi di contesto delle condizioni globali e il valore `aws:SourceArn` contiene l'ID account, il valore `aws:SourceAccount` e l’account nel valore `aws:SourceArn` devono utilizzare lo stesso ID account quando viene utilizzato nella stessa dichiarazione di policy.
   + Utilizzare `aws:SourceArn` se si desidera un accesso cross-service per una singola risorsa. 
   + Utilizzare `aws:SourceAccount` se si desidera consentire l'associazione di qualsiasi risorsa in tale account all'uso cross-service.

    Nella policy, assicurarsi di utilizzare la chiave di contesto della condizione globale `aws:SourceArn` con l'ARN completo della risorsa. L'esempio seguente mostra come eseguire questa operazione utilizzando il AWS CLI comando per creare un ruolo denominato`rds-s3-export-role`.   
**Example**  

   Per Linux, macOS o Unix:

   ```
   aws iam create-role  \
       --role-name rds-s3-export-role  \
       --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                   "aws:SourceAccount": "111122223333",
                   "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:cluster:dbname"
                   }
                }
          }
        ] 
      }'
   ```

   Per Windows:

   ```
   aws iam create-role  ^
       --role-name rds-s3-export-role  ^
       --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                   "aws:SourceAccount": "111122223333",
                   "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:cluster:dbname"
                   }
                }
          }
        ] 
      }'
   ```

1. Collegare la policy IAM al ruolo IAM creato.

   Il AWS CLI comando seguente associa la policy creata in precedenza al ruolo denominato `rds-s3-export-role.` Replace `your-policy-arn` con l'ARN della policy annotato in un passaggio precedente. 

   ```
   aws iam attach-role-policy  --policy-arn your-policy-arn  --role-name rds-s3-export-role  
   ```

1. Aggiungere il ruolo IAM al cluster. A tale scopo, utilizzare Console di gestione AWS o AWS CLI, come descritto di seguito.

## Console
<a name="collapsible-section-1"></a>

**Per aggiungere un ruolo IAM al cluster di database PostgreSQL tramite la console**

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

1. Scegliere il nome del cluster di database PostgreSQL per visualizzarne i dettagli.

1. Nella scheda **Connectivity & security (Connettività e sicurezza)**, nella sezione **Manage IAM roles (Gestisci ruoli IAM)**, selezionare il ruolo da aggiungere sotto **Add IAM roles to this instance (Aggiungi ruoli IAM a questa istanza)**. 

1. In **Feature (Caratteristica)**, scegliere **s3Export**.

1. Scegliere **Add role (Aggiungi ruolo)**.

## AWS CLI
<a name="collapsible-section-2"></a>

**Per aggiungere un ruolo IAM a un cluster di database PostgreSQL tramite CLI**
+ Utilizzare il seguente comando per aggiungere il ruolo al cluster di database PostgreSQL denominato `my-db-cluster`. Sostituire *`your-role-arn`* con l'ARN del ruolo annotato in precedenza. Utilizzare `s3Export` come valore dell’opzione `--feature-name`.   
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds add-role-to-db-cluster \
     --db-cluster-identifier my-db-cluster \
     --feature-name s3Export \
     --role-arn your-role-arn   \
     --region your-region
  ```

  Per Windows:

  ```
  aws rds add-role-to-db-cluster ^
     --db-cluster-identifier my-db-cluster ^
     --feature-name s3Export ^
     --role-arn your-role-arn ^
     --region your-region
  ```

# Esportazione dei dati della query utilizzando la funzione aws\$1s3.query\$1export\$1to\$1s3
<a name="postgresql-s3-export-examples"></a>

Esporta i dati PostgreSQL in Amazon S3 chiamando la funzione [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3). 

**Topics**
+ [

## Prerequisiti
](#postgresql-s3-export-examples-prerequisites)
+ [

## Chiamare aws\$1s3.query\$1export\$1to\$1s3
](#postgresql-s3-export-examples-basic)
+ [

## Esportazione in un file CSV che utilizza un delimitatore personalizzato
](#postgresql-s3-export-examples-custom-delimiter)
+ [

## Esportazione in un file binario con codifica
](#postgresql-s3-export-examples-encoded)

## Prerequisiti
<a name="postgresql-s3-export-examples-prerequisites"></a>

Prima di utilizzare la funzione `aws_s3.query_export_to_s3`, assicurati di completare i seguenti prerequisiti:
+ Installa le estensioni PostgreSQL richieste come descritto in [Panoramica dell'esportazione di dati in Amazon S3](postgresql-s3-export.md#postgresql-s3-export-overview).
+ Determina dove esportare i dati in Amazon S3 come descritto in [Specifica del percorso del file Amazon S3 in cui eseguire l'esportazione](postgresql-s3-export.md#postgresql-s3-export-file).
+ Assicurati che il cluster di database abbia accesso di esportazione a Amazon S3 come descritto in [Configurazione dell'accesso a un bucket Amazon S3](postgresql-s3-export-access-bucket.md).

Gli esempi seguenti utilizzano una tabella del database denominata `sample_table`. Questi esempi esportano i dati in un bucket denominato *amzn-s3-demo-bucket*. La tabella e i dati di esempio vengono creati con le seguenti istruzioni SQL in psql.

```
psql=> CREATE TABLE sample_table (bid bigint PRIMARY KEY, name varchar(80));
psql=> INSERT INTO sample_table (bid,name) VALUES (1, 'Monday'), (2,'Tuesday'), (3, 'Wednesday');
```

## Chiamare aws\$1s3.query\$1export\$1to\$1s3
<a name="postgresql-s3-export-examples-basic"></a>

Di seguito vengono illustrati le modalità di base per chiamare la funzione [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3). 

In questi esempi viene utilizzata la variabile `s3_uri_1` per identificare una struttura contenente le informazioni che identificano il file Amazon S3. Utilizzare la funzione [aws\$1commons.create\$1s3\$1uri](postgresql-s3-export-functions.md#aws_commons.create_s3_uri) per creare la struttura.

```
psql=> SELECT aws_commons.create_s3_uri(
   'amzn-s3-demo-bucket',
   'sample-filepath',
   'us-west-2'
) AS s3_uri_1 \gset
```

Anche se i parametri variano per le due chiamate di funzione `aws_s3.query_export_to_s3` seguenti, i risultati sono gli stessi per questi esempi. Tutte le righe della tabella `sample_table` vengono esportate in un bucket denominato *amzn-s3-demo-bucket*. 

```
psql=> SELECT * FROM aws_s3.query_export_to_s3('SELECT * FROM sample_table', :'s3_uri_1');

psql=> SELECT * FROM aws_s3.query_export_to_s3('SELECT * FROM sample_table', :'s3_uri_1', options :='format text');
```

I parametri sono descritti come segue:
+ `'SELECT * FROM sample_table'` – Il primo parametro è una stringa di testo obbligatoria contenente una query SQL. Il motore PostgreSQL esegue questa query. I risultati della query vengono copiati nel bucket S3 identificato in altri parametri.
+ `:'s3_uri_1'` – Questo parametro è una struttura che identifica il file Amazon S3. In questo esempio viene utilizzata una variabile per identificare la struttura creata in precedenza. È invece possibile creare la struttura includendo la chiamata di funzione `aws_commons.create_s3_uri` in linea all'interno della chiamata di funzione `aws_s3.query_export_to_s3` come segue.

  ```
  SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 
     aws_commons.create_s3_uri('amzn-s3-demo-bucket', 'sample-filepath', 'us-west-2') 
  );
  ```
+ `options :='format text'` – Il parametro `options` è una stringa di testo opzionale contenente argomenti `COPY` PostgreSQL. La procedura di copia utilizza gli argomenti e il formato del comando [COPY di PostgreSQL](https://www.postgresql.org/docs/current/sql-copy.html). 

Se il file specificato non esiste nel bucket Amazon S3, viene creato. Se il file esiste già, viene sovrascritto. La sintassi per accedere ai dati esportati Amazon S3 è la seguente.

```
s3-region://bucket-name[/path-prefix]/file-prefix
```

Esportazioni di dimensioni maggiori vengono archiviate in più file, ciascuno con una dimensione massima di circa 6 GB. I nomi di file aggiuntivi hanno lo stesso prefisso di file ma con l'aggiunta di `_partXX`. `XX` rappresenta 2, poi 3 e così via. Ad esempio, supponi di specificare il percorso in cui archivi i file di dati come segue.

```
s3-us-west-2://amzn-s3-demo-bucket/my-prefix
```

Se l'esportazione deve creare tre file di dati, il bucket Amazon S3 contiene i seguenti file di dati.

```
s3-us-west-2://amzn-s3-demo-bucket/my-prefix
s3-us-west-2://amzn-s3-demo-bucket/my-prefix_part2
s3-us-west-2://amzn-s3-demo-bucket/my-prefix_part3
```

Per il riferimento completo per questa funzione e altri modi per chiamarla, consulta [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3). Per ulteriori informazioni sull'accesso ai file in Amazon S3, consulta [Visualizzazione di un oggetto](https://docs.aws.amazon.com/AmazonS3/latest/userguide/OpeningAnObject.html) nella *Guida per l'utente di Amazon Simple Storage Service*. 

## Esportazione in un file CSV che utilizza un delimitatore personalizzato
<a name="postgresql-s3-export-examples-custom-delimiter"></a>

Nell'esempio seguente viene illustrato come chiamare la funzione [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) per esportare i dati in un file che utilizza un delimitatore personalizzato. Nell'esempio vengono utilizzati gli argomenti del comando [PostgreSQL COPY](https://www.postgresql.org/docs/current/sql-copy.html) per specificare il formato CSV (valori delimitati da virgole) e un delimitatore : (due punti).

```
SELECT * from aws_s3.query_export_to_s3('select * from basic_test', :'s3_uri_1', options :='format csv, delimiter $$:$$');
```

## Esportazione in un file binario con codifica
<a name="postgresql-s3-export-examples-encoded"></a>

Nell'esempio seguente viene illustrato come chiamare la funzione [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) per esportare i dati in un file binario con codifica Windows-1253.

```
SELECT * from aws_s3.query_export_to_s3('select * from basic_test', :'s3_uri_1', options :='format binary, encoding WIN1253');
```

# Informazioni di riferimento sulle funzioni
<a name="postgresql-s3-export-functions"></a>

**Topics**
+ [

## aws\$1s3.query\$1export\$1to\$1s3
](#aws_s3.export_query_to_s3)
+ [

## aws\$1commons.create\$1s3\$1uri
](#aws_commons.create_s3_uri)

## aws\$1s3.query\$1export\$1to\$1s3
<a name="aws_s3.export_query_to_s3"></a>

Esporta un risultato della query PostgreSQL in un bucket Amazon S3. L'estensione `aws_s3` fornisce la funzione `aws_s3.query_export_to_s3`. 

I due parametri richiesti sono `query` e `s3_info`. Questi definiscono la query da esportare e identificano il bucket Amazon S3 in cui eseguire l’esportazione. Un parametro opzionale chiamato `options` fornisce la definizione di vari parametri di esportazione. Per esempi di utilizzo della funzione `aws_s3.query_export_to_s3`, consulta [Esportazione dei dati della query utilizzando la funzione aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-examples.md).

**Sintassi**

```
aws_s3.query_export_to_s3(
    query text,    
    s3_info aws_commons._s3_uri_1,    
    options text,
    kms_key text
)
```Parametri di input

*query*  
Una stringa di testo obbligatoria contenente una query SQL eseguita dal motore PostgreSQL. I risultati di questa query vengono copiati in un bucket S3 identificato nel parametro `s3_info`.

*s3\$1info*  
Un tipo composito `aws_commons._s3_uri_1` contenente le seguenti informazioni sull'oggetto S3:  
+ `bucket` – Il nome del bucket Amazon S3 per contenere il file.
+ `file_path` – Il nome e il percorso del file Amazon S3.
+ `region`— La AWS regione in cui si trova il bucket. Per un elenco dei nomi delle AWS regioni e dei valori associati, vedere[ Regioni e zone di disponibilità](Concepts.RegionsAndAvailabilityZones.md). 

  Attualmente, questo valore deve essere la stessa AWS regione dell' che esporta. L'impostazione predefinita è la AWS regione dell'istanza DB del cluster  che esporta. 
Per creare una struttura composita `aws_commons._s3_uri_1`, consulta la funzione [aws\$1commons.create\$1s3\$1uri](#aws_commons.create_s3_uri).

*options*  
Una stringa di testo opzionale contenente gli argomenti del comando `COPY` di PostgreSQL. Questi argomenti specificano come i dati devono essere copiati quando vengono esportati. Per maggiori dettagli, consulta la [documentazione di COPY PostgreSQL](https://www.postgresql.org/docs/current/sql-copy.html).

*testo kms\$1key*  
Una stringa di testo opzionale contenente la chiave KMS gestita dal cliente del bucket S3 in cui esportare i dati.

### Parametri di input alternativi
<a name="aws_s3.export_query_to_s3-alternate-parameters"></a>

Per facilitare il testing, puoi utilizzare un set esteso di parametri al posto del parametro `s3_info`. Di seguito vengono riportate le variazioni di sintassi aggiuntive per la funzione `aws_s3.query_export_to_s3`. 

Invece di utilizzare il parametro `s3_info` per identificare un file Amazon S3, utilizzare la combinazione dei parametri `bucket`, `file_path` e `region`.

```
aws_s3.query_export_to_s3(
    query text,    
    bucket text,    
    file_path text,    
    region text,    
    options text,
    kms_key text
)
```

*query*  
Una stringa di testo obbligatoria contenente una query SQL eseguita dal motore PostgreSQL. I risultati di questa query vengono copiati in un bucket S3 identificato nel parametro `s3_info`.

*bucket*  
Una stringa di testo obbligatoria contenente il nome del bucket Amazon S3 che contiene il file

*file\$1path*  
Una stringa di testo obbligatoria contenente il nome file di Amazon S3, incluso il percorso.

*Regione*  
Una stringa di testo opzionale contenente la AWS regione in cui si trova il bucket. Per un elenco dei nomi delle AWS regioni e dei valori associati, vedere[ Regioni e zone di disponibilità](Concepts.RegionsAndAvailabilityZones.md).  
Attualmente, questo valore deve essere la stessa AWS regione dell' che esporta. L'impostazione predefinita è la AWS regione dell'istanza DB del cluster  che esporta. 

*options*  
Una stringa di testo opzionale contenente gli argomenti del comando `COPY` di PostgreSQL. Questi argomenti specificano come i dati devono essere copiati quando vengono esportati. Per maggiori dettagli, consulta la [documentazione di COPY PostgreSQL](https://www.postgresql.org/docs/current/sql-copy.html).

*testo kms\$1key*  
Una stringa di testo opzionale contenente la chiave KMS gestita dal cliente del bucket S3 in cui esportare i dati.

### Parametri di output
<a name="aws_s3.export_query_to_s3-output-parameters"></a>

```
aws_s3.query_export_to_s3(
    OUT rows_uploaded bigint,
    OUT files_uploaded bigint,
    OUT bytes_uploaded bigint
)
```

*rows\$1uploaded*  
Il numero di righe della tabella che sono state caricate correttamente in Amazon S3 per la query specificata.

*files\$1uploaded*  
Il numero di file caricati in Amazon S3. I file vengono creati in dimensioni di circa 6 GB. A ogni file aggiuntivo creato è stato aggiunto `_partXX` al nome. `XX` rappresenta 2, poi 3 e così via, se necessario.

*bytes\$1uploaded*  
Il numero totale di byte caricati in Amazon S3.

### Esempi
<a name="aws_s3.export_query_to_s3-examples"></a>

```
psql=> SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 'amzn-s3-demo-bucket', 'sample-filepath');
psql=> SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 'amzn-s3-demo-bucket', 'sample-filepath','us-west-2');
psql=> SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 'amzn-s3-demo-bucket', 'sample-filepath','us-west-2','format text');
```

## aws\$1commons.create\$1s3\$1uri
<a name="aws_commons.create_s3_uri"></a>

Crea una struttura `aws_commons._s3_uri_1` per conservare le informazioni relative al file Amazon S3. I risultati della funzione `aws_commons.create_s3_uri` vengono utilizzati nel parametro `s3_info` della funzione [aws\$1s3.query\$1export\$1to\$1s3](#aws_s3.export_query_to_s3). Per un esempio di utilizzo della funzione `aws_commons.create_s3_uri`, consulta [Specifica del percorso del file Amazon S3 in cui eseguire l'esportazione](postgresql-s3-export.md#postgresql-s3-export-file).

**Sintassi**

```
aws_commons.create_s3_uri(
   bucket text,
   file_path text,
   region text
)
```Parametri di input

*bucket*  
Una stringa di testo obbligatoria contenente il nome del bucket Amazon S3 del file.

*file\$1path*  
Una stringa di testo obbligatoria contenente il nome file di Amazon S3, incluso il percorso.

*Regione*  
Una stringa di testo obbligatoria contenente la AWS regione in cui si trova il file. Per un elenco dei nomi delle AWS regioni e dei valori associati, vedere[ Regioni e zone di disponibilità](Concepts.RegionsAndAvailabilityZones.md).

# Risoluzione dei problemi di accesso a Amazon S3
<a name="postgresql-s3-export-troubleshoot"></a>

Se si verificano problemi di connessione durante il tentativo di esportare i dati in Amazon S3, conferma innanzi tutto che le regole di accesso in uscita per il gruppo di sicurezza VPC associato all'istanza DB consentano la connettività di rete. In particolare, il gruppo di sicurezza deve disporre di una regola che consenta all'istanza database di inviare traffico TCP alla porta 443 e a qualsiasi indirizzo IPv4 (0.0.0.0/0). Per ulteriori informazioni, consulta [Fornitura dell'accesso al cluster di database nel VPC creando un gruppo di sicurezza](CHAP_SettingUp_Aurora.md#CHAP_SettingUp_Aurora.SecurityGroup).

Consulta anche quanto segue per i suggerimenti:
+ [Risoluzione dei problemi di identità e accesso in Amazon Aurora](security_iam_troubleshoot.md)
+ [Risoluzione dei problemi di Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/troubleshooting.html) nella *Guida per l'utente di Amazon Simple Storage Service*
+ [Risoluzione dei problemi di Amazon S3 e IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_iam-s3.html) nella *Guida per l'utente di IAM*.