Utilizzo di un database Amazon Redshift 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 un database Amazon Redshift come destinazione per AWS Database Migration Service

Puoi migrare i dati nei database Amazon Redshift utilizzando AWS Database Migration Service. Amazon Redshift è un servizio di data warehouse nel cloud in scala petabyte interamente gestito. Con un database Amazon Redshift come destinazione, puoi eseguire la migrazione dei dati da tutti gli altri database di origine supportati.

Puoi utilizzare Amazon Redshift serverless come destinazione per AWS DMS. Per ulteriori informazioni, consulta la sezione seguente: Utilizzo di AWS DMS con Amazon Redshift serverless come destinazione.

Il cluster Amazon Redshift deve trovarsi nello stesso account AWS e nella stessa regione AWS dell'istanza di replica.

Durante la migrazione di un database a Amazon Redshift, AWS DMS sposta innanzitutto i dati in un bucket Amazon S3. Quando i file risiedono in un bucket Amazon S3, AWS DMS li trasferisce alle tabelle appropriate nel data warehouse Amazon Redshift. AWS DMS crea il bucket S3 nella stessa regione AWS del database Amazon Redshift. L'istanza di replica AWS DMS deve trovarsi in quella stessa regione AWS.

Se utilizzi la AWS CLI oppure l'API DMS per eseguire la migrazione dei dati ad Amazon Redshift, devi configurare un ruolo AWS Identity and Access Management (IAM) per consentire l'accesso a S3. Per ulteriori informazioni sulla creazione di questo ruolo IAM, consulta Creazione dei ruoli IAM da utilizzare con l' AWS DMS API AWS CLI and.

L'endpoint Amazon Redshift fornisce l'automazione completa per le operazioni seguenti:

  • Generazione dello schema e mappatura dei tipi di dati

  • Caricamento completo delle tabelle di database di origine

  • Caricamento incrementale delle modifiche apportate alle tabelle di origine

  • Applicazione delle modifiche dello schema nel DDL (Data Definition Language) effettuate sulle tabelle di origine

  • Sincronizzazione tra il caricamento completo e i processi Change Data Capture (CDC).

AWS Database Migration Service supporta le operazioni di caricamento completo e di elaborazione delle modifiche. AWS DMS legge i dati dal database di origine e crea una serie di file con valori separati da virgole (.csv). Per le operazioni di pieno carico, AWS DMS crea i file per ciascuna tabella. Quindi, AWS DMS copia i file per ciascuna tabella in una cartella separata in Amazon S3. Quando i file vengono caricati su Amazon S3, AWS DMS invia un comando di copia e i dati nei file vengono copiati in Amazon Redshift. Per le operazioni di elaborazione delle modifiche, AWS DMS copia le modifiche della rete nei file .csv. Quindi, AWS DMS carica i file delle modifiche di rete su Amazon S3 e copia i dati in Amazon Redshift.

Per ulteriori dettagli sull'utilizzo di Amazon Redshift come destinazione per AWS DMS, consulta le seguenti sezioni:

Prerequisiti per l'utilizzo di un database Amazon Redshift come destinazione per AWS Database Migration Service

