Utilizzo di Amazon S3 come destinazione per AWS Database Migration Service - AWS Servizio di migrazione del Database

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

Puoi eseguire la migrazione dei dati ad Amazon S3 mediante AWS DMS da qualsiasi origine di database supportata. Quando utilizzi Amazon S3 come destinazione in un'attività AWS DMS, i dati del pieno carico e dell'acquisizione dei dati di modifica (CDC) vengono scritti per impostazione predefinita in formato .csv (valori separati da virgole). Per opzioni di storage più compatto e per query più rapide, è possibile scrivere i dati nel formato Apache Parquet (.parquet).

AWS DMS denomina i file creati durante un pieno carico utilizzando un contatore esadecimale incrementale, ad esempio LOAD00001.csv, LOAD00002..., LOAD00009, LOAD0000A e così via per i file.csv. AWS DMS denomina i file CDC utilizzando i timestamp, ad esempio 20141029-1134010000.csv. Per ciascuna tabella di origine contenente record, AWS DMS crea una cartella nella cartella di destinazione specificata (se la tabella non è vuota). AWS DMS scrive tutti i file CDC e del pieno carico nel bucket Amazon S3 specificato. È possibile controllare la dimensione dei file creati da AWS DMS utilizzando l'impostazione dell'endpoint MaxFileSize.

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 alla fine di questa sezione.

Puoi specificare il proprietario del bucket e impedire lo sniping utilizzando l'impostazione dell'endpoint ExpectedBucketOwner Amazon S3, come illustrato di seguito. Quindi, quando effettui una richiesta per testare una connessione o eseguire una migrazione, S3 controlla l'ID account del proprietario del bucket rispetto al parametro specificato.

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

Quando utilizzi AWS DMS per replicare le modifiche dei dati con un'attività di CDC, la prima colonna del file di output .csv o .parquet indica il modo in cui i dati della riga sono stati modificati, come illustrato nel 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 vi sia una tabella EMPLOYEE nel database di origine. 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.

Tieni presente che, per impostazione predefinita, per CDC, AWS DMS memorizza le modifiche della riga 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.

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

Prerequisiti per l'utilizzo di Amazon S3 come destinazione

Prima di utilizzare Amazon S3 come destinazione, controlla che le seguenti condizioni siano soddisfatte:

  • Il bucket S3 che usi come destinazione sia nella stessa regione AWS dell'istanza di replica DMS in uso per migrare i dati.

  • L'account AWS utilizzato per la migrazione deve disporre di un ruolo IAM con accesso per scrittura ed eliminazione al bucket S3 in uso 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 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.

