

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

# Utilizzo di Amazon S3 come destinazione per AWS Database Migration Service
<a name="CHAP_Target.S3"></a>

Puoi migrare i dati su Amazon S3 AWS DMS utilizzando una qualsiasi delle fonti di database supportate. Quando si utilizza Amazon S3 come destinazione in un' AWS DMS attività, per impostazione predefinita i dati CDC (full load e change data capture) vengono scritti nel formato con valori separati da virgole (.csv). Per opzioni di storage più compatto e per query più rapide, è possibile scrivere i dati nel formato Apache Parquet (.parquet). 

AWS DMS nomina i file creati durante un caricamento completo utilizzando un contatore esadecimale incrementale, ad esempio .csv,... LOAD00001 LOAD00002 , A e così via per LOAD00009 i LOAD0000 file.csv. AWS DMS nomina i file CDC utilizzando i timestamp, ad esempio 20141029-1134010000.csv. Per ogni tabella di origine che contiene record, AWS DMS crea una cartella nella cartella di destinazione specificata (se la tabella di origine non è vuota). AWS DMS scrive tutti i file a pieno carico e CDC nel bucket Amazon S3 specificato. Puoi controllare la dimensione dei file AWS DMS creati utilizzando l'impostazione dell'[MaxFileSize](https://docs.aws.amazon.com/dms/latest/APIReference/API_S3Settings.html#DMS-Type-S3Settings-MaxFileSize)endpoint. 

Il parametro `bucketFolder` contiene il percorso in cui i file .csv o .parquet vengono archiviati prima di essere caricati nel bucket S3. Con i file .csv i dati di tabella vengono archiviati nel formato seguente nel bucket S3 con i file di pieno carico.

```
database_schema_name/table_name/LOAD00000001.csv
database_schema_name/table_name/LOAD00000002.csv
...
database_schema_name/table_name/LOAD00000009.csv
database_schema_name/table_name/LOAD0000000A.csv
database_schema_name/table_name/LOAD0000000B.csv
...database_schema_name/table_name/LOAD0000000F.csv
database_schema_name/table_name/LOAD00000010.csv
...
```

Puoi specificare il delimitatore di colonna, di riga e altri parametri utilizzando gli attributi di connessione aggiuntivi. Per ulteriori informazioni sugli attributi di connessione aggiuntivi, consulta [Impostazioni degli endpoint quando si utilizza Amazon S3 come destinazione per AWS DMS](#CHAP_Target.S3.Configuring) alla fine di questa sezione.

Per evitare lo spoofing, AWS DMS convalida la proprietà del bucket prima di eseguire le operazioni. Per impostazione predefinita, quando l'impostazione dell'endpoint `ExpectedBucketOwner` Amazon S3 non è specificata, AWS DMS utilizza l'ID dell' AWS account che possiede il ruolo di AWS DMS servizio come proprietario previsto del bucket.

Per migrare i dati in un bucket S3 di proprietà di un AWS account diverso, devi specificare esplicitamente il proprietario effettivo del bucket nell'impostazione dell'endpoint Amazon S3`ExpectedBucketOwner`, come illustrato di seguito. In caso contrario, l'attività di replica tra account avrà esito negativo.

```
--s3-settings '{"ExpectedBucketOwner": "AWS_Account_ID"}'
```

Quando si esegue la replica delle modifiche AWS DMS ai dati utilizzando un'attività CDC, la prima colonna del file di output .csv o .parquet indica come sono stati modificati i dati di riga, come mostrato per il seguente file.csv.

```
I,101,Smith,Bob,4-Jun-14,New York
U,101,Smith,Bob,8-Oct-15,Los Angeles
U,101,Smith,Bob,13-Mar-17,Dallas
D,101,Smith,Bob,13-Mar-17,Dallas
```

Per questo esempio, supponiamo che ci sia una tabella nel database di origine. `EMPLOYEE` AWS DMS scrive i dati nel file .csv o .parquet, in risposta ai seguenti eventi:
+ Un nuovo dipendente (Bob Smith, ID dipendente 101) viene assunto il 4 giugno 2014 presso l'ufficio di New York. Nel file .csv o .parquet, il simbolo `I` nella prima colonna indica che una nuova riga è stata inserita con il comando `INSERT` nella tabella EMPLOYEE nel database di origine.
+ In data 8 ottobre 2015, Bob si trasferisce all'ufficio di Los Angeles. Nel file .csv o .parquet il simbolo `U` indica che la riga corrispondente nella tabella EMPLOYEE è stata aggiornata con il comando `UPDATE` per riflettere il trasferimento di Bob nel nuovo ufficio. Il resto della riga riflette la riga nella tabella EMPLOYEE come appare dopo `UPDATE`. 
+ Il 13 marzo 2017 Bob si trasferisce di nuovo all'ufficio di Dallas. Nel file .csv o .parquet `U` indica che la riga è stata nuovamente aggiornata con il comando `UPDATE`. Il resto della riga riflette la riga nella tabella EMPLOYEE come appare dopo `UPDATE`.
+ Dopo un periodo di tempo presso l'ufficio di Dallas, Bob lascia l'azienda. Nel file .csv o .parquet il simbolo `D` indica che la riga è stata eliminata con il comando `DELETE` nella tabella di origine. Il resto della riga riflette come la riga nella tabella EMPLOYEE appariva prima dell'eliminazione.

Si noti che, per impostazione predefinita, per CDC, AWS DMS memorizza le modifiche alle righe per ogni tabella del database indipendentemente dall'ordine delle transazioni. Se desideri archiviare le modifiche della riga nei file CDC in base all'ordine delle transazioni, è necessario utilizzare le impostazioni dell'endpoint S3 per specificarlo e il percorso della cartella in cui desideri che i file delle transazioni CDC vengano archiviati sulla destinazione S3. Per ulteriori informazioni, consulta [Capturing Data Changes (CDC) incluso l'ordine di transazione sulla destinazione S3](#CHAP_Target.S3.EndpointSettings.CdcPath).

Per controllare la frequenza delle scritture su una destinazione Amazon S3 durante un'attività di replica dei dati, puoi configurare gli attributi aggiuntivi di connessione `cdcMaxBatchInterval` e `cdcMinFileSize`. In tal modo le prestazioni possono risultare migliori durante l'analisi dei dati senza ulteriori operazioni di sovraccarico. Per ulteriori informazioni, consulta [Impostazioni degli endpoint quando si utilizza Amazon S3 come destinazione per AWS DMS](#CHAP_Target.S3.Configuring) 

**Topics**
+ [Prerequisiti per l'utilizzo di Amazon S3 come destinazione](#CHAP_Target.S3.Prerequisites)
+ [Limitazioni all'utilizzo di Amazon S3 come destinazione](#CHAP_Target.S3.Limitations)
+ [Sicurezza](#CHAP_Target.S3.Security)
+ [Utilizzo di Apache Parquet per l'archiviazione di oggetti Amazon S3](#CHAP_Target.S3.Parquet)
+ [Applicazione di tag agli oggetti Amazon S3](#CHAP_Target.S3.Tagging)
+ [Creazione di AWS KMS chiavi per crittografare gli oggetti di destinazione di Amazon S3](#CHAP_Target.S3.KMSKeys)
+ [Utilizzo del partizionamento delle cartelle in base alla data](#CHAP_Target.S3.DatePartitioning)
+ [Caricamento parallelo di sorgenti partizionate quando si utilizza Amazon S3 come destinazione per AWS DMS](#CHAP_Target.S3.ParallelLoad)
+ [Impostazioni degli endpoint quando si utilizza Amazon S3 come destinazione per AWS DMS](#CHAP_Target.S3.Configuring)
+ [Utilizzo AWS Glue Data Catalog con un target Amazon S3 per AWS DMS](#CHAP_Target.S3.GlueCatalog)
+ [Utilizzo della crittografia dei dati, dei file parquet e della CDC sulla destinazione Amazon S3](#CHAP_Target.S3.EndpointSettings)
+ [Indicazione delle operazioni del DB di origine nei dati S3 migrati](#CHAP_Target.S3.Configuring.InsertOps)
+ [Tipi di dati di destinazione per Parquet S3](#CHAP_Target.S3.DataTypes)

## Prerequisiti per l'utilizzo di Amazon S3 come destinazione
<a name="CHAP_Target.S3.Prerequisites"></a>

Prima di utilizzare Amazon S3 come destinazione, controlla che le seguenti condizioni siano soddisfatte: 
+ Il bucket S3 che stai utilizzando come destinazione si trova nella stessa AWS regione dell'istanza di replica DMS che stai utilizzando per migrare i dati.
+ L' AWS account che utilizzi per la migrazione ha un ruolo IAM con accesso in scrittura ed eliminazione al bucket S3 che stai utilizzando come destinazione.
+ In questo ruolo ha accesso con il tagging in modo da poter aggiungere tag qualsiasi oggetto S3 scritto nel bucket di destinazione.
+ Il ruolo IAM è stato aggiunto da DMS (dms.amazonaws.com) come *entità attendibile*. 
+ Per la AWS DMS versione 3.4.7 e successive, DMS deve accedere al bucket di origine tramite un endpoint VPC o una route pubblica. Per informazioni sugli endpoint VPC, consulta. [Configurazione degli endpoint VPC per AWS DMS](CHAP_VPC_Endpoints.md)

Per configurare l'accesso a questo account, assicurarsi che il ruolo assegnato all'account utente utilizzato per creare l'attività di migrazione disponga del seguente set di autorizzazioni.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:PutObjectTagging"
            ],
            "Resource": [
                "arn:aws:s3:::buckettest2/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::buckettest2"
            ]
        }
    ]
}
```

------

Per i prerequisiti per l'utilizzo della convalida con S3 come destinazione, consulta [Prerequisiti per la convalida della destinazione S3](CHAP_Validating_S3.md#CHAP_Validating_S3_prerequisites).

## Limitazioni all'utilizzo di Amazon S3 come destinazione
<a name="CHAP_Target.S3.Limitations"></a>

Le seguenti limitazioni si applicano quando si utilizza Amazon S3 come destinazione:
+ Non abilitare il controllo delle versioni per S3. Se hai bisogno del controllo delle versioni S3, utilizza le policy del ciclo di vita per eliminare attivamente le vecchie versioni. In caso contrario, è possibile che si verifichino errori della connessione di test dell'endpoint a causa del timeout della chiamata `list-object` S3. Per creare una policy del ciclo di vita per un bucket S3, consulta [Gestione del ciclo di vita dello storage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html). Per eliminare la versione di un oggetto S3, consulta [Eliminazione di versioni di oggetti da un bucket con funzione Controllo delle versioni abilitata](https://docs.aws.amazon.com/AmazonS3/latest/dev/DeletingObjectVersions.html).
+ Un bucket S3 abilitato per VPC (VPC del gateway) è supportato nelle versioni 3.4.7 e successive.
+ Per l'acquisizione dei dati di modifica (CDC) sono supportati i seguenti comandi DDL (Data Definition Language): Truncate Table, Drop Table, Create Table, Rename Table, Add Column, Drop Column, Rename Column e Change Column Data Type. Tieni presente che quando una colonna viene aggiunta, eliminata o rinominata nel database di origine, non viene registrata alcuna istruzione ALTER nel bucket S3 di destinazione e AWS DMS non modifica i record creati in precedenza per adattarli alla nuova struttura. Dopo la modifica, AWS DMS crea tutti i nuovi record utilizzando la nuova struttura della tabella.
**Nota**  
Un'operazione DDL di troncamento rimuove tutti i corrispondenti file e le cartelle della tabella da un bucket S3. È possibile utilizzare le impostazioni delle attività per disabilitare tale comportamento e configurare il modo in cui DMS gestisce l'approccio DDL durante l'acquisizione dei dati di modifica (CDC). Per ulteriori informazioni, consulta [Impostazioni delle attività per la gestione di DDL durante l'elaborazione delle modifiche](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md).
+ La modalità LOB completa non è supportata.
+ Le modifiche apportate alla struttura della tabella di origine durante il caricamento completo non sono supportate. Le modifiche apportate ai dati sono supportate durante il pieno carico.
+ Se più attività replicano i dati dalla stessa tabella di origine allo stesso bucket dell'endpoint S3 di destinazione, tali attività scrivono sullo stesso file. Se l'origine dati proviene dalla stessa tabella, è consigliabile specificare endpoint di destinazione (bucket) diversi.
+ `BatchApply` non è supportato per un endpoint S3. L'utilizzo dell'applicazione in batch, ad esempio l'impostazione dell'attività dei metadati di destinazione `BatchApplyEnabled`, per una destinazione S3 potrebbe causare la perdita di dati.
+ Non puoi usare `DatePartitionEnabled` o `addColumnName` insieme con `PreserveTransactions` o `CdcPath`.
+ AWS DMS non supporta la ridenominazione di più tabelle di origine nella stessa cartella di destinazione utilizzando le regole di trasformazione.
+ In caso di scrittura intensiva sulla tabella di origine durante la fase di pieno carico, DMS può scrivere record duplicati nel bucket S3 o modifiche memorizzate nella cache.
+ Se configuri l'attività con il `TargetTablePrepMode` come `DO_NOTHING`, DMS può scrivere record duplicati nel bucket S3 se l'attività si interrompe e riprende improvvisamente durante la fase di pieno carico.
+ Se configuri l'endpoint di destinazione con `PreserveTransactions` impostato su `true`, il ricaricamento di una tabella non cancella i file CDC generati in precedenza. Per ulteriori informazioni, consulta [Capturing Data Changes (CDC) incluso l'ordine di transazione sulla destinazione S3](#CHAP_Target.S3.EndpointSettings.CdcPath).

Per le limitazioni all'utilizzo della convalida con S3 come destinazione, consulta [Limitazioni all'utilizzo della convalida della destinazione S3](CHAP_Validating_S3.md#CHAP_Validating_S3_limitations).

## Sicurezza
<a name="CHAP_Target.S3.Security"></a>

Per utilizzare Amazon S3 come destinazione, l'account usato per la migrazione deve disporre dell'accesso per scrittura ed eliminazione al bucket Amazon S3 in uso come destinazione. Specifica il nome della risorsa Amazon (ARN) di un ruolo IAM che dispone delle autorizzazioni necessarie per accedere ad Amazon S3. 

AWS DMS supporta una serie di concessioni predefinite per Amazon S3, note come elenchi di controllo degli accessi predefiniti (). ACLs Ogni ACL predefinita dispone di un set di assegnatari e autorizzazioni che sono utilizzabili per impostare le autorizzazioni per il bucket Amazon S3. Puoi specificare un'ACL predefinita mediante `cannedAclForObjects` sull'attributo della stringa di connessione per l'endpoint di destinazione S3. Per ulteriori informazioni sull'utilizzo dell'attributo di connessione aggiuntivo `cannedAclForObjects`, consulta [Impostazioni degli endpoint quando si utilizza Amazon S3 come destinazione per AWS DMS](#CHAP_Target.S3.Configuring). [Per ulteriori informazioni su Amazon S3 in scatola ACLs, consulta Canned ACL.](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl)

Il ruolo IAM utilizzato per la migrazione deve essere in grado di eseguire l'operazione API `s3:PutObjectAcl`.

## Utilizzo di Apache Parquet per l'archiviazione di oggetti Amazon S3
<a name="CHAP_Target.S3.Parquet"></a>

Il formato valore separato da virgole (csv) è il formato di archiviazione predefinito per gli oggetti di destinazione Amazon S3. Per storage più compatto e per query più rapide, è possibile utilizzare Apache parquet (.parquet) come formato di archiviazione.

Apache Parquet è un formato di archiviazione dei file open source originariamente progettato per Hadoop. Per ulteriori informazioni su Apache Parquet, consulta [https://parquet.apache.org/](https://parquet.apache.org/).

Per impostare.parquet come formato di storage per gli oggetti di destinazione S3 migrati, è possibile utilizzare i seguenti meccanismi:
+ Le impostazioni dell'endpoint fornite come parametri di un oggetto JSON durante la creazione dell'endpoint utilizzando la AWS CLI o l'API per AWS DMS. Per ulteriori informazioni, consulta [Utilizzo della crittografia dei dati, dei file parquet e della CDC sulla destinazione Amazon S3](#CHAP_Target.S3.EndpointSettings).
+ Gli attributi aggiuntivi di connessione forniti come un elenco separato da punti e virgola durante la creazione dell'endpoint. Per ulteriori informazioni, consulta [Impostazioni degli endpoint quando si utilizza Amazon S3 come destinazione per AWS DMS](#CHAP_Target.S3.Configuring).

## Applicazione di tag agli oggetti Amazon S3
<a name="CHAP_Target.S3.Tagging"></a>

È possibile applicare i tag agli oggetti Amazon S3 creati da un'istanza di replica specificando oggetti JSON appropriati come parte delle regole di mappatura attività-tabella. Per ulteriori informazioni sui requisiti e sulle opzioni per l'applicazione di tag agli oggetti S3, inclusi i nomi di tag validi, consulta [Tagging oggetti](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html) nella *Guida per l'utente di Amazon Simple Storage Service*. Per ulteriori informazioni sulla mappatura delle tabelle mediante JSON, consulta [Specifica della selezione delle tabelle e delle regole di trasformazione tramite JSON](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.md).

Puoi aggiungere tag agli oggetti S3 creati per tabelle e schemi specifici utilizzando uno o più oggetti JSON del tipo di regola `selection`. Quindi fai seguire all'oggetto (o agli oggetti) `selection` uno o più oggetti JSON del tipo di regola `post-processing` con l'operazione `add-tag`. Tali regole di post elaborazione identificano gli oggetti S3 a cui desideri aggiungere tag e specificano i nomi e i valori dei tag che desideri aggiungere a questi oggetti S3.

Puoi trovare i parametri da specificare negli oggetti JSON del tipo di regola `post-processing` nella tabella riportata di seguito.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/dms/latest/userguide/CHAP_Target.S3.html)

Quando si specificano più tipi di regole `post-processing` per applicare tag a una selezione di oggetti S3, a ogni oggetto S3 vengono aggiunti tag utilizzando un solo oggetto `tag-set` da una regola di post-elaborazione. Il set di tag utilizzato per aggiungere tag a un determinato oggetto S3 è quello della regola di post-elaborazione il cui localizzatore di oggetti associato è maggiormente corrispondente a tale oggetto S3 

Ad esempio, supponiamo che due regole di post-elaborazione identificano lo stesso oggetto S3. Supponi, inoltre, che il localizzatore di oggetti di una regola utilizza caratteri jolly e che localizzatore di oggetti dell'altra regola utilizza una corrispondenza esatta per identificare l'oggetto S3 (senza caratteri jolly). In questo caso, il set di tag associato alla regola di post-elaborazione con la corrispondenza esatta viene utilizzato per aggiungere i tag all'oggetto S3. Se più regole di post-elaborazione corrispondono a un determinato oggetto S3 in modo ugualmente valido, per aggiungere tag all'oggetto viene utilizzato il set di tag associato con la prima di tali regole di post-elaborazione.

**Example Aggiunta di tag statici a un oggetto S3 creato per una singola tabella e un singolo schema**  
La seguente selezione e regole di post produzione aggiungono tre tag (`tag_1`, `tag_2` e `tag_3` con i corrispondenti valori statici `value_1`, `value_2` e `value_3`) a un oggetto S3 creato. Questo oggetto S3 corrisponde ad una singola tabella nell'origine denominata `STOCK` con uno schema denominato `aat2`.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "5",
            "rule-name": "5",
            "object-locator": {
                "schema-name": "aat2",
                "table-name": "STOCK"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "post-processing",
            "rule-id": "41",
            "rule-name": "41",
            "rule-action": "add-tag",
            "object-locator": {
                "schema-name": "aat2",
                "table-name": "STOCK"
            },
            "tag-set": [
              {
                "key": "tag_1",
                "value": "value_1"
              },
              {
                "key": "tag_2",
                "value": "value_2"
              },
              {
                "key": "tag_3",
                "value": "value_3"
              }                                     
           ]
        }
    ]
}
```

**Example Aggiunta di tag statici e dinamici per oggetti S3 creato per tabelle e schemi multipli**  
L'esempio seguente ha una selezione e due regole di post-elaborazione, dove l'input dall'origine include tutte le tabelle e tutti i relativi schemi.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "%",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "post-processing",
            "rule-id": "21",
            "rule-name": "21",
            "rule-action": "add-tag",
            "object-locator": {
                "schema-name": "%",
                "table-name": "%",
            },
            "tag-set": [
              { 
                "key": "dw-schema-name",
                "value":"${schema-name}"
              },
              {
                "key": "dw-schema-table",
                "value": "my_prefix_${table-name}"
              }
            ]
        },
        {
            "rule-type": "post-processing",
            "rule-id": "41",
            "rule-name": "41",
            "rule-action": "add-tag",
            "object-locator": {
                "schema-name": "aat",
                "table-name": "ITEM",
            },
            "tag-set": [
              {
                "key": "tag_1",
                "value": "value_1"
              },
              {
                "key": "tag_2",
                "value": "value_2"
              }           ]
        }
    ]
}
```
La prima regola di post-elaborazione aggiunge due tag (`dw-schema-name` e `dw-schema-table`) con i valori dinamici corrispondenti (`${schema-name}` e `my_prefix_${table-name}`) per quasi tutti gli oggetti S3 creati nella destinazione. L'eccezione è l'oggetto S3 identificato e al quale sono applicati tag con la seconda regola di post-elaborazione. Pertanto, ogni oggetto S3 di destinazione identificato dal localizzatore di oggetti jolly viene creato con i tag che identificano lo schema e la tabella a cui corrisponde nell'origine.  
La seconda regola di post-elaborazione aggiunge `tag_1` e `tag_2` con i corrispondenti valori statici `value_1` e `value_2` a un oggetto S3 creato identificato da un localizzatore di oggetti con corrispondenza esatta. Questo oggetto S3 creato corrisponde quindi alla singola tabella nell'origine denominata `ITEM` con uno schema denominato `aat`. A causa della corrispondenza esatta, questi tag sostituiscono qualsiasi tag in questo oggetto aggiunti dalla prima regola di post-elaborazione regola, che corrisponde agli oggetti S3 solo con i caratteri jolly.

**Example Aggiunta di nomi di tag e valori dinamici a oggetti S3**  
L'esempio seguente presenta di due regole di selezione e una regola di post-elaborazione. Qui l'input dall'origine include solo la tabella `ITEM` nello schema `retail` o nello schema `wholesale`.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "retail",
                "table-name": "ITEM"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "wholesale",
                "table-name": "ITEM"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "post-processing",
            "rule-id": "21",
            "rule-name": "21",
            "rule-action": "add-tag",
            "object-locator": {
                "schema-name": "%",
                "table-name": "ITEM",
            },
            "tag-set": [
              { 
                "key": "dw-schema-name",
                "value":"${schema-name}"
              },
              {
                "key": "dw-schema-table",
                "value": "my_prefix_ITEM"
              },
              {
                "key": "${schema-name}_ITEM_tag_1",
                "value": "value_1"
              },
              {
                "key": "${schema-name}_ITEM_tag_2",
                "value": "value_2"
              }
            ]
    ]
}
```
Il set di tag della regola di post-elaborazione aggiunge due tag (`dw-schema-name` e `dw-schema-table`) a tutti gli oggetti S3 creati per la tabella `ITEM` nella destinazione. Il primo tag ha il valore dinamico `"${schema-name}"` e il secondo tag ha un valore statico, `"my_prefix_ITEM"`. Pertanto, ogni oggetto S3 di destinazione viene creato con i tag che identificano lo schema e la tabella a cui corrisponde nell'origine.   
Inoltre, il set di tag aggiunge due ulteriori tag con nomi dinamici (`${schema-name}_ITEM_tag_1` e `"${schema-name}_ITEM_tag_2"`). Questi hanno i corrispondenti valori statici `value_1` e `value_2`. Pertanto, ognuno di questi tag viene denominato per o schema attuale, `retail` o `wholesale`. In questo oggetto non è possibile creare un nome di tag dinamico duplicato, perché ogni oggetto viene creato per un unico nome di schema univoco. Il nome dello schema viene utilizzato per creare un nome di tag univoco.

## Creazione di AWS KMS chiavi per crittografare gli oggetti di destinazione di Amazon S3
<a name="CHAP_Target.S3.KMSKeys"></a>

Puoi creare e utilizzare AWS KMS chiavi personalizzate per crittografare i tuoi oggetti di destinazione Amazon S3. Dopo aver creato una chiave KMS, è possibile utilizzarla per crittografare gli oggetti tramite uno dei seguenti approcci al momento della creazione dell'endpoint di destinazione S3:
+ Utilizza le seguenti opzioni per gli oggetti di destinazione S3 (con l'impostazione predefinita per lo storage di file in formato .csv) quando esegui il comando `create-endpoint` utilizzando la AWS CLI.

  ```
  --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", 
  "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", 
  "BucketName": "your-bucket-name", "EncryptionMode": "SSE_KMS", 
  "ServerSideEncryptionKmsKeyId": "your-KMS-key-ARN"}'
  ```

  Qui, il tuo- `your-KMS-key-ARN` è l'Amazon Resource Name (ARN) per la tua chiave KMS ed è necessario che il tuo ruolo IAM disponga delle autorizzazioni di accesso, vedi. [Utilizzo della crittografia dei dati, dei file parquet e della CDC sulla destinazione Amazon S3](#CHAP_Target.S3.EndpointSettings)
+ Imposta l'attributo di connessione aggiuntivo `encryptionMode` sul valore `SSE_KMS` e l'attributo della connessione aggiuntiva `serverSideEncryptionKmsKeyId` per l'ARN per la chiave KMS. Per ulteriori informazioni, consulta [Impostazioni degli endpoint quando si utilizza Amazon S3 come destinazione per AWS DMS](#CHAP_Target.S3.Configuring).

Per crittografare gli oggetti di destinazione Amazon S3 utilizzando una chiave KMS, è necessario disporre di un ruolo IAM che abbia le autorizzazioni per accedere al bucket Amazon S3. È possibile accedere a questo ruolo IAM in una policy (policy della chiave) collegata alla chiave di crittografia creata. È possibile farlo nella console IAM creando quanto segue:
+ Una policy con le autorizzazioni ad accedere al bucket Amazon S3.
+ Un ruolo IAM con la policy.
+ Una chiave di crittografia KMS con una policy della chiave che fa riferimento a questo ruolo.

Nelle seguenti procedure viene descritto come procedere.

**Per creare una policy IAM con le autorizzazioni ad accedere al bucket Amazon S3**

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

1. Nel riquadro di navigazione seleziona **Policies (Policy)**. Viene visualizzata la pagina **Policies (Policy)**.

1. Scegli **Crea policy**. Viene visualizzata la pagina **Crea policy**.

1. Scegli **Service (Servizio)**, quindi **S3**. Viene visualizzato un elenco di autorizzazioni di azioni.

1. Scegli **Expand all (Espandi tutto)** per espandere l'elenco e scegli come minimo le seguenti autorizzazioni:
   + **ListBucket**
   + **PutObject**
   + **DeleteObject**

   Scegli qualsiasi altra autorizzazione di cui hai bisogno, quindi scegli **Collapse all (Comprimi tutto)** per comprimere l'elenco.

1. Scegli **Resources (Risorse)** per specificare le risorse di cui desideri accedere. Come minimo, scegli **Tutte le risorse** per fornire l'accesso generale alle risorse Amazon S3.

1. Aggiungi tutte le altre condizioni o le autorizzazioni necessarie, quindi scegli **Review policy (Esamina policy)**. Controlla i tuoi risultati nella pagina **Review policy (Esamina policy)**.

1. Se le impostazioni sono quelle desiderate, immetti un nome per la policy (ad esempio, `DMS-S3-endpoint-access`) e qualsiasi ulteriore descrizione, quindi scegli **Create policy (Crea policy)**. Viene visualizzata la pagina **Policies (Policy)** con un messaggio che indica che la policy è stata creata.

1. Ricerca e scegli il nome della policy nell'elenco **Policies (Policy)** Viene visualizzata la pagina **Summary (Riepilogo)** che visualizza il file JSON per la policy simile al seguente.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:ListBucket",
                   "s3:DeleteObject"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

È stata creata la nuova policy per accedere alle risorse Amazon S3 per la crittografia con un nome specificato, ad esempio `DMS-S3-endpoint-access`.

**Per creare un ruolo IAM con questa policy**

1. Nella console IAM scegli **Ruoli** nel riquadro di navigazione. Viene visualizzata la pagina dei dettagli **Roles (Ruoli)**.

1. Scegli **Crea ruolo**. Viene visualizzata la pagina **Create role (Crea ruolo)**.

1. Con il AWS servizio selezionato come entità affidabile, scegli **DMS** come servizio per utilizzare il ruolo IAM.

1. Scegli **Successivo: autorizzazioni**. Viene visualizzata la vista **Allega policy di autorizzazione** nella pagina **Crea ruolo**.

1. Individuare e selezionare la policy IAM per il ruolo IAM creato nella procedura precedente (`DMS-S3-endpoint-access`).

1. Scegli **Successivo: Tag**. Viene visualizzata la vista **Aggiungi tag** nella pagina **Crea ruolo**. Qui è possibile aggiungere i tag desiderati.

1. Scegli **Prossimo: Rivedi**. Viene visualizzata la vista **Verifica** nella pagina **Crea ruolo**. Qui è possibile verificare i risultati.

1. Se le impostazioni sono quelle desiderate, immetti un nome per il ruolo (richiesto, ad esempio, `DMS-S3-endpoint-access-role`) e qualsiasi ulteriore descrizione, quindi scegli **Create role (Crea ruolo)**. Viene visualizzata la pagina dei dettagli **Roles (Ruoli)** con un messaggio che indica che il ruolo è stato creato.

È stato creato il nuova ruolo per accedere alle risorse Amazon S3 per la crittografia con un nome specificato, ad esempio `DMS-S3-endpoint-access-role`.

**Per creare una chiave di crittografia KMS con una policy della chiave che faccia riferimento al ruolo IAM**
**Nota**  
Per ulteriori informazioni su come AWS DMS funzionano le chiavi di AWS KMS crittografia, consulta[Impostazione di una chiave di crittografia e specificazione delle autorizzazioni AWS KMS](CHAP_Security.md#CHAP_Security.EncryptionKey).

1. Accedi a Console di gestione AWS e apri la console AWS Key Management Service (AWS KMS) in [https://console.aws.amazon.com/kms.](https://console.aws.amazon.com/kms)

1. Per modificare il Regione AWS, usa il selettore della regione nell'angolo in alto a destra della pagina.

1. Nel riquadro di navigazione, scegli **Chiavi gestite dal cliente**.

1. Scegli **Crea chiave**. Verrà visualizzata la pagina **Configure key (Configura chiave)**.

1. Alla voce **Key type (Tipo di chiave)**, scegliere **Symmetric (Simmetrica)**.
**Nota**  
Quando crei questa chiave, puoi creare solo una chiave simmetrica, perché tutti i AWS servizi, come Amazon S3, funzionano solo con chiavi di crittografia simmetriche.

1. Scegliere **Advanced Options (Opzioni avanzate)**. Alla voce **Key material origin (Origine del materiale della chiave)**, assicurarsi che sia selezionata la voce **KMS** quindi scegliere **Next (Avanti)**. Verrà visualizzata la pagina **Add labels (Aggiungi etichette)**.

1. Alla voce **Create alias and description (Crea alias e descrizione)**, inserire un alias per la chiave (ad esempio `DMS-S3-endpoint-encryption-key`) e qualsiasi descrizione aggiuntiva.

1. Alla voce **Tag**, aggiungere tutti i tag desiderati per identificare la chiave e monitorarne l'utilizzo, quindi scegliere **Next (Avanti)**. Verrà visualizzata la pagina **Define key administrative permissions (Definisci autorizzazioni amministrative della chiave)** che mostra un elenco di utenti e ruoli tra cui è possibile scegliere.

1. Aggiungi gli utenti e i ruoli che desideri gestiscano la chiave. Assicurati che questi utenti e ruoli dispongano delle autorizzazioni necessarie per gestire la chiave. 

1. Alla voce **Key deletion (Eliminazione chiave)**, scegliere se gli amministratori della chiave possono eliminarla, quindi scegliere **Next (Avanti)**. Verrà visualizzata la pagina **Define key usage permissions (Definisci autorizzazioni di utilizzo della chiave)** che mostra un elenco aggiuntivo di utenti e ruoli tra cui è possibile scegliere.

1. Per **Questo account** scegli tra gli utenti disponibili quelli che dovranno eseguire operazioni di crittografia sulle destinazioni Amazon S3. Scegli in **Ruoli** il ruolo creato in precedenza per abilitare l'accesso alla crittografia degli oggetti di destinazione Amazon S3, ad esempio `DMS-S3-endpoint-access-role`.

1. **Se desideri aggiungere altri account non elencati per avere lo stesso accesso, per **Altri AWS account, scegli **Aggiungi un AWS ** altro account**, quindi scegli Avanti.** Verrà visualizzata la pagina **Review and edit key policy (Rivedi e modifica la policy della chiave)** che mostra il JSON associato alla policy della chiave, che è possibile rivedere e modificare digitando all'interno del testo esistente. Qui è possibile visualizzare il punto in cui la policy della chiave fa riferimento al ruolo e agli utenti (ad esempio,`Admin` e `User1`) selezionati nella fase precedente. È anche possibile visualizzare le diverse operazioni sulla chiave permesse alle diverse entità (utenti e ruoli), come mostrato nel seguente esempio.

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

****  

   ```
   {
       "Id": "key-consolepolicy-3",
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Enable IAM User Permissions",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:root"
                   ]
               },
               "Action": "kms:*",
               "Resource": "*"
           },
           {
               "Sid": "Allow access for Key Administrators",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:role/Admin"
                   ]
               },
               "Action": [
                   "kms:Create*",
                   "kms:Describe*",
                   "kms:Enable*",
                   "kms:List*",
                   "kms:Put*",
                   "kms:Update*",
                   "kms:Revoke*",
                   "kms:Disable*",
                   "kms:Get*",
                   "kms:Delete*",
                   "kms:TagResource",
                   "kms:UntagResource",
                   "kms:ScheduleKeyDeletion",
                   "kms:CancelKeyDeletion"
               ],
               "Resource": "*"
           },
           {
               "Sid": "Allow use of the key",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role",
                       "arn:aws:iam::111122223333:role/Admin",
                       "arn:aws:iam::111122223333:role/User1"
                   ]
               },
               "Action": [
                   "kms:Encrypt",
                   "kms:Decrypt",
                   "kms:ReEncrypt*",
                   "kms:GenerateDataKey*",
                   "kms:DescribeKey"
               ],
               "Resource": "*"
           },
           {
               "Sid": "Allow attachment of persistent resources",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role",
                       "arn:aws:iam::111122223333:role/Admin",
                       "arn:aws:iam::111122223333:role/User1"
                   ]
               },
               "Action": [
                   "kms:CreateGrant",
                   "kms:ListGrants",
                   "kms:RevokeGrant"
               ],
               "Resource": "*",
               "Condition": {
                   "Bool": {
                       "kms:GrantIsForAWSResource": true
                   }
               }
           }
       ]
   }
   ```

------

1. Scegli **Fine**. Viene visualizzata la pagina **Chiavi di crittografia** con un messaggio che indica che la chiave KMS è stata creata.

È stata creata una nuova chiave KMS con un alias specificato (ad esempio, `DMS-S3-endpoint-encryption-key`). Questa chiave consente di AWS DMS crittografare gli oggetti di destinazione di Amazon S3.

## Utilizzo del partizionamento delle cartelle in base alla data
<a name="CHAP_Target.S3.DatePartitioning"></a>

AWS DMS supporta le partizioni di cartelle S3 in base alla data di commit della transazione quando utilizzi Amazon S3 come endpoint di destinazione. Con il partizionamento delle cartelle in base alla data puoi scrivere dati da un'unica tabella di origine in una struttura di cartelle con la gerarchia basata sulla data di un bucket S3. Il partizionamento delle cartelle eseguito durante la creazione di un endpoint di destinazione S3 offre i seguenti vantaggi:
+ Migliore gestione degli oggetti S3
+ Limite della dimensione di ogni cartella S3
+ Ottimizzazione delle query sul data lake o altre operazioni successive

Il partizionamento delle cartelle in base alla data si abilita quando si crea un endpoint di destinazione S3. È possibile abilitarlo quando si migrano i dati esistenti e si replicano le modifiche in corso (pieno carico e CDC) oppure si replicano solo le modifiche ai dati (sola CDC). Quando migri i dati esistenti e replichi le modifiche in corso, verranno partizionate solo le modifiche in corso. Utilizza le seguenti impostazioni dell'endpoint di destinazione:
+ `DatePartitionEnabled`: specifica il partizionamento in base alla data. Imposta questa opzione booleana su `true` per eseguire il partizionamento delle cartelle del bucket S3 in base alla data di commit delle transazioni. 

  Non è possibile utilizzare questa impostazione con `PreserveTransactions` o `CdcPath`.

  Il valore predefinito è `false`. 
+ `DatePartitionSequence`: identifica la sequenza del formato della data da utilizzare durante il partizionamento delle cartelle. Imposta questa opzione ENUM su `YYYYMMDD`, `YYYYMMDDHH`, `YYYYMM`, `MMYYYYDD` o `DDMMYYYY`. Il valore predefinito è `YYYYMMDD`. Utilizza questa impostazione quando `DatePartitionEnabled` è impostato su `true.`
+ `DatePartitionDelimiter`: specifica un delimitatore di separazione della data da utilizzare durante il partizionamento delle cartelle. Imposta questa opzione ENUM su `SLASH`, `DASH`, `UNDERSCORE` o `NONE`. Il valore predefinito è `SLASH`. Utilizza questa impostazione quando `DatePartitionEnabled` è impostato su `true`.
+ `DatePartitionTimezone`— Quando crei un endpoint di destinazione S3, imposta `DatePartitionTimezone` per convertire l'ora UTC corrente in un fuso orario specificato. La conversione avviene quando viene creata una cartella di partizione della data e viene generato un nome di file CDC. Il formato del fuso orario è Area/Posizione. Utilizzate questo parametro quando `DatePartitionedEnabled` è impostato su`true`, come illustrato nell'esempio seguente:

  ```
  s3-settings='{"DatePartitionEnabled": true, "DatePartitionSequence": "YYYYMMDDHH", "DatePartitionDelimiter": "SLASH", "DatePartitionTimezone":"Asia/Seoul", "BucketName": "dms-nattarat-test"}'
  ```

L'esempio seguente mostra come abilitare il partizionamento delle cartelle in base alla data, con valori predefiniti per la sequenza di partizione dei dati e il delimitatore. Utilizza l'`--s3-settings '{json-settings}'`opzione di AWS CLI. `create-endpoint`comando. 

```
   --s3-settings '{"DatePartitionEnabled": true,"DatePartitionSequence": "YYYYMMDD","DatePartitionDelimiter": "SLASH"}'
```

## Caricamento parallelo di sorgenti partizionate quando si utilizza Amazon S3 come destinazione per AWS DMS
<a name="CHAP_Target.S3.ParallelLoad"></a>

Puoi configurare un pieno carico parallelo di origini dati partizionate in destinazioni Amazon S3. Questo approccio migliora i tempi di caricamento per la migrazione dei dati partizionati dai motori di database di origine supportati alla destinazione S3. Per migliorare i tempi di caricamento dei dati di origine partizionati, crei sottocartelle di destinazione S3 mappate alle partizioni di ogni tabella del database di origine. Queste sottocartelle legate a partizioni consentono di AWS DMS eseguire processi paralleli per popolare ogni sottocartella sulla destinazione.

Per configurare un pieno carico parallelo di una destinazione S3, S3 supporta tre tipi di regole `parallel-load` per la regola `table-settings` di mappatura delle tabelle:
+ `partitions-auto`
+ `partitions-list`
+ `ranges`

Per ulteriori informazioni su questi tipi di regole di caricamento parallelo, consulta [Regole e operazioni delle impostazioni di tabella e raccolta](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md).

Per i tipi di regole `partitions-auto` e `partitions-list`, AWS DMS utilizza ogni nome di partizione dell'endpoint di origine per identificare la struttura della sottocartella di destinazione, come segue.

```
bucket_name/bucket_folder/database_schema_name/table_name/partition_name/LOADseq_num.csv
```

Qui, il percorso della sottocartella in cui i dati vengono migrati e archiviati sulla destinazione S3 include una sottocartella `partition_name` aggiuntiva che corrisponde a una partizione di origine con lo stesso nome. Questa sottocartella `partition_name` archivia uno o più file `LOADseq_num.csv` contenenti i dati migrati dalla partizione di origine specificata. `seq_num` è il suffisso del numero di sequenza nel nome del file.csv, ad esempio `00000001` nel file.csv denominato `LOAD00000001.csv`.

Tuttavia, alcuni motori di database, come MongoDB e DocumentDB, non supportano il concetto di partizione. Per questi motori di database, AWS DMS aggiunge l'indice del segmento di origine in esecuzione come prefisso al nome del file.csv di destinazione, come segue.

```
.../database_schema_name/table_name/SEGMENT1_LOAD00000001.csv
.../database_schema_name/table_name/SEGMENT1_LOAD00000002.csv
...
.../database_schema_name/table_name/SEGMENT2_LOAD00000009.csv
.../database_schema_name/table_name/SEGMENT3_LOAD0000000A.csv
```

Qui, i file `SEGMENT1_LOAD00000001.csv` e `SEGMENT1_LOAD00000002.csv` sono denominati con lo stesso prefisso dell'indice del segmento di origine in esecuzione `SEGMENT1`. Sono denominati così perché i dati di origine migrati per questi due file .csv sono associati allo stesso indice del segmento di origine in esecuzione. I dati migrati archiviati in ciascuno dei file `SEGMENT2_LOAD00000009.csv` e `SEGMENT3_LOAD0000000A.csv` di destinazione sono associati a diversi indici dei segmenti di origine in esecuzione. Ogni file ha il nome preceduto dal nome dell'indice del segmento in esecuzione `SEGMENT2` e `SEGMENT3`.

Per il tipo di caricamento parallelo `ranges`, è possibile definire i nomi e i valori delle colonne utilizzando le impostazioni `columns` e `boundaries` delle regole `table-settings`. Con queste regole puoi specificare le partizioni corrispondenti ai nomi dei segmenti, come segue.

```
"parallel-load": {
    "type": "ranges",
    "columns": [
         "region",
         "sale"
    ],
    "boundaries": [
          [
               "NORTH",
               "1000"
          ],
          [
               "WEST",
               "3000"
          ]
    ],
    "segment-names": [
          "custom_segment1",
          "custom_segment2",
          "custom_segment3"
    ]
}
```

Qui, l'impostazione `segment-names` definisce i nomi di tre partizioni per migrare i dati in parallelo sulla destinazione S3. I dati migrati vengono caricati in parallelo e archiviati in file.csv nelle sottocartelle delle partizioni nell'ordine, come indicato di seguito.

```
.../database_schema_name/table_name/custom_segment1/LOAD[00000001...].csv
.../database_schema_name/table_name/custom_segment2/LOAD[00000001...].csv
.../database_schema_name/table_name/custom_segment3/LOAD[00000001...].csv
```

Qui, AWS DMS memorizza una serie di file.csv in ciascuna delle tre sottocartelle di partizione. La serie di file .csv in ogni sottocartella di partizione viene denominata in modo incrementale a partire da `LOAD00000001.csv` fino alla migrazione di tutti i dati.

In alcuni casi, puoi non denominare in modo esplicito le sottocartelle di partizione per il tipo di caricamento parallelo `ranges` utilizzando l'impostazione `segment-names`. In questi casi, AWS DMS applica l'impostazione predefinita di creare ogni serie di file.csv nella relativa sottocartella. `table_name` Qui, AWS DMS antepone ai nomi di file di ogni serie di file .csv il nome dell'indice del segmento di origine in esecuzione, come segue.

```
.../database_schema_name/table_name/SEGMENT1_LOAD[00000001...].csv
.../database_schema_name/table_name/SEGMENT2_LOAD[00000001...].csv
.../database_schema_name/table_name/SEGMENT3_LOAD[00000001...].csv
...
.../database_schema_name/table_name/SEGMENTZ_LOAD[00000001...].csv
```

## Impostazioni degli endpoint quando si utilizza Amazon S3 come destinazione per AWS DMS
<a name="CHAP_Target.S3.Configuring"></a>

È possibile utilizzare le impostazioni degli endpoint per configurare la destinazione Amazon S3 in modo simile a come si usano gli attributi aggiuntivi di connessione. Le impostazioni vengono specificate quando si crea l'endpoint di destinazione utilizzando la AWS DMS console o utilizzando il `create-endpoint` comando in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), con la `--s3-settings '{"EndpointSetting": "value", ...}'` sintassi JSON.

**Nota**  
DMS scrive le modifiche ai file Parquet in base all'ordine di commit dal database di origine, ma quando si migrano più tabelle, l'ordine delle transazioni originale non viene mantenuto a causa del partizionamento a livello di tabella. Per mantenere le informazioni sulla sequenza delle transazioni, configura l'impostazione dell'`TimestampColumnName`endpoint in modo da includere il timestamp di commit di origine per ogni riga, che potrai quindi utilizzare nell'elaborazione a valle per ricostruire la sequenza di transazione originale. A differenza del formato CSV, che offre l'`PreserveTransactions`impostazione, i file Parquet gestiscono le transazioni in modo diverso grazie alla loro struttura di archiviazione a colonne, ma questo approccio consente un monitoraggio accurato dei tempi di commit all'origine, supporta la ricostruzione degli ordini delle transazioni post-migrazione e consente un'elaborazione efficiente dei dati mantenendo la coerenza dei dati.

La tabella riportata di seguito mostra le impostazioni degli endpoint che è possibile utilizzare con Amazon S3 come destinazione.


| **Opzione** | **Descrizione** | 
| --- | --- | 
| CsvNullValue |  Un parametro opzionale che specifica come vengono trattati i valori nulli. AWS DMS Durante la gestione del valore null, puoi utilizzare questo parametro per passare una stringa definita dall'utente come null durante la scrittura nella destinazione. Ad esempio, quando le colonne di destinazione sono nullable, puoi utilizzare questa opzione per distinguere tra il valore di stringa vuoto e il valore null.  Valore predefinito: `""` Valori validi: qualsiasi stringa valida Ad esempio: `--s3-settings '{"CsvNullValue": "NULL"}'` Se il valore della colonna del database di origine è nullo, nel file CSV S3, il valore della colonna è `NULL` al posto della stringa «».  | 
| AddColumnName |  Un parametro facoltativo che, quando impostato a `true` o a `y`, è possibile utilizzare per aggiungere informazioni al nome di colonna nel file .csv di output. Non è possibile utilizzare questo parametro con `PreserveTransactions` o `CdcPath`. Valore predefinito: `false` Valori validi: `true`, `false`, `y`, `n` Ad esempio: `--s3-settings '{"AddColumnName": true}'`  | 
| AddTrailingPaddingCharacter |  Usa l'impostazione dell'endpoint di destinazione S3 `AddTrailingPaddingCharacter` per aggiungere il riempimento ai dati delle stringhe. Il valore predefinito è `false`. Tipo: Booleano Ad esempio: `--s3-settings '{"AddTrailingPaddingCharacter": true}'`  | 
| BucketFolder |  Parametro opzionale per impostare un nome di cartella nel bucket S3. Se forniti, gli oggetti di destinazione vengono creati come file .csv o .parquet nel percorso `BucketFolder/schema_name/table_name/`. Se questo parametro non viene specificato, viene utilizzato il percorso `schema_name/table_name/`.  Ad esempio: `--s3-settings '{"BucketFolder": "testFolder"}'`  | 
| BucketName |  Il nome del bucket S3 in cui gli oggetti di destinazione S3 vengono creati come file .csv o .parquet. Ad esempio: `--s3-settings '{"BucketName": "buckettest"}'`  | 
| CannedAclForObjects |  Un valore che consente di AWS DMS specificare un elenco di controllo degli accessi predefinito (predefinito) per gli oggetti creati nel bucket S3 come file.csv o .parquet. *Per ulteriori informazioni su Amazon S3 in scatola ACLs, consulta [Canned ACL nella](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) Amazon S3 Developer Guide.* Valore predefinito: NONE I valori validi per questo attributo sono: NONE; PRIVATE; PUBLIC\$1READ; PUBLIC\$1READ\$1WRITE; AUTHENTICATED\$1READ; \$1READ; BUCKET\$1OWNER\$1READ; BUCKET\$1OWNER\$1FULL\$1CONTROL. AWS\$1EXEC Ad esempio: `--s3-settings '{"CannedAclForObjects": "PUBLIC_READ"}'`  | 
| CdcInsertsOnly |  Un parametro facoltativo durante il caricamento dell'acquisizione delle modifiche dei dati (Change Data Capture, CDC) per scrivere solo le operazioni INSERT nei file di output con valori separati da virgole (.csv) o file di storage colonnare (.parquet). Per impostazione predefinita (l'impostazione `false`), il primo campo in un record .csv o .parquet record contiene la lettera I (INSERT, inserisci), U (UPDATE, aggiorna) o D (DELETE, elimina). Questa lettera indica se la riga è stata inserita, aggiornata o eliminata nel database di origine di un caricamento CDC sulla destinazione. INSERTs Se è `true` impostato `y` su o, solo `cdcInsertsOnly` dal database di origine viene effettuata la migrazione al file.csv o .parquet. Solo per il formato .csv, la modalità di registrazione di queste istruzioni INSERT varia a seconda del valore di `IncludeOpForFullLoad`. Se `IncludeOpForFullLoad` è impostato su `true`, il primo campo di ogni record CDC è impostato su I per confermare l'operazione INSERT all'origine. Se `IncludeOpForFullLoad` è impostato su `false`, ogni record CDC viene scritto senza un primo campo per confermare l'operazione INSERT all'origine. Per ulteriori informazioni sul funzionamento congiunto di questi parametri, consulta [Indicazione delle operazioni del DB di origine nei dati S3 migrati](#CHAP_Target.S3.Configuring.InsertOps). Valore predefinito: `false` Valori validi: `true`, `false`, `y`, `n` Ad esempio: `--s3-settings '{"CdcInsertsOnly": true}'`  | 
| CdcInsertsAndUpdates |  Permette a una Change Data Capture (CDC) di scrivere le operazioni INSERT e UPDATE nei file di output con estensione .csv o .parquet (memorizzazione in formato colonnare). L'impostazione predefinita è`false`, ma quando `cdcInsertsAndUpdates` è impostata su `true` o `y` INSERTs e UPDATEs dal database di origine vengono migrate al file.csv o .parquet.  Solo per il formato di file.csv, il modo in cui questi annunci INSERTs UPDATEs vengono registrati dipende dal valore del parametro. `includeOpForFullLoad` Se `includeOpForFullLoad` è impostato su `true`, il primo campo di ogni record CDC viene impostato su `I` o `U` per indicare le operazioni INSERT e UPDATE all'origine. Ma se `includeOpForFullLoad` è impostato su `false`, i record CDC vengono scritti senza un'indicazione dell'operazione INSERT o UPDATE all'origine.   Per ulteriori informazioni sul funzionamento congiunto di questi parametri, consulta [Indicazione delle operazioni del DB di origine nei dati S3 migrati](#CHAP_Target.S3.Configuring.InsertOps).  `CdcInsertsOnly` e `cdcInsertsAndUpdates` non possono essere entrambi impostati su true per lo stesso endpoint. Imposta uno tra `cdcInsertsAndUpdates` o `cdcInsertsOnly` su `true` per lo stesso endpoint, ma non entrambi.   Valore predefinito: `false` Valori validi: `true`, `false`, `y`, `n` Ad esempio: `--s3-settings '{"CdcInsertsAndUpdates": true}'`  | 
|  `CdcPath`  |  Specifica il percorso della cartella dei file CDC. Per un'origine S3, questa impostazione è necessaria se un'attività acquisisce i dati modificati; altrimenti, è facoltativa. Se è impostato `CdcPath`, DMS legge i file CDC da questo percorso e replica le modifiche ai dati nell'endpoint di destinazione. Se `PreserveTransactions` impostato su true per una destinazione S3, DMS verifica che questo parametro sia impostato su un percorso di cartella nella destinazione S3 in cui DMS può salvare l'ordine di transazione per il caricamento CDC. DMS crea questo percorso della cartella CDC nella directory di lavoro di destinazione S3 o nella posizione di destinazione S3 specificata da `BucketFolder` e `BucketName`. Non è possibile utilizzare questo parametro con `DatePartitionEnabled` o `AddColumnName`. Tipo: String Ad esempio, se specifichi `CdcPath` come `MyChangedData` e `BucketName` come `MyTargetBucket` senza specificare `BucketFolder`, DMS crea il seguente percorso della cartella CDC: `MyTargetBucket/MyChangedData`.  Se specifichi lo stesso `CdcPath`, quindi specifichi `BucketName` come `MyTargetBucket` e `BucketFolder` come `MyTargetData`, DMS crea il seguente percorso della cartella CDC: `MyTargetBucket/MyTargetData/MyChangedData`. Questa impostazione è supportata nelle AWS DMS versioni 3.4.2 e successive. Quando acquisisce le modifiche ai dati nell'ordine delle transazioni, DMS memorizza sempre le modifiche di riga nei file.csv indipendentemente dal valore dell'impostazione S3 sulla DataFormat destinazione.   | 
|  `CdcMaxBatchInterval`  |  Condizione della lunghezza massima dell'intervallo, definita in secondi, per l'output di un file in Amazon S3. Valore predefinito: 60 secondi Quando `CdcMaxBatchInterval` viene specificato insieme a `CdcMinFileSize`, la scrittura del file viene attivata dalla condizione di parametro che viene soddisfatta per prima.  A partire dalla AWS DMS versione 3.5.3, quando si utilizza PostgreSQL o Aurora PostgreSQL come origine e Amazon S3 con Parquet come destinazione, la frequenza degli aggiornamenti dipende dalla quantità di dati che l'endpoint di destinazione è configurato per conservare in `confirmed_flush_lsn` memoria. AWS DMS `confirmed_flush_lsn`invia i dati all'origine solo dopo che i dati in memoria sono stati scritti su Amazon S3. Se configuri il `CdcMaxBatchInterval` parametro su un valore più alto, potresti osservare un maggiore utilizzo dello slot di replica nel database di origine.   | 
|  `CdcMinFileSize`  |  Condizione della dimensione minima del file, espressa in kilobyte, per l'output di un file in Amazon S3. Valore predefinito: 32000 KB Quando `CdcMinFileSize` viene specificato insieme a `CdcMaxBatchInterval`, la scrittura del file viene attivata dalla condizione di parametro che viene soddisfatta per prima.  | 
|  `PreserveTransactions`  |  Se questa opzione è impostata su `true`, DMS salva l'ordine di transazione per l'acquisizione dei dati di modifica (CDC) nella destinazione Amazon S3 specificata da `CdcPath`. Non è possibile utilizzare questo parametro con `DatePartitionEnabled` o `AddColumnName`. Tipo: Booleano Quando acquisisce le modifiche ai dati nell'ordine delle transazioni, DMS memorizza sempre le modifiche di riga nei file.csv indipendentemente dal valore dell'impostazione S3 sulla DataFormat destinazione. Questa impostazione è supportata nelle versioni 3.4.2 e successive. AWS DMS    | 
| IncludeOpForFullLoad |  Un parametro facoltativo durante il caricamento completo per scrivere le operazioni INSERT nei file di output con i valori separati da virgola (.csv). Per il caricamento completo, i record possono solo essere inseriti. Per impostazione predefinita (impostazione `false`), le informazioni non vengono registrate in questi file di output per un caricamento completo per indicare che le righe sono state inserite nel database di origine. Se `IncludeOpForFullLoad` è impostato su `true` o `y`, l'istruzione INSERT viene registrata come annotazione I nel primo campo del file .csv.  Questo parametro viene utilizzato insieme a `CdcInsertsOnly` o `CdcInsertsAndUpdates` solo per l'output verso file .csv. Per ulteriori informazioni sul funzionamento congiunto di questi parametri, consulta [Indicazione delle operazioni del DB di origine nei dati S3 migrati](#CHAP_Target.S3.Configuring.InsertOps).  Valore predefinito: `false` Valori validi: `true`, `false`, `y`, `n` Ad esempio: `--s3-settings '{"IncludeOpForFullLoad": true}'`  | 
| CompressionType |  Un parametro opzionale, se impostato su, `GZIP` utilizza GZIP per comprimere i file.csv di destinazione. Quando questo parametro è impostato come predefinito, i file di dati non vengono compressi. Valore predefinito: `NONE` Valori validi: `GZIP` o `NONE` Ad esempio: `--s3-settings '{"CompressionType": "GZIP"}'`  | 
| CsvDelimiter |  Delimitatore utilizzato per separare le colonne nei file di origine .csv. L'impostazione predefinita è una virgola (,). Ad esempio: `--s3-settings '{"CsvDelimiter": ","}'`  | 
| CsvRowDelimiter |  Delimitatore utilizzato per separare le righe nei file di origine .csv. L'impostazione predefinita è una nuova riga (\$1n). Ad esempio: `--s3-settings '{"CsvRowDelimiter": "\n"}'`  | 
|   `MaxFileSize`   |  Un valore che specifica le dimensioni massime (in KB) di qualsiasi file .csv da creare durante la migrazione a una destinazione S3 durante il caricamento completo. Valore predefinito: 1.048.576 KB (1 GB) Valori validi: 1-1.048.576 Ad esempio: `--s3-settings '{"MaxFileSize": 512}'`  | 
| Rfc4180 |  Un parametro facoltativo utilizzato per impostare il comportamento di conformità a RFC per i dati migrati ad Amazon S3 utilizzando solo il formato di file .csv. Quando questo valore è impostato `true` o si `y` utilizza Amazon S3 come destinazione, se i dati contengono virgolette, virgole o caratteri di nuova riga, AWS DMS racchiude l'intera colonna con una coppia aggiuntiva di virgolette doppie («). Ogni virgoletta all'interno dei dati viene ripetuta due volte. Questa formattazione è conforme a RFC 4180. Valore predefinito: `true` Valori validi: `true`, `false`, `y`, `n` Ad esempio: `--s3-settings '{"Rfc4180": false}'`  | 
| EncryptionMode |  Le modalità di crittografia lato server desiderata per crittografare i file degli oggetti .csv o .parquet copiati in S3. I valori validi sono `SSE_S3` (crittografia lato server S3) o `SSE_KMS` (crittografia chiave KMS). Se scegli `SSE_KMS`, imposta il parametro `ServerSideEncryptionKmsKeyId` al valore dell'ARN (Amazon Resource Name) della chiave KMS da utilizzare per la crittografia.  È inoltre possibile utilizzare il comando CLI `modify-endpoint` per modificare il valore dell'attributo `EncryptionMode` per un endpoint esistente da `SSE_KMS` a `SSE_S3`. Tuttavia non puoi modificare il valore di `EncryptionMode` da `SSE_S3` a `SSE_KMS`.  Valore predefinito: `SSE_S3` Valori validi: `SSE_S3` o `SSE_KMS` Ad esempio: `--s3-settings '{"EncryptionMode": SSE_S3}'`  | 
| ServerSideEncryptionKmsKeyId |  Se hai impostato `EncryptionMode` su `SSE_KMS`, configura questo parametro sul nome della risorsa Amazon (ARN) della chiave KMS. Puoi trovare questo ARN selezionando l'alias della chiave nell'elenco delle AWS KMS chiavi create per il tuo account. Quando crei la chiave, è necessario associare alla chiave KMS policy e ruoli specifici. Per ulteriori informazioni, consulta [Creazione di AWS KMS chiavi per crittografare gli oggetti di destinazione di Amazon S3](#CHAP_Target.S3.KMSKeys). Ad esempio: `--s3-settings '{"ServerSideEncryptionKmsKeyId":"arn:aws:kms:us-east-1:111122223333:key/11a1a1a1-aaaa-9999-abab-2bbbbbb222a2"}'`  | 
| DataFormat |  Il formato di output per i file AWS DMS utilizzati per creare oggetti S3. Per le destinazioni Amazon S3, AWS DMS supporta i file.csv o.parquet. Il file .parquet hanno un formato binario di storage colonnare con opzioni di compressione efficaci e prestazioni delle query più veloci. Per ulteriori informazioni sui file .parquet, consulta [https://parquet.apache.org/](https://parquet.apache.org/). Valore predefinito: `csv` Valori validi: `csv` o `parquet` Ad esempio: `--s3-settings '{"DataFormat": "parquet"}'`  | 
| EncodingType |  Il tipo di codifica Parquet. Le opzioni del tipo di codifica includono le seguenti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/dms/latest/userguide/CHAP_Target.S3.html) Valore predefinito: `rle-dictionary` Valori validi: `rle-dictionary`, `plain` o `plain-dictionary` Ad esempio: `--s3-settings '{"EncodingType": "plain-dictionary"}'`  | 
| DictPageSizeLimit |  La dimensione massima consentita, in byte, per una pagina del dizionario in un file .parquet. Se una pagina del dizionario supera questo valore, la pagina utilizza la codifica normale. Valore predefinito: 1.024.000 (1 MB) Valori validi: qualsiasi valore intero valido Ad esempio: `--s3-settings '{"DictPageSizeLimit": 2,048,000}'`  | 
| RowGroupLength |  Il numero di righe in un gruppo di righe di un file .parquet. Valore predefinito: 10.024 (10 KB) Valori validi: qualsiasi intero valido Ad esempio: `--s3-settings '{"RowGroupLength": 20,048}'`  | 
| DataPageSize |  La dimensione massima consentita, in byte, per una pagina di dati in un file .parquet. Valore predefinito: 1.024.000 (1 MB) Valori validi: qualsiasi intero valido Ad esempio: `--s3-settings '{"DataPageSize": 2,048,000}'`  | 
| ParquetVersion |  La versione del formato del file .parquet. Valore predefinito: `PARQUET_1_0` Valori validi: `PARQUET_1_0` o `PARQUET_2_0` Ad esempio: `--s3-settings '{"ParquetVersion": "PARQUET_2_0"}'`  | 
| EnableStatistics |  Impostare a `true` o `y` per abilitare le statistiche sulle pagine e sui gruppi di righe del file .parquet. Valore predefinito: `true` Valori validi: `true`, `false`, `y`, `n` Ad esempio: `--s3-settings '{"EnableStatistics": false}'`  | 
| TimestampColumnName |  Un parametro facoltativo per includere una colonna timestamp nei dati dell'endpoint di destinazione S3. AWS DMS include una `STRING` colonna aggiuntiva nei file oggetto .csv o .parquet dei dati migrati quando imposti un valore non vuoto. `TimestampColumnName` Per un caricamento completo, ogni riga della colonna timestamp contiene il timestamp del trasferimento dei dati dall'origine alla destinazione tramite DMS.  Per un caricamento CDC, ogni riga della colonna timestamp contiene il timestamp per il commit di quella riga nel database di origine. Il formato di stringa per questo valore della colonna timestamp è `yyyy-MM-dd HH:mm:ss.SSSSSS`. Per impostazione predefinita, la precisione di questo valore è in microsecondi. Per un carico CDC, l'arrotondamento della precisione dipende dal timestamp di commit supportato da DMS per il database di origine. Quando il parametro `AddColumnName` è impostato su `true`, DMS include anche il nome per la colonna timestamp impostata con il valore non vuoto `TimestampColumnName`. Ad esempio: `--s3-settings '{"TimestampColumnName": "TIMESTAMP"}'`  | 
| UseTaskStartTimeForFullLoadTimestamp |  Se impostato su `true`, questo parametro utilizza l'ora di inizio dell'attività come valore della colonna timestamp anziché l'ora in cui i dati vengono scritti nella destinazione. Per il caricamento completo, quando `UseTaskStartTimeForFullLoadTimestamp` è impostato su `true`, ogni riga della colonna timestamp contiene l'ora di inizio dell'attività. Per i caricamenti CDC, ogni riga della colonna timestamp contiene l'orario di esecuzione del commit della transazione. Quando `UseTaskStartTimeForFullLoadTimestamp` è impostato su `false`, il timestamp del caricamento completo nella colonna timestamp aumenta con l'ora di arrivo dei dati a destinazione. Valore predefinito: `false` Valori validi: `true`, `false` Ad esempio: `--s3-settings '{"UseTaskStartTimeForFullLoadTimestamp": true}'` `UseTaskStartTimeForFullLoadTimestamp: true` consente di rendere ordinabile la destinazione S3 `TimestampColumnName` per un pieno carico con `TimestampColumnName` per un carico CDC.  | 
| ParquetTimestampInMillisecond |  Un parametro opzionale che specifica la precisione di qualsiasi valore della colonna `TIMESTAMP` scritto su un file oggetto S3 in formato .parquet. Quando questo attributo è impostato su `true` o`y`, AWS DMS scrive tutte le `TIMESTAMP` colonne in un file in formato .parquet con una precisione al millisecondo. In caso contrario, DMS le scrive con la precisione del microsecondo. Attualmente, Amazon Athena e AWS Glue può gestire solo una precisione in millisecondi per i valori. `TIMESTAMP` Imposta questo attributo su true per file di oggetti dell'endpoint S3 nel formato .parquet solo se si prevede di eseguire query o elaborare i dati con Athena o AWS Glue.    AWS DMS scrive qualsiasi valore di `TIMESTAMP` colonna scritto in un file S3 in formato.csv con precisione al microsecondo.   L'impostazione di questo attributo non ha effetto sul formato della stringa del valore della colonna timestamp inserito impostando l'attributo `TimestampColumnName`.    Valore predefinito: `false` Valori validi: `true`, `false`, `y`, `n` Ad esempio: `--s3-settings '{"ParquetTimestampInMillisecond": true}'`  | 
| GlueCatalogGeneration |  Per generare un AWS Glue Data Catalog, imposta questa impostazione dell'endpoint su. `true` Valore predefinito: `false` Valori validi: `true`, `false` Ad esempio: `--s3-settings '{"GlueCatalogGeneration": true}'` **Nota:** non utilizzare `GlueCatalogGeneration` con `PreserveTransactions` e `CdcPath`.  | 

## Utilizzo AWS Glue Data Catalog con un target Amazon S3 per AWS DMS
<a name="CHAP_Target.S3.GlueCatalog"></a>

AWS Glue è un servizio che fornisce modi semplici per classificare i dati e consiste in un repository di metadati noto come. AWS Glue Data Catalog Puoi integrarti AWS Glue Data Catalog con il tuo endpoint di destinazione Amazon S3 e interrogare i dati Amazon S3 tramite altri servizi AWS come Amazon Athena. Amazon Redshift funziona con questa opzione predefinita, AWS Glue ma AWS DMS non la supporta. 

Per generare il catalogo dati, imposta l'impostazione dell'`GlueCatalogGeneration`endpoint su`true`, come mostrato nell'esempio seguente. AWS CLI 

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint 
            --engine-name s3 --endpoint-type target--s3-settings '{"ServiceAccessRoleArn": 
            "your-service-access-ARN", "BucketFolder": "your-bucket-folder", "BucketName": 
            "your-bucket-name", "DataFormat": "parquet", "GlueCatalogGeneration": true}'
```

Per un'attività di replica di pieno carico che include dati di tipo `csv`, imposta `IncludeOpForFullLoad` su `true`.

Non utilizzare `GlueCatalogGeneration` con `PreserveTransactions` e `CdcPath`. Il AWS Glue crawler non è in grado di riconciliare i diversi schemi di file memorizzati nell'intervallo specificato. `CdcPath`

Affinché Amazon Athena indicizzi i dati Amazon S3 per poter eseguire le query sui dati utilizzando query SQL standard tramite Amazon Athena, il ruolo IAM associato all'endpoint deve avere la seguente policy:

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

****  

```
{
    "Version":"2012-10-17",		 	 	  
    "Statement": [ 
        {
            "Effect": "Allow", 
            "Action": [
                "s3:GetBucketLocation", 
                "s3:GetObject",
                "s3:ListBucket", 
                "s3:ListBucketMultipartUploads", 
                "s3:ListMultipartUploadParts", 
                "s3:AbortMultipartUpload" 
            ], 
            "Resource": [
                "arn:aws:s3:::bucket123", 
                "arn:aws:s3:::bucket123/*" 
            ]
        },
        {
            "Effect": "Allow", 
            "Action": [ 
                "glue:CreateDatabase", 
                "glue:GetDatabase", 
                "glue:CreateTable", 
                "glue:DeleteTable", 
                "glue:UpdateTable", 
                "glue:GetTable", 
                "glue:BatchCreatePartition", 
                "glue:CreatePartition", 
                "glue:UpdatePartition", 
                "glue:GetPartition", 
                "glue:GetPartitions", 
                "glue:BatchGetPartition"
            ], 
            "Resource": [
                "arn:aws:glue:*:111122223333:catalog", 
                "arn:aws:glue:*:111122223333:database/*", 
                "arn:aws:glue:*:111122223333:table/*" 
            ]
        }, 
        {
            "Effect": "Allow",
            "Action": [
                "athena:StartQueryExecution",
                "athena:GetQueryExecution", 
                "athena:CreateWorkGroup"
            ],
            "Resource": "arn:aws:athena:*:111122223333:workgroup/glue_catalog_generation_for_task_*"
        }
    ]
}
```

------

**Riferimenti**
+ *Per ulteriori informazioni AWS Glue, consulta [Concepts](https://docs.aws.amazon.com//glue/latest/dg/components-key-concepts.html) nella Developer Guide.AWS Glue *
+ Per ulteriori informazioni, AWS Glue Data Catalog consulta [Components](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html) nella *AWS Glue Developer Guide*.

## Utilizzo della crittografia dei dati, dei file parquet e della CDC sulla destinazione Amazon S3
<a name="CHAP_Target.S3.EndpointSettings"></a>

Puoi utilizzare le impostazioni dell'endpoint di destinazione S3 per configurare quanto segue:
+ Una chiave KMS personalizzata per crittografare gli oggetti di destinazione S3.
+ File parquet come formato di storage dei file per gli oggetti di destinazione S3.
+ Acquisizione dei dati di modifica (CDC) incluso l'ordine di transazione sulla destinazione S3.
+ Effettua AWS Glue Data Catalog l'integrazione con il tuo endpoint di destinazione Amazon S3 e interroga i dati di Amazon S3 tramite altri servizi come Amazon Athena.

### AWS KMS impostazioni chiave per la crittografia dei dati
<a name="CHAP_Target.S3.EndpointSettings.KMSkeys"></a>

I seguenti esempi mostrano la configurazione di una chiave KMS personalizzata per crittografare gli oggetti di destinazione S3. Per iniziare, è possibile eseguire il comando CLI `create-endpoint` seguente.

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target 
--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", 
"CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", 
"BucketName": "your-bucket-name", 
"EncryptionMode": "SSE_KMS", 
"ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480"}'
```

Qui l'oggetto JSON specificato dall'opzione `--s3-settings` definisce due parametri. Uno è un parametro `EncryptionMode` con il valore `SSE_KMS`. L'altro è un parametro `ServerSideEncryptionKmsKeyId` con il valore `arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480`. Questo valore è un ARN (Amazon Resource Name) per la chiave KMS personalizzata. Per una destinazione S3, è anche possibile specificare impostazioni aggiuntive. Queste identificano il ruolo di accesso al server, specificano i delimitatori per il formato di memorizzazione degli oggetti CSV predefinito e forniscono il nome e la posizione del bucket per la memorizzazione degli oggetti di destinazione S3.

Per impostazione predefinita, la crittografia dei dati di S3 viene effettuata utilizzando la crittografia lato server. Per la destinazione S3 dell'esempio precedente, ciò è anche equivalente a specificare le impostazioni dell'endpoint, come nell'esempio seguente.

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target
--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", 
"CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", 
"BucketName": "your-bucket-name", 
"EncryptionMode": "SSE_S3"}'
```

Per ulteriori informazioni sulle opzioni di crittografia lato server di S3, consultare [Protezione dei dati con la crittografia lato server](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).

**Nota**  
È inoltre possibile utilizzare il comando CLI `modify-endpoint` per modificare il valore del parametro `EncryptionMode` per un endpoint esistente da `SSE_KMS` a `SSE_S3`. Tuttavia non puoi modificare il valore di `EncryptionMode` da `SSE_S3` a `SSE_KMS`.

### Impostazioni per l'utilizzo di file .parquet per l'archiviazione di oggetti di destinazione S3
<a name="CHAP_Target.S3.EndpointSettings.Parquet"></a>

Il formato predefinito per la creazione di oggetti di destinazione S3 è file .csv. I seguenti esempi mostrano alcune impostazioni di endpoint per specificare i file .parquet come formato per la creazione di oggetti di destinazione S3. È possibile specificare il formato dei file .parquet con tutte le impostazioni predefinite, come nell'esempio seguente.

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target 
--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "DataFormat": "parquet"}'
```

Qui il parametro `DataFormat` è impostato su `parquet` per abilitare il formato con tutte le impostazioni predefinite di S3. Queste impostazioni predefinite includono una codifica del dizionario (`"EncodingType: "rle-dictionary"`) che utilizza una combinazione di creazione di pacchetti di bit e di codifica runlength per un'archiviazione più efficiente dei valori ripetuti.

È possibile aggiungere ulteriori impostazioni per opzioni diverse dalle impostazioni predefinite come nell'esempio seguente.

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target
--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketFolder": "your-bucket-folder",
"BucketName": "your-bucket-name", "DataFormat": "parquet", "EncodingType: "plain-dictionary", "DictPageSizeLimit": 3,072,000,
"EnableStatistics": false }'
```

Qui, oltre ai parametri per varie opzioni standard del bucket S3 e il parametro `DataFormat`, vengono impostati i seguenti parametri aggiuntivi del file .parquet:
+ `EncodingType`: imposta una codifica di dizionario (`plain-dictionary`) che archivia i valori rilevati in ogni colonna in un blocco per colonna della pagina del dizionario.
+ `DictPageSizeLimit`: imposta la dimensione massima della pagina del dizionario di 3 MB.
+ `EnableStatistics`: disabilita l'impostazione predefinita che consente la raccolta di statistiche sulle pagine e sui gruppi di righe dei file Parquet.

### Capturing Data Changes (CDC) incluso l'ordine di transazione sulla destinazione S3
<a name="CHAP_Target.S3.EndpointSettings.CdcPath"></a>

Per impostazione predefinita, quando AWS DMS esegue un'attività CDC, memorizza tutte le modifiche di riga registrate nel database (o nei database) di origine in uno o più file per ogni tabella. Ogni set di file contenente modifiche per la stessa tabella si trova in un'unica directory di destinazione associata a quella tabella. AWS DMS crea tante directory di destinazione quante sono le tabelle di database migrate all'endpoint di destinazione Amazon S3. I file vengono archiviati sulla destinazione S3 in queste directory indipendentemente dall'ordine di transazione. Per ulteriori informazioni sulle convenzioni di denominazione dei file, sul contenuto dei dati e sul formato, consulta [Utilizzo di Amazon S3 come destinazione per AWS Database Migration Service](#CHAP_Target.S3).

Per acquisire le modifiche al database di origine in modo da rilevare anche l'ordine delle transazioni, puoi specificare le impostazioni degli endpoint S3 che consentono di memorizzare le modifiche AWS DMS alle righe per *tutte* le tabelle del database in uno o più file.csv creati in base alla dimensione della transazione. Questi *file di transazione* .csv contengono tutte le modifiche alle righe elencate in sequenza nell'ordine di transazione per tutte le tabelle coinvolte in ciascuna transazione. Questi file di transazione risiedono insieme in un'unica *directory delle transazioni* che specifichi anche sulla destinazione S3. In ogni file di transazione, l'operazione di transazione e l'identità del database e della tabella di origine per ogni modifica alla riga vengono archiviate come parte dei dati di riga, come indicato di seguito. 

```
operation,table_name,database_schema_name,field_value,...
```

Qui `operation` è l'operazione di transazione sulla riga modificata, `table_name` è il nome della tabella del database in cui è stata modificata la riga, `database_schema_name` è il nome dello schema del database in cui si trova la tabella e `field_value` è il primo di uno o più valori di campo che specificano i dati per la riga.

Il seguente file di transazione di esempio mostra le righe modificate per una o più transazioni che coinvolgono due tabelle.

```
I,Names_03cdcad11a,rdsTempsdb,13,Daniel
U,Names_03cdcad11a,rdsTempsdb,23,Kathy
D,Names_03cdcad11a,rdsTempsdb,13,Cathy
I,Names_6d152ce62d,rdsTempsdb,15,Jane
I,Names_6d152ce62d,rdsTempsdb,24,Chris
I,Names_03cdcad11a,rdsTempsdb,16,Mike
```

Qui, l'operazione di transazione su ogni riga è indicata da `I` (insert, inserisci), `U` (update, aggiorna) o `D` (delete, elimina) nella prima colonna. Il nome della tabella è il valore della seconda colonna (ad esempio, `Names_03cdcad11a`). Il nome dello schema del database è il valore della terza colonna (ad esempio, `rdsTempsdb`). E le colonne rimanenti vengono popolate con i propri dati della riga (ad esempio, `13,Daniel`).

Inoltre, assegna un AWS DMS nome ai file di transazione che crea sulla destinazione Amazon S3 utilizzando un timestamp secondo la seguente convenzione di denominazione.

```
CDC_TXN-timestamp.csv
```

Qui `timestamp` è l'ora in cui stato creato il file di transazione, come nell'esempio seguente. 

```
CDC_TXN-20201117153046033.csv
```

Questo timestamp nel nome del file assicura che i file delle transazioni vengano creati ed elencati nell'ordine di transazione nella rispettiva directory della transazione.

**Nota**  
Quando acquisisci le modifiche ai dati nell'ordine delle transazioni, memorizza AWS DMS sempre le modifiche di riga nei file.csv indipendentemente dal valore dell'impostazione S3 sulla destinazione. `DataFormat`

Per controllare la frequenza delle scritture su una destinazione Amazon S3 durante un'attività di replica dei dati, puoi configurare le impostazioni `CdcMaxBatchInterval` e `CdcMinFileSize`. In tal modo le prestazioni possono risultare migliori durante l'analisi dei dati senza ulteriori operazioni di sovraccarico. Per ulteriori informazioni, consulta [Impostazioni degli endpoint quando si utilizza Amazon S3 come destinazione per AWS DMS](#CHAP_Target.S3.Configuring) 

**Per dire di AWS DMS memorizzare tutte le modifiche di riga nell'ordine delle transazioni**

1. Configura l'impostazione `PreserveTransactions` S3 nella destinazione su `true`.

1. Imposta l'impostazione `CdcPath` S3 sulla destinazione su un percorso di cartella relativo in cui desideri AWS DMS archiviare i file di transazione in formato.csv.

   AWS DMS crea questo percorso nel bucket di destinazione S3 e nella directory di lavoro predefiniti o nella cartella bucket e bucket specificati utilizzando le impostazioni e S3 sulla `BucketName` destinazione. `BucketFolder`

## Indicazione delle operazioni del DB di origine nei dati S3 migrati
<a name="CHAP_Target.S3.Configuring.InsertOps"></a>

Quando AWS DMS migra i record su una destinazione S3, può creare un campo aggiuntivo in ogni record migrato. Il campo aggiuntivo indica l'operazione applicata al record nel database di origine. AWS DMS Il modo in cui crea e imposta questo primo campo dipende dal tipo di attività di migrazione e dalle impostazioni di`includeOpForFullLoad`, `cdcInsertsOnly` e. `cdcInsertsAndUpdates`

Per un pieno carico quando `includeOpForFullLoad` è `true`, AWS DMS crea sempre un ulteriore primo campo in ogni record .csv. Il campo contiene la lettera I (INSERT) per confermare che la riga è stata inserita nel database di origine. AWS DMS Inoltre, per un CDC load when `cdcInsertsOnly` is `false` (impostazione predefinita), crea sempre un primo campo aggiuntivo in ogni record.csv o .parquet. Il campo contiene la lettera I (INSERT), U (UPDATE) o D (DELETE) per indicare se la riga è stata inserita, aggiornata o eliminata nel database di origine.

Nella tabella seguente, puoi vedere come le impostazioni degli attributi `includeOpForFullLoad` e `cdcInsertsOnly` interagiscono per influenzare l'impostazione dei record migrati.


| Con queste impostazioni dei parametri | DMS imposta i record di destinazione come segue per l'output .csv e .parquet  | includeOpForFullLoad | cdcInsertsOnly | Per il caricamento completo | Per il caricamento CDC | 
| --- | --- | --- | --- | --- | --- | 
| true | true | Aggiunto il valore del primo campo impostato su I | Aggiunto il valore del primo campo impostato su I | 
| false | false | Nessun campo aggiunto | Aggiunto il valore del primo campo impostato su I, U o D | 
| false | true | Nessun campo aggiunto | Nessun campo aggiunto | 
| true | false | Aggiunto il valore del primo campo impostato su I | Aggiunto il valore del primo campo impostato su I, U o D | 

Quando `includeOpForFullLoad` e `cdcInsertsOnly` sono impostati sullo stesso valore, i record di destinazione sono impostati in base all'attributo che controlla le impostazioni di registrazione per il tipo di migrazione corrente. Questo attributo è `includeOpForFullLoad` per il caricamento completo e `cdcInsertsOnly` per il caricamento CDC.

Se `includeOpForFullLoad` e `cdcInsertsOnly` sono impostati su valori diversi, AWS DMS rende le impostazioni del record di destinazione coerenti sia per il CDC che per il pieno carico. A tale scopo, le impostazioni del record per un caricamento CDC sono conformi alle impostazioni del record per qualsiasi precedente caricamento completo specificato da `includeOpForFullLoad`. 

In altre parole, supponiamo che un caricamento completo sia impostato per aggiungere un primo campo per indicare un record inserito. In questo caso, un caricamento CDC successivo viene impostato per aggiungere un primo campo che indica un record inserito, aggiornato o eliminato come appropriato nell'origine. Al contrario, supponiamo che un caricamento completo è impostato per *non* aggiungere un primo campo per indicare un record inserito. In questo caso, viene impostato un caricamento CDC per non aggiungere un primo campo a ciascun record, indipendentemente dall'operazione di registrazione corrispondente nell'origine.

Analogamente, il modo in cui DMS crea e imposta un primo campo aggiuntivo dipende dalle impostazioni di `includeOpForFullLoad` e `cdcInsertsAndUpdates`. Nella tabella seguente, puoi vedere come le impostazioni degli attributi `includeOpForFullLoad` e `cdcInsertsAndUpdates` interagiscono per influenzare l'impostazione dei record migrati in questo formato. 


| Con queste impostazioni dei parametri | DMS imposta i record di destinazione come segue per l'output .csv  | includeOpForFullLoad | cdcInsertsAndAggiornamenti | Per il caricamento completo | Per il caricamento CDC | 
| --- | --- | --- | --- | --- | --- | 
| true | true | Aggiunto il valore del primo campo impostato su I | Aggiunto il valore del primo campo impostato su I o U | 
| false | false | Nessun campo aggiunto | Aggiunto il valore del primo campo impostato su I, U o D | 
| false | true | Nessun campo aggiunto | Aggiunto il valore del primo campo impostato su I o U | 
| true | false | Aggiunto il valore del primo campo impostato su I | Aggiunto il valore del primo campo impostato su I, U o D | 

## Tipi di dati di destinazione per Parquet S3
<a name="CHAP_Target.S3.DataTypes"></a>

La tabella seguente mostra i tipi di dati di destinazione di Parquet supportati durante l'utilizzo AWS DMS e la mappatura predefinita AWS DMS dei tipi di dati.

Per ulteriori informazioni sui tipi di AWS DMS dati, vedere[Tipi di dati per AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS tipo di dati  |  Tipo di dati parquet S3   | 
| --- | --- | 
| BYTES | BINARY | 
| DATE | DATE32 | 
| TIME | TIME32 | 
| DATETIME | TIMESTAMP | 
| INT1 | INT8 | 
| INT2 | INT16 | 
| INT4 | INT32 | 
| INT8 | INT64 | 
| NUMERIC | DECIMAL | 
| REAL4 | FLOAT | 
| REAL8 | DOUBLE | 
| STRING | STRING | 
| UINT1 | UINT8 | 
| UINT2 | UINT16 | 
| UINT4 | UINT32 | 
| UINT8 | UINT64 | 
| WSTRING | STRING | 
| BLOB | BINARY | 
| NCLOB | STRING | 
| CLOB | STRING | 
| BOOLEAN | BOOL | 