Di seguito sono descritti i prerequisiti necessari per l'utilizzo di Amazon Redshift come destinazione per la migrazione dei dati:

  • Utilizza la Console di gestione AWS per avviare un cluster Amazon Redshift. Prendi nota delle informazioni di base sull'account AWS e sul cluster Amazon Redshift, ad esempio la password, il nome utente e il nome del database. Tali valori sono necessari durante la creazione dell'endpoint di destinazione Amazon Redshift.

  • Il cluster Amazon Redshift deve trovarsi nello stesso account AWS e nella stessa regione AWS dell'istanza di replica.

  • L'istanza di replica AWS DMS richiede la connettività di rete sull'endpoint Amazon Redshift (nome host e porta) utilizzato dal cluster.

  • AWS DMS usa un bucket Amazon S3 per trasferire i dati al database Amazon Redshift. Per consentire a AWS DMS di creare il bucket, la console utilizza un ruolo IAM, dms-access-for-endpoint. Se utilizzi la AWS CLI o l'API DMS per creare una migrazione di database con Amazon Redshift come database di destinazione, devi creare questo ruolo IAM. Per ulteriori informazioni sulla creazione di questo ruolo, consulta Creazione dei ruoli IAM da utilizzare con l' AWS DMS API AWS CLI and.

  • AWS DMS converte BLOB, CLOB e NCLOB in un valore VARCHAR nell'istanza di destinazione Amazon Redshift. Amazon Redshift non supporta tipi di dati VARCHAR di dimensioni superiori a 64 KB, quindi non puoi archiviare i LOB tradizionali in Amazon Redshift.

  • Imposta l'attività dei metadati di destinazione BatChapplyEnabled su true per AWS DMS per gestire le modifiche alle tabelle target Amazon Redshift durante il CDC. È necessaria una chiave primaria nella tabella di origine e nella tabella di destinazione. Senza una chiave primaria, le modifiche vengono applicate istruzione dopo istruzione. E ciò può influire negativamente sulle prestazioni delle attività durante il CDC causando latenza di destinazione e influendo sulla coda di commit del cluster.

Privilegi richiesti per l'utilizzo di Redshift come destinazione

Utilizza il comando GRANT per definire i privilegi di accesso per un utente o un gruppo di utenti. I privilegi includono opzioni di accesso come la possibilità di leggere i dati in tabelle e viste, scrivere dati e creare tabelle. Per ulteriori informazioni sull'utilizzo di GRANT con Amazon Redshift, consulta GRANT nella Guida per gli sviluppatori di database Amazon Redshift.

Di seguito è riportata la sintassi per assegnare privilegi specifici per una tabella, un database, uno schema, una funzione, una procedura o privilegi a livello di lingua su tabelle e viste Amazon Redshift.

GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL PROCEDURES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT USAGE ON LANGUAGE language_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

Di seguito è riportata la sintassi per i privilegi a livello di colonna su tabelle e viste Amazon Redshift.