{ "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.

Limitazioni all'utilizzo di Amazon S3 come destinazione

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. Per eliminare la versione di un oggetto S3, consulta Eliminazione di versioni di oggetti da un bucket con funzione Controllo delle versioni abilitata.

  • 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, nessuna istruzione ALTER viene registrata nel bucket S3 di destinazione e AWS DMS non altera 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.

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

Per le limitazioni all'utilizzo della convalida con S3 come destinazione, consulta Limitazioni all'utilizzo della convalida della destinazione S3.

Sicurezza

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 un set di concessioni predefinite per Amazon S3, definite liste di controllo degli accessi (ACL) predefinite. 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. Per ulteriori informazioni sulle ACL predefinite di Amazon S3, consulta ACL predefinita.

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

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

Per impostare.parquet come formato di storage per gli oggetti di destinazione S3 migrati, è possibile utilizzare i seguenti meccanismi:

Applicazione di tag agli oggetti Amazon S3

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

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.

Parametro Valori possibili Description
rule-type post-processing

Valore che si applica alle operazioni di post-elaborazione agli oggetti di destinazione generati. Puoi specificare una o più regole di post-elaborazione per aggiungere tag agli oggetti S3 selezionati.

rule-id Un valore numerico. Un valore numerico univoco per identificare la regola.
rule-name Un valore alfanumerico. Un nome univoco per identificare la regola.
rule-action add-tag L'operazione di post-elaborazione che si desidera applicare all'oggetto S3. È possibile aggiungere uno o più tag utilizzando un singolo oggetto JSON di post-elaborazione per l'operazione add-tag.
object-locator

schema-name: il nome dello schema della tabella.

table-name: il nome della tabella.

Il nome di ogni schema e tabella a cui si applica la regola. È possibile utilizzare il simbolo di percentuale "%" come carattere jolly per tutto o parte del valore di ciascun parametro object-locator. Pertanto, è possibile mettere in corrispondenza questi elementi:

  • Una singola tabella in un singolo schema

  • Una singola tabella in alcuni o in tutti gli schemi

  • Alcune o tutte le tabelle in un singolo schema

  • Alcune o tutte le tabelle in alcuni o in tutti gli schemi

tag-set

key: qualsiasi nome valido per un singolo tag.

value: qualsiasi valore JSON valido per il tag.

I nomi e i valori per uno o più tag che si desidera impostare su ogni oggetto S3 creato che corrisponde a object-locator specificato. È possibile specificare fino a 10 coppie chiave-valore in un singolo oggetto parametro tag-set. Per ulteriori informazioni sull'applicazione di tag agli oggetti S3, consulta Tagging oggetti nella Guida per l'utente di Amazon Simple Storage Service.

È anche possibile specificare un valore dinamico per tutto o parte del valore di entrambi i parametri key e value di un tag utilizzando ${dyn-value}. Qui, ${dyn-value} può essere ${schema-name} oppure ${table-name}. Pertanto, puoi inserire il nome dello schema o della tabella attualmente selezionati come tutto o parte del valore del parametro.

Nota
Importante

Se inserisci un valore dinamico per il parametro key, è possibile generare i tag con nomi duplicati per un oggetto S3, a seconda del tipo di utilizzo. In questo caso, solo una delle impostazioni di tag duplicati viene aggiunta all'oggetto.

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.

Esempio 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" } ] } ] }
Esempio 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.

Esempio 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 chiavi AWS KMS per la crittografia di oggetti di destinazione Amazon S3

Puoi creare e utilizzare le chiavi AWS KMS personalizzate per crittografare gli 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, your-KMS-key-ARN è l'ARN (Amazon Resource Name) per la chiave KMS. Per ulteriori informazioni, consulta Utilizzo della crittografia dei dati, dei file parquet e della CDC sulla destinazione Amazon S3.

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

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. Apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

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

  3. Scegli Create Policy (Crea policy). Viene visualizzata la pagina Create policy (Crea policy).

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

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

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

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

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

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

    { "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).

  2. Selezionare Create role (Crea ruolo). Viene visualizzata la pagina Create role (Crea ruolo).

  3. Dopo aver selezionato il servizio AWS come entità attendibile, scegli DMS come servizio per l'utilizzo del ruolo IAM.

  4. Scegli Successivo: Autorizzazioni. Viene visualizzata la vista Allega policy di autorizzazione nella pagina Crea ruolo.

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

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

  7. Seleziona Successivo: Revisione. Viene visualizzata la vista Verifica nella pagina Crea ruolo. Qui è possibile verificare i risultati.

  8. 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 sul funzionamento di AWS DMS con le chiavi di crittografia AWS KMS, consulta Impostazione di una chiave di crittografia e specificazione delle autorizzazioni AWS KMS.

  1. Accedi alla AWS Management Console e apri la console AWS Key Management Service (AWS KMS) all'indirizzo https://console.aws.amazon.com/kms.

  2. Per modificare la Regione AWS, utilizza il Selettore di regione nell'angolo in alto a destra della pagina.

  3. Nel riquadro di navigazione, scegli Chiavi gestite dal cliente.

  4. Scegliere Create key (Crea chiave). Verrà visualizzata la pagina Configure key (Configura chiave).

  5. Alla voce Key type (Tipo di chiave), scegliere Symmetric (Simmetrica).

    Nota

    È possibile creare solo una chiave simmetrica, poiché tutti i servizi AWS, ad esempio Amazon S3, funzionano solo con chiavi di crittografia simmetriche.

  6. 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).

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

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

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

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

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

  12. Se desideri aggiungere altri account non elencati affinché abbiano lo stesso accesso, per Altri account AWS, scegli Aggiungi un altro account AWS, quindi seleziona Successivo. 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.

    { "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 } } } ]
  13. 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 ad AWS DMS di crittografare gli oggetti di destinazione Amazon S3.

Utilizzo del partizionamento delle cartelle in base alla data

AWS DMS supporta le partizioni delle 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). 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.

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'opzione --s3-settings '{json-settings}' del comando AWS CLI.create-endpoint.

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

Caricamento parallelo di origini partizionate quando si utilizza Amazon S3 come destinazione per AWS DMS

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 associate alle partizioni consentono ad AWS DMS di 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.

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

AWS DMS archivia 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 per impostazione predefinita crea 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

È 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 console AWS DMS o il comando create-endpoint nella AWS CLI, con la sintassi JSON --s3-settings '{"EndpointSetting": "value", ...}'.

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

Opzione Descrizione
CsvNullValue

Un parametro facoltativo che specifica come AWS DMS considera i valori null. 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. Quindi, se imposti questo valore di parametro sulla stringa vuota (" " o ''), AWS DMS la considera come valore null anziché NULL.

Valore predefinito: NULL

Valori validi: qualsiasi stringa valida

Esempio: --s3-settings '{"CsvNullValue": " "}'

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

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

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

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.

Esempio: --s3-settings '{"BucketName": "buckettest"}'

CannedAclForObjects

Un valore che consente a AWS DMS di specificare una lista di controllo accessi (ACL) predefinita per gli oggetti creati nel bucket S3 come file .csv o .parquet. Per ulteriori informazioni sulle ACL predefinite di Amazon S3, consulta ACL predefinita nella Guida per gli sviluppatori di Amazon S3.

Valore predefinito: NONE

I valori validi per questo attributo sono: NONE; PRIVATE; PUBLIC_READ; PUBLIC_READ_WRITE; AUTHENTICATED_READ; AWS_EXEC_READ; BUCKET_OWNER_READ; BUCKET_OWNER_FULL_CONTROL.

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. Se cdcInsertsOnly è impostato su true o y, solo le istruzioni INSERT dal database di origine vengono migrate nel 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.

Valore predefinito: false

Valori validi: true, false, y, n

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 è impostato a true o y, le operazioni di INSERT e UPDATE provenienti dal database di origine vengono migrate verso i file con estensione .csv o .parquet.

Solo nel caso di file in formato CSV, la registrazione di tali operazioni di INSERT e UPDATE 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.

Nota

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

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.

Nota

Questa impostazione è supportata in AWS DMS 3.4.2 e versioni successive.

Durante l'acquisizione delle modifiche ai dati nell'ordine delle transazioni, DMS memorizza sempre le modifiche alle righe nei file.csv indipendentemente dal valore dell'impostazione DataFormat S3 della destinazione. DMS non salva le modifiche ai dati nell'ordine delle transazioni utilizzando i file .parquet.

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.

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

Durante l'acquisizione delle modifiche ai dati nell'ordine delle transazioni, DMS memorizza sempre le modifiche alle righe nei file.csv indipendentemente dal valore dell'impostazione DataFormat S3 della destinazione. DMS non salva le modifiche ai dati nell'ordine delle transazioni utilizzando i file .parquet.

Nota

Questa impostazione è supportata in AWS DMS 3.4.2 e versioni successive.

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.

Nota

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.

Valore predefinito: false

Valori validi: true, false, y, n

Esempio: --s3-settings '{"IncludeOpForFullLoad": true}'

CompressionType

Parametro facoltativo che se impostato a GZIP attiva l'utilizzo di GZIP per comprimere i file .csv o .parquet di destinazione. Quando questo parametro è impostato come predefinito, i file di dati non vengono compressi.

Valore predefinito: NONE

Valori validi: GZIP o NONE

Esempio: --s3-settings '{"CompressionType": "GZIP"}'

CsvDelimiter

Delimitatore utilizzato per separare le colonne nei file di origine .csv. L'impostazione predefinita è una virgola (,).

Esempio: --s3-settings '{"CsvDelimiter": ","}'

CsvRowDelimiter

Delimitatore utilizzato per separare le righe nei file di origine .csv. L'impostazione predefinita è una nuova riga (\n).

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

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 su true o su y con l'utilizzo di Amazon S3 come destinazione, se i dati contengono virgolette, virgole o caratteri di riga nuova, AWS DMS racchiude l'intera colonna con un'ulteriore coppia 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

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.

Nota

È 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

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 l'ARN selezionando l'alias della chiave nell'elenco delle chiavi AWS KMS create per l'account. Quando crei la chiave, è necessario associare alla chiave KMS policy e ruoli specifici. Per ulteriori informazioni, consulta Creazione di chiavi AWS KMS per la crittografia di oggetti di destinazione Amazon S3.

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 che AWS DMS utilizza 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/.

Valore predefinito: csv

Valori validi: csv o parquet

Esempio: --s3-settings '{"DataFormat": "parquet"}'

EncodingType

Il tipo di codifica Parquet. Le opzioni del tipo di codifica includono le seguenti:

  • rle-dictionary: questa codifica di dizionario utilizza una combinazione di creazione di pacchetti di bit e di codifica runlength per un'archiviazione più efficiente dei valori ripetuti.

  • plain: nessuna codifica.

  • plain-dictionary: questa codifica di dizionario crea un dizionario di valori riscontrati in una determinata colonna. Il dizionario è archiviato in una pagina del dizionario per ogni blocco di colonne.

Valore predefinito: rle-dictionary

Valori validi: rle-dictionary, plain o plain-dictionary

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

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

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

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

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

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 colonna STRING aggiuntiva nel .csv o .parquet dei file di oggetti dei dati migrati quando TimestampColumnName viene impostato su un valore non vuoto.

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.

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

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 colonne TIMESTAMP in un file in formato .parquet con la precisione in millisecondi. In caso contrario, DMS le scrive con la precisione del microsecondo.

Al momento, Amazon Athena e AWS Glue possono gestire solo la 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.

Nota
  • AWS DMS scrive qualsiasi valore della colonna TIMESTAMP scritto su un file S3 in formato .csv con la precisione dei microsecondi.

  • 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

Esempio: --s3-settings '{"ParquetTimestampInMillisecond": true}'

GlueCatalogGeneration

Per generare un AWS Glue Data Catalog, configura questa impostazione dell'endpoint su true.

Valore predefinito: false

Valori validi: true, false

Esempio: --s3-settings '{"GlueCatalogGeneration": true}'

Nota: non utilizzare GlueCatalogGeneration con PreserveTransactions e CdcPath.

Utilizzo di AWS Glue Data Catalog con una destinazione Amazon S3 per AWS DMS

AWS Glue è un servizio che fornisce modi semplici per classificare i dati ed è costituito da un repository di metadati noto come AWS Glue Data Catalog. Puoi integrare AWS Glue Data Catalog con l'endpoint di destinazione Amazon S3 ed eseguire query sui dati Amazon S3 tramite altri servizi AWS, come Amazon Athena. Amazon Redshift funziona con AWS Glue, ma AWS DMS non la supporta come opzione predefinita.

Per generare il catalogo dati, imposta l'impostazione dell'endpoint GlueCatalogGeneration su true, come mostrato nell'esempio della AWS CLI 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", "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 crawler AWS Glue non è in grado di riconciliare i diversi schemi di file archiviati nel CdcPath specificato.

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:

{ "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 su AWS Glue, consulta Concetti dell' nella Guida per gli sviluppatori AWS Glue.

  • Per ulteriori informazioni su AWS Glue Data Catalog, consulta Componenti nella Guida per gli sviluppatori di AWS Glue.

Utilizzo della crittografia dei dati, dei file parquet e della CDC sulla destinazione Amazon S3

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 l'integrazione di AWS Glue Data Catalog con l'endpoint di destinazione Amazon S3 ed esegui le query sui dati Amazon S3 tramite altri servizi, come Amazon Athena.

Impostazioni della chiave AWS KMS per la crittografia dei dati

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.

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

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", "CompressionType": "GZIP", "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

Per impostazione predefinita, quando AWS DMS esegue un'attività di CDC, memorizza tutte le modifiche alle righe registrate nel database (o nei database) di origine in uno o più file per ogni tabella. Ogni set di file contenente le modifiche della 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 del 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.

Per acquisire le modifiche al database di origine in modo da rilevare anche l'ordine di transazione, puoi specificare le impostazioni degli endpoint S3 che consentono ad AWS DMS di memorizzare le modifiche 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, AWS DMS assegna un 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

Durante l'acquisizione delle modifiche ai dati nell'ordine delle transazioni, AWS DMS archivia sempre le modifiche alle righe nei file.csv indipendentemente dal valore dell'impostazione DataFormat S3 della destinazione. AWS DMS non salva le modifiche ai dati nell'ordine di transazione utilizzando i file. parquet.

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

Per indicare ad AWS DMS di archiviare tutte le modifiche alle righe nell'ordine di transazione
  1. Configura l'impostazione PreserveTransactions S3 nella destinazione su true.

  2. Configura l'impostazione CdcPath S3 nella destinazione su un percorso di cartella relativo in cui desideri che AWS DMS archivi i file di transazione in formato.csv.

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

Indicazione delle operazioni del DB di origine nei dati S3 migrati

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. Il modo in cui AWS DMS 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. Per un caricamento CDC quando cdcInsertsOnly è false (valore predefinito), AWS DMS crea sempre un ulteriore primo campo in ciascun 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.

Quando includeOpForFullLoad e cdcInsertsOnly hanno valori diversi, AWS DMS rende coerenti le impostazioni del record di destinazione sia per CDC sia per il caricamento completo. 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 cdcInsertsAndUpdates 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

La tabella seguente mostra i tipi di dati di destinazione Parquet supportati quando si utilizza AWS DMS e la mappatura predefinita dei tipi di dati AWS DMS.

Per ulteriori informazioni sui tipi di dati AWS DMS, consulta Tipi di dati per AWS Database Migration Service.

Tipo di dati AWS DMS

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