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 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 LOAD00001.csv, LOAD00002..., LOAD00009, LOAD0000A e così via per i file.csv. AWS DMS nomina i file CDC utilizzando 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'MaxFileSizeendpoint.
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.csvdatabase_schema_name
/table_name
/LOAD00000002.csv ...database_schema_name
/table_name
/LOAD00000009.csvdatabase_schema_name
/table_name
/LOAD0000000A.csvdatabase_schema_name
/table_name
/LOAD0000000B.csv ...database_schema_name
/table_name
/LOAD0000000F.csvdatabase_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 si utilizza AWS DMS per replicare le modifiche 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 comandoINSERT
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 comandoUPDATE
per riflettere il trasferimento di Bob nel nuovo ufficio. Il resto della riga riflette la riga nella tabella EMPLOYEE come appare dopoUPDATE
. -
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 comandoUPDATE
. Il resto della riga riflette la riga nella tabella EMPLOYEE come appare dopoUPDATE
. -
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 comandoDELETE
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.
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
Argomenti
- Prerequisiti per l'utilizzo di Amazon S3 come destinazione
- Limitazioni all'utilizzo di Amazon S3 come destinazione
- Sicurezza
- Utilizzo di Apache Parquet per l'archiviazione di oggetti Amazon S3
- Applicazione di tag agli oggetti Amazon S3
- Creazione di AWS KMS chiavi per crittografare gli oggetti di destinazione di Amazon S3
- Utilizzo del partizionamento delle cartelle in base alla data
- Caricamento parallelo di sorgenti partizionate quando si utilizza Amazon S3 come destinazione per AWS DMS
- Impostazioni degli endpoint quando si utilizza Amazon S3 come destinazione per AWS DMS
- Utilizzo AWS Glue Data Catalog con un target Amazon S3 per AWS DMS
- Utilizzo della crittografia dei dati, dei file parquet e della CDC sulla destinazione Amazon S3
- Indicazione delle operazioni del DB di origine nei dati S3 migrati
- Tipi di dati di destinazione per Parquet S3
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 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 come endpoint di origine e di destinazione AWS DMS
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, 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.
-
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 destinazioneBatchApplyEnabled
, per una destinazione S3 potrebbe causare la perdita di dati. -
Non puoi usare
DatePartitionEnabled
oaddColumnName
insieme conPreserveTransactions
oCdcPath
. -
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
comeDO_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 sutrue
, 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 una serie di concessioni predefinite per Amazon S3, note come elenchi di controllo degli accessi predefiniti (ACL). 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:
-
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.
-
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.
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 | Descrizione |
---|---|---|
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 |
|
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
|
tag-set |
|
I nomi e i valori per uno o più tag che si desidera impostare su ogni oggetto S3 creato che corrisponde a È anche possibile specificare un valore dinamico per tutto o parte del valore di entrambi i parametri NotaImportanteSe inserisci un valore dinamico per il parametro |
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 AWS KMS chiavi per crittografare gli oggetti di destinazione di Amazon S3
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,
è 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.your-KMS-key-ARN
-
Imposta l'attributo di connessione aggiuntivo
encryptionMode
sul valoreSSE_KMS
e l'attributo della connessione aggiuntivaserverSideEncryptionKmsKeyId
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
Aprire la console IAM all'indirizzo https://console.aws.amazon.com/iam/
. -
Nel riquadro di navigazione seleziona Policies (Policy). Viene visualizzata la pagina Policies (Policy).
-
Scegli Crea policy. Viene visualizzata la pagina Create policy (Crea policy).
-
Scegli Service (Servizio), quindi S3. Viene visualizzato un elenco di autorizzazioni di azioni.
-
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.
-
-
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.
-
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).
-
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. -
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
-
Nella console IAM scegli Ruoli nel riquadro di navigazione. Viene visualizzata la pagina dei dettagli Roles (Ruoli).
-
Scegli Crea ruolo. Viene visualizzata la pagina Create role (Crea ruolo).
-
Con il AWS servizio selezionato come entità affidabile, scegli DMS come servizio per utilizzare il ruolo IAM.
-
Scegli Successivo: autorizzazioni. Viene visualizzata la vista Allega policy di autorizzazione nella pagina Crea ruolo.
-
Individuare e selezionare la policy IAM per il ruolo IAM creato nella procedura precedente (
DMS-S3-endpoint-access
). -
Scegli Successivo: Tag. Viene visualizzata la vista Aggiungi tag nella pagina Crea ruolo. Qui è possibile aggiungere i tag desiderati.
-
Scegli Prossimo: Rivedi. Viene visualizzata la vista Verifica nella pagina Crea ruolo. Qui è possibile verificare i risultati.
-
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, consultaImpostazione di una chiave di crittografia e specificazione delle autorizzazioni AWS KMS.
-
Accedi AWS Management Console e apri la console AWS Key Management Service (AWS KMS) all'indirizzo https://console.aws.amazon.com/kms
. -
Per modificare il Regione AWS, usa il selettore della regione nell'angolo in alto a destra della pagina.
-
Nel riquadro di navigazione, scegli Chiavi gestite dal cliente.
-
Scegliere Create key (Crea chiave). Verrà visualizzata la pagina Configure key (Configura chiave).
-
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.
-
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).
-
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. -
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.
-
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.
-
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.
-
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
. -
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
eUser1
) 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 } } } ]
-
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
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). Utilizza le seguenti impostazioni dell'endpoint di destinazione:
-
DatePartitionEnabled
: specifica il partizionamento in base alla data. Imposta questa opzione booleana sutrue
per eseguire il partizionamento delle cartelle del bucket S3 in base alla data di commit delle transazioni.Non è possibile utilizzare questa impostazione con
PreserveTransactions
oCdcPath
.Il valore predefinito è
false
. -
DatePartitionSequence
: identifica la sequenza del formato della data da utilizzare durante il partizionamento delle cartelle. Imposta questa opzione ENUM suYYYYMMDD
,YYYYMMDDHH
,YYYYMM
,MMYYYYDD
oDDMMYYYY
. Il valore predefinito èYYYYMMDD
. Utilizza questa impostazione quandoDatePartitionEnabled
è impostato sutrue.
-
DatePartitionDelimiter
: specifica un delimitatore di separazione della data da utilizzare durante il partizionamento delle cartelle. Imposta questa opzione ENUM suSLASH
,DASH
,UNDERSCORE
oNONE
. Il valore predefinito èSLASH
. Utilizza questa impostazione quandoDatePartitionEnabled
è impostato sutrue
.
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 di. --s3-settings '{
AWS CLIjson-settings
}'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
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.
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
aggiuntiva che corrisponde a una partizione di origine con lo stesso nome. Questa sottocartella partition_name
archivia uno o più file partition_name
LOAD
contenenti i dati migrati dalla partizione di origine specificata. seq_num
.csv
è il suffisso del numero di sequenza nel nome del file.csv, ad esempio seq_num
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.
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.table_name
.../
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 AWS DMS console o utilizzando il create-endpoint
comando in AWS CLI, con la --s3-settings '{"
sintassi JSON.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 opzionale che specifica come AWS DMS vengono trattati i valori nulli. 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 impostate il valore di questo parametro sulla stringa vuota (» "o «), AWS DMS considera la stringa vuota come valore nullo anziché. Valore predefinito: Valori validi: qualsiasi stringa valida Esempio: |
AddColumnName |
Un parametro facoltativo che, quando impostato a Non è possibile utilizzare questo parametro con Valore predefinito: Valori validi: Esempio: |
AddTrailingPaddingCharacter |
Usa l'impostazione dell'endpoint di destinazione S3 Tipo: Booleano Esempio: |
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 Esempio: |
BucketName |
Il nome del bucket S3 in cui gli oggetti di destinazione S3 vengono creati come file .csv o .parquet. Esempio: |
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 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: |
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 Solo per il formato .csv, la modalità di registrazione di queste istruzioni INSERT varia a seconda del valore di Valore predefinito: Valori validi: Esempio: |
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 è Solo nel caso di file in formato CSV, la registrazione di tali operazioni di INSERT e UPDATE dipende dal valore del parametro Per ulteriori informazioni sul funzionamento congiunto di questi parametri, consulta Indicazione delle operazioni del DB di origine nei dati S3 migrati. Nota
Valore predefinito: Valori validi: Esempio: |
|
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 Non è possibile utilizzare questo parametro con ▬Tipo: stringa Ad esempio, se specifichi Se specifichi lo stesso NotaQuesta impostazione è supportata nelle versioni 3.4.2 e successive. AWS DMS 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. DMS non salva le modifiche ai dati nell'ordine delle transazioni utilizzando i file .parquet. |
|
Condizione della lunghezza massima dell'intervallo, definita in secondi, per l'output di un file in Amazon S3. Valore predefinito: 60 secondi Quando |
|
Condizione della dimensione minima del file, espressa in kilobyte, per l'output di un file in Amazon S3. Valore predefinito: 32000 KB Quando |
|
Se questa opzione è impostata su Non è possibile utilizzare questo parametro con 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 destinazione. DataFormat DMS non salva le modifiche ai dati nell'ordine delle transazioni utilizzando i file .parquet. NotaQuesta 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 NotaQuesto parametro viene utilizzato insieme a Valore predefinito: Valori validi: Esempio: |
CompressionType |
Parametro facoltativo che se impostato a Valore predefinito: Valori validi: Esempio: |
CsvDelimiter |
Delimitatore utilizzato per separare le colonne nei file di origine .csv. L'impostazione predefinita è una virgola (,). Esempio: |
CsvRowDelimiter |
Delimitatore utilizzato per separare le righe nei file di origine .csv. L'impostazione predefinita è una nuova riga (\n). Esempio: |
|
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: |
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 Valore predefinito: Valori validi: Esempio: |
EncryptionMode |
Le modalità di crittografia lato server desiderata per crittografare i file degli oggetti .csv o .parquet copiati in S3. I valori validi sono NotaÈ inoltre possibile utilizzare il comando CLI Valore predefinito: Valori validi: Esempio: |
ServerSideEncryptionKmsKeyId |
Se hai impostato Esempio: |
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/ Valore predefinito: Valori validi: Esempio: |
EncodingType |
Il tipo di codifica Parquet. Le opzioni del tipo di codifica includono le seguenti:
Valore predefinito: Valori validi: Esempio: |
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: |
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: |
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: |
ParquetVersion |
La versione del formato del file .parquet. Valore predefinito: Valori validi: Esempio: |
EnableStatistics |
Impostare a Valore predefinito: Valori validi: Esempio: |
TimestampColumnName |
Un parametro facoltativo per includere una colonna timestamp nei dati dell'endpoint di destinazione S3. AWS DMS include una 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 è Quando il parametro Esempio: |
UseTaskStartTimeForFullLoadTimestamp |
Se impostato su Quando Valore predefinito: Valori validi: Esempio:
|
ParquetTimestampInMillisecond |
Un parametro opzionale che specifica la precisione di qualsiasi valore della colonna Quando questo attributo è impostato su Attualmente, Amazon Athena e AWS Glue può gestire solo una precisione in millisecondi per i valori. Nota
Valore predefinito: Valori validi: Esempio: |
GlueCatalogGeneration |
Per generare un AWS Glue Data Catalog, imposta questa impostazione dell'endpoint su. Valore predefinito: Valori validi: Esempio: Nota: non utilizzare |
Utilizzo AWS Glue Data Catalog con un target Amazon S3 per AWS DMS
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 sutrue
, 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:
{ "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 in merito AWS Glue, consulta Concepts nella Developer Guide.AWS Glue
-
Per ulteriori informazioni, AWS Glue Data Catalog consulta Components nella AWS Glue Developer Guide.
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 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
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à 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.
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
è l'operazione di transazione sulla riga modificata, operation
è il nome della tabella del database in cui è stata modificata la riga, table_name
è il nome dello schema del database in cui si trova la tabella e database_schema_name
è il primo di uno o più valori di campo che specificano i dati per la riga.field_value
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
è l'ora in cui stato creato il file di transazione, come nell'esempio seguente. timestamp
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
AWS DMS non salva le modifiche ai dati nell'ordine delle transazioni 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 dire di AWS DMS memorizzare tutte le modifiche alle righe nell'ordine delle transazioni
-
Configura l'impostazione
PreserveTransactions
S3 nella destinazione sutrue
. -
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
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 diincludeOpForFullLoad
, 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
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, vedereTipi di dati per AWS Database Migration Service.
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 |