GRANT { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { [ TABLE ] table_name [, ...] } TO { username | GROUP group_name | PUBLIC } [, ...]

Di seguito è riportata la sintassi per il privilegio ASSUMEROLE concesso a utenti e gruppi con un ruolo specificato.

GRANT ASSUMEROLE ON { 'iam_role' [, ...] | ALL } TO { username | GROUP group_name | PUBLIC } [, ...] FOR { ALL | COPY | UNLOAD } [, ...]

Limitazioni all'utilizzo di Amazon Redshift come destinazione per AWS Database Migration Service

Le seguenti limitazioni si applicano quando si utilizza un database Amazon Redshift come destinazione:

  • Non abilitare il controllo delle versioni per il bucket S3 che usi come storage intermedio per la destinazione Amazon Redshift. 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.

  • Il seguente DDL non è supportato:

    ALTER TABLE table name MODIFY COLUMN column name data type;
  • AWS DMS non può migrare o replicare le modifiche in uno schema con un nome che inizia con un carattere di sottolineatura (_). Se disponi di schemi con un nome che inizia con un carattere di sottolineatura, utilizza le trasformazioni di mappatura per rinominare lo schema sulla destinazione.

  • Amazon Redshift non supporta valori VARCHAR di dimensioni superiori a 64 KB. I LOB provenienti dai database tradizionali non possono essere archiviati in Amazon Redshift.

  • L'applicazione di un'istruzione DELETE a una tabella con una chiave primaria a più colonne non è supportata quando uno dei nomi di colonna della chiave primaria utilizza una parola riservata. Vai qui per vedere un elenco di parole riservate Amazon Redshift.

  • Potrebbero verificarsi problemi di prestazioni se il sistema di origine esegue operazioni UPDATE sulla chiave primaria di una tabella di origine. Questi problemi di prestazioni si verificano quando si applicano modifiche alla destinazione. Ciò accade perché le operazioni UPDATE (e DELETE) dipendono dal valore della chiave primaria per identificare la riga di destinazione. Se aggiorni la chiave primaria di una tabella di origine, il log delle attività conterrà messaggi come i seguenti:

    Update on table 1 changes PK to a PK that was previously updated in the same bulk update.
  • DMS non supporta nomi DNS personalizzati per la configurazione di un endpoint di un cluster Redshift ed è necessario utilizzare il nome DNS fornito da Amazon. Poiché il cluster Amazon Redshift deve trovarsi nello stesso account e nella stessa regione AWS dell'istanza di replica, la convalida non riesce se si utilizza un endpoint DNS personalizzato.

  • Amazon Redshift prevede un timeout di sessione inattiva predefinito di 4 ore. Quando non c'è alcuna esecuzione all'interno dell'attività di replica DMS, Redshift disconnette la sessione dopo 4 ore. Gli errori possono derivare dall'impossibilità di DMS di connettersi e dalla potenziale necessità di riavviare il sistema. Come soluzione alternativa, imposta per SESSION TIMEOUT un limite superiore a 4 ore per l'utente della replica DMS. In alternativa, consulta la descrizione di ALTER USER nella Guida per gli sviluppatori di database di Amazon Redshift.

  • Quando AWS DMS replica i dati della tabella di origine senza una chiave primaria o univoca, la latenza del CDC può essere elevata con conseguente livello di prestazioni inaccettabile.

Configurazione di un database Amazon Redshift come destinazione per AWS Database Migration Service

AWS Database Migration Service deve essere configurato per l'utilizzo dell'istanza Amazon Redshift. Nella tabella seguente vengono descritte le proprietà di configurazione disponibili per l'endpoint Amazon Redshift.

Proprietà

Description

server

Il nome del cluster Amazon Redshift in uso.

port

Il numero di porta per Amazon Redshift. Il valore predefinito è 5439.

username

Il nome utente Amazon Redshift di un utente registrato.

password

La password per l'utente denominato nella proprietà username.

database

Il nome del data warehouse (servizio) Amazon Redshift in uso.

Se desideri aggiungere ulteriori attributi della stringa di connessione all'endpoint Amazon Redshift, puoi specificare maxFileSize e fileTransferUploadStreams. Per ulteriori informazioni su questi attributi, consulta Impostazioni degli endpoint quando si utilizza Amazon Redshift come destinazione per AWS DMS.

Utilizzo del routing VPC avanzato con Amazon Redshift come destinazione per AWS Database Migration Service

Se usi il routing VPC avanzato con la destinazione Amazon Redshift, tutto il traffico di tipo COPY tra il cluster Amazon Redshift e i repository di dati passa attraverso il VPC. Poiché il routing VPC avanzato influisce sul modo in cui Amazon Redshift accede ad altre risorse, i comandi COPY potrebbero avere esito negativo se non hai configurato correttamente il VPC.

AWS DMS può essere influenzato da questo comportamento perché utilizza il comando COPY per spostare i dati in S3 su un cluster Amazon Redshift.

Di seguito sono riportate le fasi intraprese da AWS DMS per il caricamento dei dati in una destinazione Amazon Redshift:

  1. AWS DMS copia i dati dall'origine ai file .csv sul server di replica.

  2. AWS DMS utilizza AWS SDK per copiare i file .csv in un bucket S3 sull'account.

  3. AWS DMS utilizza quindi il comando COPY in Amazon Redshift per copiare i dati dai file .csv in S3 su una tabella appropriata in Amazon Redshift.

Se il routing VPC avanzato non è abilitato, Amazon Redshift instrada il traffico tramite Internet, incluso il traffico verso altri servizi nella rete AWS. Se la caratteristica non è abilitata, non è necessario configurare il percorso di rete. Se la caratteristica è abilitata, è necessario creare un percorso di rete tra il VPC del cluster e le risorse di dati. Per ulteriori informazioni sulla configurazione necessaria, consulta Routing VPC avanzato nella documentazione di Amazon Redshift.

Creazione e utilizzo delle chiavi AWS KMS per la crittografia dei dati di destinazione Amazon Redshift

È possibile crittografare i dati di destinazione trasmessi ad Amazon S3 prima di copiarli in Amazon Redshift. A questo scopo, puoi creare e utilizzare chiavi AWS KMS personalizzate. Puoi utilizzare la chiave creata per crittografare i dati di destinazione usando uno dei seguenti meccanismi al momento della creazione dell'endpoint di destinazione Amazon Redshift:

Per crittografare i dati di destinazione Amazon Redshift utilizzando una chiave KMS, è necessario disporre di un ruolo AWS Identity and Access Management (IAM) che abbia le autorizzazioni per accedere ai dati Amazon Redshift. È 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:

  • Un ruolo IAM con una policy gestita da AWS.

  • Una chiave di crittografia KMS con la policy della chiave che fa riferimento a questo ruolo.

Nelle seguenti procedure viene descritto come procedere.

Per creare un ruolo IAM con la policy gestita da AWS richiesta
  1. Apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione, seleziona Ruoli. Viene visualizzata la pagina Roles (Ruoli).

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

  4. Dopo aver selezionato Servizio AWS come entità attendibile, scegli DMS come servizio per l'utilizzo del ruolo.

  5. Scegli Successivo: Autorizzazioni. Verrà visualizzata la pagina Attach permissions policies (Collega policy di autorizzazioni).

  6. Trova e seleziona la policy AmazonDMSRedshiftS3Role.

  7. Scegliere Successivo: Tag. Viene visualizzata la pagina Aggiungi tag. Qui è possibile aggiungere i tag desiderati.

  8. Seleziona Next: Review (Successivo: Rivedi) ed esamina i risultati.

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

Ora il nuovo ruolo per accedere alle risorse di Amazon Redshift per la crittografia con un nome specifico, ad esempio DMS-Redshift-endpoint-access-role, è stato creato.

Per creare una chiave crittografica AWS 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 Redshift, 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-Redshift-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 Redshift. Scegli in Ruoli il ruolo creato in precedenza per abilitare l'accesso alla crittografia degli oggetti di destinazione Amazon Redshift, ad esempio DMS-Redshift-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 di chiave consentite per i diversi principali (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-Redshift-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-Redshift-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 AWS KMS key è stata creata.

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

Impostazioni degli endpoint quando si utilizza Amazon Redshift come destinazione per AWS DMS

È possibile utilizzare le impostazioni degli endpoint per configurare il database di destinazione Amazon Redshift 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 --redshift-settings '{"EndpointSetting": "value", ...}'.

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

Nome Description

MaxFileSize

Specifica la dimensione massima (in KB) di qualsiasi file .csv utilizzato per il trasferimento dei dati ad Amazon Redshift.

Valore predefinito: 32.768 KB (32 MB)

Valori validi: 1-1.048.576

Esempio: --redshift-settings '{"MaxFileSize": 512}'

FileTransferUploadStreams

Specifica il numero di thread utilizzati per caricare un singolo file.

Valore predefinito: 10

Valori validi: 1-64

Esempio: --redshift-settings '{"FileTransferUploadStreams": 20}'

Acceptanydate

Specifica se viene accettato qualsiasi formato di data, inclusi i formati di date non validi, ad esempio 0000-00-00. Valore booleano.

Valore predefinito: false

Valori validi: true | false

Esempio: --redshift-settings '{"Acceptanydate": true}'

Dateformat

Specifica il formato della data. Si tratta di un input di stringa e tale campo è vuoto per impostazione predefinita. Il formato predefinito è AAAA-MM-GG ma è possibile modificarlo, ad esempio, GG-MM-AAAA. Se i valori di ora o data utilizzano formati diversi, utilizzare l'argomento auto con il parametro Dateformat. L'argomento auto riconosce diversi formati che non sono supportati quando si utilizza una stringa Dateformat. La parola chiave auto prevede una distinzione tra lettere maiuscole e minuscole.

Valore predefinito: vuoto

Valori validi: "dateformat_string" o auto

Esempio:--redshift-settings '{"Dateformat": "auto"}'

Timeformat

Specifica il formato dell'ora. Si tratta di un input di stringa e tale campo è vuoto per impostazione predefinita. L'argomento auto riconosce diversi formati che non sono supportati quando si utilizza una stringa Timeformat. Se i valori di data e ora utilizzano formati diversi tra loro, utilizzare l'argomento auto con il parametro Timeformat.

Valore predefinito: 10

Valori validi: "Timeformat_string" | "auto" | "epochsecs" | "epochmillisecs"

Esempio:--redshift-settings '{"Timeformat": "auto"}'

Emptyasnull

Specifica se AWS DMS deve migrare campi CHAR e VARCHAR vuoti come null. Il valore true imposta i campi CHAR e VARCHAR vuoti come null.

Valore predefinito: false

Valori validi: true | false

Esempio: --redshift-settings '{"Emptyasnull": true}'

TruncateColumns

Tronca i dati nelle colonne al numero appropriato di caratteri in modo che corrispondano alle specifiche della colonna. Si applica solo alle colonne con un tipo di dati VARCHAR o CHAR e alle righe di dimensioni fino a 4 MB.

Valore predefinito: false

Valori validi: true | false

Esempio: --redshift-settings '{"TruncateColumns": true}'

RemoveQuotes

Rimuove le virgolette intorno alle stringhe nei dati in entrata. Tutti i caratteri compresi tra le virgolette, inclusi i delimitatori, vengono mantenuti. Per ulteriori informazioni sulla rimozione delle virgolette per una destinazione Amazon Redshift, consulta la Guida per gli sviluppatori di database di Amazon Redshift.

Valore predefinito: false

Valori validi: true | false

Esempio: --redshift-settings '{"RemoveQuotes": true}'

TrimBlanks

Rimuove i caratteri di spazio finale da una stringa VARCHAR. Questo parametro è valido solo per le colonne con un tipo di dati VARCHAR.

Valore predefinito: false

Valori validi: true | false

Esempio: --redshift-settings '{"TrimBlanks": true}'

EncryptionMode La modalità di crittografia lato server che si desidera utilizzare per inviare i dati a S3 prima di copiarli in Amazon Redshift. 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'impostazione 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:--redshift-settings '{"EncryptionMode": "SSE_S3"}'

ServerSideEncryptionKmsKeyId Se hai configurato EncryptionMode su SSE_KMS, imposta questo parametro sull'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 ad essa policy e ruoli specifici. Per ulteriori informazioni, consulta Creazione e utilizzo delle chiavi AWS KMS per la crittografia dei dati di destinazione Amazon Redshift.

Esempio: --redshift-settings '{"ServerSideEncryptionKmsKeyId":"arn:aws:kms:us-east-1:111122223333:key/11a1a1a1-aaaa-9999-abab-2bbbbbb222a2"}'

EnableParallelBatchInMemoryCSVFiles L'impostazione EnableParallelBatchInMemoryCSVFiles migliora le prestazioni delle attività di pieno carico multithread di maggiori dimensioni grazie alla possibilità di DMS di scrivere sul disco anziché sulla memoria. Il valore predefinito è false.
CompressCsvFiles Utilizza questo attributo per comprimere i dati inviati a una destinazione Amazon Redshift durante la migrazione. Il valore predefinito è true e la compressione è abilitata per impostazione predefinita.

Utilizzo di una chiave di crittografia dei dati e di un bucket Amazon S3 come storage intermedio

Puoi utilizzare le impostazioni degli endpoint di destinazione Amazon Redshift per configurare:

  • Una chiave di crittografia dei dati AWS KMS personalizzata. Puoi utilizzare quindi questa chiave per crittografare i dati trasmessi ad Amazon S3 prima che siano copiati su Amazon Redshift.

  • Un bucket S3 personalizzato come storage intermedio per i dati migrati in Amazon Redshift.

  • Mappa un booleano come tale da un'origine PostgreSQL. Per impostazione predefinita, il tipo BOOLEAN viene migrato come varchar(1). Puoi specificare MapBooleanAsBoolean per consentire alla destinazione Redshift di migrare il tipo booleano come tale, come mostrato nell'esempio seguente.

    --redshift-settings '{"MapBooleanAsBoolean": true}'

    Tieni presente che questa impostazione, affinché abbia effetto, deve essere configurata sia sull'endpoint di origine che su quello di destinazione.

Impostazioni delle chiavi KMS per la crittografia dei dati

I seguenti esempi mostrano la configurazione di una chiave KMS personalizzata per crittografare i dati trasmessi a S3. Per iniziare, è possibile effettuare la seguente chiamata create-endpoint utilizzando la AWS CLI.

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1"}'

Qui l'oggetto JSON specificato dall'opzione --redshift-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/24c3c5a1-f34a-4519-a85b-2debbef226d1. Questo valore è un ARN (Amazon Resource Name) per la chiave KMS personalizzata.

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

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"EncryptionMode": "SSE_S3"}'

Per ulteriori informazioni sull'utilizzo della crittografia lato server S3, consulta Protezione dei dati con la crittografia lato server nella Guida per l'utente di Amazon Simple Storage Service.

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 del bucket Amazon S3

Quando esegui la migrazione di dati su un endpoint di destinazione Amazon Redshift, AWS DMS utilizza un bucket Amazon S3 predefinito per lo storage intermedio dell'attività prima della copia dei dati migrati su Amazon Redshift. Gli esempi mostrati per la creazione di un endpoint di destinazione Amazon Redshift con una chiave di crittografia dei dati AWS KMS utilizzano questo bucket S3 predefinito (consulta Impostazioni delle chiavi KMS per la crittografia dei dati).

Puoi invece specificare un bucket S3 personalizzato da usare come area di memorizzazione intermedia includendo i seguenti parametri nel valore dell'opzione --redshift-settings nel comando create-endpoint invocato tramite AWS CLI:

  • BucketName: una stringa che specifichi come nome dello storage del bucket S3. Se il ruolo di accesso al servizio si basa sulla policy AmazonDMSRedshiftS3Role, questo valore deve avere il prefisso dms-, ad esempio dms-my-bucket-name.

  • BucketFolder (facoltativo): una stringa che è possibile indicare come nome della cartella di storage nel bucket S3 specificato.

  • ServiceAccessRoleArn: l'ARN di un ruolo IAM che consente l'accesso amministrativo al bucket S3. Di solito, è necessario creare questo ruolo in base alla policy AmazonDMSRedshiftS3Role. Per un esempio, consulta la procedura per creare un ruolo IAM con la policy gestita da AWS richiesta in Creazione e utilizzo delle chiavi AWS KMS per la crittografia dei dati di destinazione Amazon Redshift.

    Nota

    Se specifichi l'ARN di un altro ruolo IAM utilizzando l'opzione --service-access-role-arn del comando create-endpoint, questa opzione per il ruolo IAM ha la precedenza.

L'esempio seguente mostra come utilizzare questi parametri per specificare un bucket Amazon S3 personalizzato nella seguente chiamata create-endpoint utilizzando la AWS CLI.

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketName": "your-bucket-name", "BucketFolder": "your-bucket-folder-name"}'

Impostazioni delle attività multithread per Amazon Redshift

Puoi migliorare le prestazioni delle attività di pieno carico e acquisizione dei dati di modifica (CDC) per un endpoint di destinazione Amazon Redshift utilizzando le impostazioni delle attività multithread. Ti consentono di specificare il numero di thread simultanei e il numero di record da archiviare in un buffer.

Impostazioni delle attività di pieno carico multithread per Amazon Redshift

Per promuovere le prestazioni del pieno carico, puoi utilizzare le seguenti impostazioni dell'attività ParallelLoad*:

  • ParallelLoadThreads: specifica il numero di thread simultanei che DMS utilizza durante un pieno carico per eseguire il push di record di dati a un endpoint di destinazione Amazon Redshift. Il valore predefinito è zero (0) e il valore massimo è 32. Per ulteriori informazioni, consulta Impostazioni delle attività di caricamento completo.

    Puoi impostare l'attributo enableParallelBatchInMemoryCSVFiles su false quando usi l'impostazione dell'attività ParallelLoadThreads. L'attributo migliora le prestazioni delle attività di pieno carico multithread di maggiori dimensioni grazie alla possibilità di DMS di scrivere sul disco anziché sulla memoria. Il valore predefinito è true.

  • ParallelLoadBufferSize: specifica il numero massimo di richieste di record di dati durante l'utilizzo di thread di caricamento paralleli con la destinazione Redshift. Il valore predefinito è 100 e il valore massimo è 1.000. Si consiglia di utilizzare questa opzione quando ParallelLoadThreads > 1 (maggiore di uno).

Nota

Il supporto per l'uso delle impostazioni dell'attività ParallelLoad* durante il FULL LOAD negli endpoint di destinazione Amazon Redshift è disponibile in AWS DMS 3.4.5 e versioni successive.

L'impostazione dell'endpoint ReplaceInvalidChars Redshift non è supportata per l'uso durante l'acquisizione dei dati di modifica (CDC) o durante un'attività di migrazione FULL LOAD abilitata al caricamento parallelo. È supportata per la migrazione FULL LOAD quando il caricamento parallelo non è abilitato. Per ulteriori informazioni, consulta RedshiftSettings nella Documentazione di riferimento delle API di AWS Database Migration Service

Impostazioni dell'attività di CDC multithread per Amazon Redshift

Per promuovere le prestazioni della CDC, puoi utilizzare le seguenti impostazioni dell'attività ParallelApply*.

  • ParallelApplyThreads: specifica il numero di thread simultanei utilizzati da AWS DMS durante un carico CDC per eseguire il push di record di dati a un endpoint di destinazione Amazon Redshift. Il valore predefinito è zero (0) e il valore massimo è 32. Il valore minimo consigliato è pari al numero di sezioni del cluster.

  • ParallelApplyBufferSize: specifica il numero massimo di richieste di record di dati durante l'utilizzo di thread di applicazione paralleli con la destinazione Redshift. Il valore predefinito è 100 e il valore massimo è 1.000. Si consiglia di utilizzare questa opzione quando ParallelApplyThreads > 1 (maggiore di uno).

    Per ottenere il massimo vantaggio da Redshift come destinazione, è opportuno che il valore di ParallelApplyBufferSize sia almeno due volte (il doppio) il numero diParallelApplyThreads.

Nota

Il supporto per l'uso delle impostazioni dell'attività ParallelApply* durante CDC verso gli endpoint di destinazione Amazon Redshift è disponibile in AWS DMS 3.4.3 e versioni successive.

Il livello di parallelismo applicato dipende dalla correlazione tra la dimensione del batch totale e la dimensione massima del file utilizzato per trasferire i dati. Quando si utilizzano impostazioni dell'attività di CDC multithread con una destinazione Redshift, si ottengono vantaggi quando la dimensione del batch è elevata rispetto alla dimensione massima del file. Ad esempio, per ottimizzare le prestazioni è possibile utilizzare la seguente combinazione di impostazioni dell'endpoint e dell'attività.

// Redshift endpoint setting MaxFileSize=250000; // Task settings BatchApplyEnabled=true; BatchSplitSize =8000; BatchApplyTimeoutMax =1800; BatchApplyTimeoutMin =1800; ParallelApplyThreads=32; ParallelApplyBufferSize=100;

Utilizzando le impostazioni dell'esempio precedente, un cliente con un carico di lavoro transazionale intenso trae vantaggio dal fatto che il buffer batch, contenente 8000 record, viene riempito in 1800 secondi e utilizza 32 thread paralleli con una dimensione massima del file di 250 MB.

Per ulteriori informazioni, consulta Impostazioni di ottimizzazione dell'elaborazione delle modifiche.

Nota

Le query DMS eseguite durante la replica continua su un cluster Redshift possono condividere la stessa coda di gestione del carico di lavoro con altre query applicative in esecuzione. Pertanto, prendi in considerazione la corretta configurazione delle proprietà di gestione del carico di lavoro per influenzare le prestazioni durante la replica continua su una destinazione Redshift. Ad esempio, se sono in esecuzione altre query ETL parallele, DMS viene eseguito più lentamente e i miglioramenti delle prestazioni sono vanificati.

Tipi di dati di destinazione per Amazon Redshift.

L'endpoint Amazon Redshift per AWS DMS supporta la maggior parte dei tipi di dati Amazon Redshift. La tabella seguente mostra i tipi di dati di destinazione di Amazon Redshift 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.

Tipi di dati AWS DMS

Tipi di dati Amazon Redshift

BOOLEAN

BOOL

BYTES

VARCHAR (lunghezza)

DATE

DATE

TIME

VARCHAR(20)

DATETIME

Se la scala è => 0 e =< 6, a seconda del tipo di colonna di destinazione Redshift, il valore è uno dei seguenti:

TIMESTAMP (s)

TIMESTAMPTZ (s): se il timestamp di origine contiene un offset di zona (come in SQL Server oppure Oracle), viene convertito in UTC al momento dell'inserimento/aggiornamento. Se non contiene un offset, l'ora viene già considerata in UTC.

Se il dimensionamento è => 7 e =< 9:

VARCHAR (37)

INT1

INT2

INT2

INT2

INT4

INT4

INT8

INT8

NUMERIC

Se il dimensionamento è => 0 e =< 37:

NUMERIC (p,s)

Se il dimensionamento è => 38 e =< 127:

VARCHAR (lunghezza)

REAL4

FLOAT4

REAL8

FLOAT8

STRING

Se la lunghezza è compresa tra 1 e 65.535, utilizza VARCHAR (lunghezza in byte)

Se la lunghezza è compresa tra 65.536 e 2.147.483.647, utilizza VARCHAR (65535)

UINT1

INT2

UINT2

INT2

UINT4

INT4

UINT8

NUMERIC (20,0)

WSTRING

Se la lunghezza è compresa tra 1 e 65.535, utilizza NVARCHAR (lunghezza in byte)

Se la lunghezza è compresa tra 65.536 e 2.147.483.647, utilizza NVARCHAR (65535)

BLOB

VARCHAR (dimensioni massime di LOB *2)

Le dimensioni massime di LOB non possono superare 31 KB. Amazon Redshift non supporta valori VARCHAR di dimensioni superiori a 64 KB.

NCLOB

NVARCHAR (dimensioni massime di LOB)

Le dimensioni massime di LOB non possono superare 63 KB. Amazon Redshift non supporta valori VARCHAR di dimensioni superiori a 64 KB.

CLOB

VARCHAR (dimensioni massime di LOB)

Le dimensioni massime di LOB non possono superare 63 KB. Amazon Redshift non supporta valori VARCHAR di dimensioni superiori a 64 KB.

Utilizzo di AWS DMS con Amazon Redshift serverless come destinazione

AWS DMS supporta l'utilizzo di Amazon Redshift serverless come endpoint di destinazione. Per informazioni sull'uso di Amazon Redshift serverless, consulta Amazon Redshift serverless nella Guida alla gestione di Amazon Redshift.

I questo argomento viene descritto come utilizzare un endpoint Amazon Redshift serverless con AWS DMS.

Nota

Quando crei un endpoint Amazon Redshift serverless per il campo DatabaseName della configurazione dell'endpoint RedshiftSettings, usa il nome del data warehouse Amazon Redshift o il nome dell'endpoint del gruppo di lavoro. Per il campo ServerName, utilizza il valore dell'endpoint visualizzato nella pagina Gruppo di lavoro per il cluster serverless (ad esempio default-workgroup.093291321484.us-east-1.redshift-serverless.amazonaws.com). Per informazioni su come creare un endpoint, vedi Creazione di endpoint di origine e destinazione. Per informazioni sull'endpoint del gruppo di lavoro, consulta Connessione ad Amazon Redshift serverless.

Policy di attendibilità con Amazon Redshift serverless come destinazione

Quando utilizzi Amazon Redshift serverless come endpoint di destinazione, devi aggiungere la seguente sezione evidenziata alla policy di attendibilità. Questa policy di attendibilità è associata al ruolo dms-access-for-endpoint.

{ "PolicyVersion": { "CreateDate": "2016-05-23T16:29:57Z", "VersionId": "v3", "Document": { "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeInternetGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DeleteNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": "arn:aws:service:region:account:resourcetype/id", "Effect": "Allow" }, { "Sid": "", "Effect": "Allow", "Principal": { "Service": "redshift-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "IsDefaultVersion": true } }

Per ulteriori informazioni sull'uso di una policy di attendibilità con AWS DMS, consulta Creazione dei ruoli IAM da utilizzare con l' AWS DMS API AWS CLI and.

Limitazioni all'utilizzo di Amazon Redshift serverless come destinazione

L'utilizzo di Redshift serverless come destinazione prevede le seguenti limitazioni: