AWS Integrazione zero-ETL per sorgenti di database autogestite - 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à.

AWS Integrazione zero-ETL per sorgenti di database autogestite

AWS L'integrazione Zero-ETL è una soluzione completamente gestita che rende disponibili i dati transazionali e operativi in Amazon Redshift, Amazon S3 e Amazon S3 Tables da più fonti di database operative e transazionali. Utilizzando Zero-ETL, puoi replicare i dati dai tuoi database di origine autogestiti come MySQL, PostgreSQL, SQL Server e Oracle su Amazon Redshift tramite endpoint di origine esistenti (). AWS Database Migration Service AWS DMS La sincronizzazione automatica evita il tradizionale processo di estrazione, trasformazione e caricamento (ETL). Consente inoltre analisi in tempo reale e carichi di lavoro di intelligenza artificiale. Per ulteriori informazioni, consulta le integrazioni Zero-ETL nella Amazon Redshift Management Guide.

L'integrazione zero-ETL offre i seguenti vantaggi:

  • Replica dei dati in tempo reale: sincronizzazione continua dei dati dai database Oracle ad Amazon Redshift con una latenza minima.

  • Eliminazione di pipeline ETL complesse: non è necessario creare e mantenere soluzioni di integrazione dei dati personalizzate.

  • Sovraccarico operativo ridotto: configurazione e gestione automatizzate tramite. AWS APIs

  • Architettura di integrazione dei dati semplificata: perfetta integrazione tra database autogestiti e servizi di analisi. AWS

  • Sicurezza avanzata: crittografia integrata e controlli di accesso IAM.

Come funziona l'integrazione Zero-ETL per le fonti di database autogestite

Puoi utilizzare gli AWS DMS endpoint esistenti creati in precedenza per database autogestiti o crearne di nuovi.

  • Usa la AWS Glue console o la CLI per creare l'integrazione zero-ETL con Amazon Redshift come destinazione nel catalogo. AWS Glue Puoi specificare schemi e filtri di tabella durante la creazione di integrazioni zero-ETL.

  • All'interno del servizio vengono create automaticamente risorse di sola lettura aggiuntive relative alle integrazioni. AWS DMS Queste risorse, incluso il motore Zero-ETL, vengono utilizzate per avviare processi a pieno carico e di modifica continua dei dati, per sincronizzare i dati con il database di destinazione Amazon Redshift.

  • Puoi controllare la crittografia dei dati quando crei l’origine di integrazione, quando crei l’integrazione Zero-ETL e quando crei il data warehouse Amazon Redshift.

  • L’integrazione monitora lo stato della pipeline dei dati ed esegue il ripristino in caso di problemi quando possibile.

  • Puoi creare integrazioni da origini dello stesso tipo in un unico data warehouse Amazon Redshift per ottenere approfondimenti olistici da più applicazioni.

Una volta replicati i dati, puoi utilizzare le funzionalità di analisi di Amazon Redshift. Ad esempio, il machine learning (ML) integrato, le viste materializzate, la condivisione dei dati e l'accesso diretto a più datastore e data lake. Per gli ingegneri dei dati, le integrazioni zero-ETL forniscono l'accesso a dati sensibili al fattore tempo che altrimenti potrebbero essere ritardati da errori intermittenti in pipeline di dati complesse. Puoi eseguire query analitiche e modelli di ML sui dati transazionali per ottenere informazioni tempestive per eventi e decisioni aziendali sensibili al fattore tempo.

Puoi creare abbonamenti di notifica di eventi Amazon Redshift per ricevere notifiche automatiche in caso di problemi per qualsiasi integrazione zero-ETL. Per visualizzare l'elenco delle notifiche di eventi relative all'integrazione, consulta Notifiche di eventi di integrazione zero-ETL con Amazon. EventBridge Il modo più semplice per creare un abbonamento è con la console Amazon Simple Notification Service. Per informazioni sulla creazione di un argomento Amazon SNS e sul relativo abbonamento, consulta Nozioni di base su Amazon SNS nella Guida per sviluppatori di Amazon Simple Notification Service.

Configurazione del database di origine prima di creare l'integrazione

Prima di configurare le integrazioni zero-ETL, è necessario configurare correttamente il database di origine in base ai requisiti del motore di database. Ogni motore presenta requisiti e limitazioni di configurazione specifici.

SQL Server

Nota

RDS SQL Server e Azure SQL Server non possono essere usati come fonti per integrazioni zero-ETL autogestite.

Oracle

  • Per i requisiti e le limitazioni di configurazione, vedere Utilizzo di un database Oracle come fonte per. AWS DMS

MySQL

PostgreSQL

  • Per i requisiti e le limitazioni di configurazione, vedi Utilizzo di un database PostgreSQL come sorgente. AWS DMS

  • Quando si utilizza un database PostgreSQL autogestito come origine, si applica la seguente limitazione:

    • Per le sorgenti PostgreSQL autogestite, è necessario CaptureDdls impostarlo false nelle impostazioni dell'endpoint PostgreSQL durante la creazione dell'endpoint di origine. Per impostare questo parametro, usa quanto segue durante la creazione dell'endpoint di origine:

      --postgre-sql-settings '{"CaptureDdls": false}'

      Se non è impostato su CaptureDdls false, l'attività potrebbe non riuscire ad avviarsi correttamente.

    • Quando CaptureDdls è impostato sufalse, le operazioni DDL (come CREATE TABLE, ALTER TABLE e DROP TABLE) eseguite sul database di origine durante la replica non verranno acquisite o replicate sulla destinazione.

Configurazione delle autorizzazioni e della crittografia IAM per l'integrazione zero-ETL

Per creare e gestire integrazioni zero-ETL, devi configurare le autorizzazioni IAM appropriate, () le chiavi di crittografia e le politiche relative alle risorse. AWS Key Management Service AWS KMS Questa sezione fornisce indicazioni sulla configurazione dei componenti di sicurezza richiesti.

Prerequisiti

Prima di creare un'integrazione zero-ETL, assicurati di disporre di quanto segue:

  • Un utente o un ruolo IAM con le autorizzazioni appropriate per creare e gestire le integrazioni

  • Configura gli endpoint AWS DMS di origine per i tuoi database autogestiti. Per ulteriori informazioni, consulta Configurazione del database di origine prima di creare l'integrazione.

  • Un cluster o uno spazio dei nomi serverless di Amazon Redshift sono stati forniti come destinazione

  • Configurazione di rete, incluse sottoreti VPC e gruppi di sicurezza

Creazione di una chiave KMS

Innanzitutto, crea una AWS KMS chiave gestita dal cliente per crittografare i dati nella tua integrazione zero-ETL. L'esempio seguente crea una chiave di crittografia simmetrica:

aws kms create-key \ --description "On-prem Zero-ETL Integration Encryption Key" \ --key-usage ENCRYPT_DECRYPT \ --key-spec SYMMETRIC_DEFAULT \ --region region

Prendi nota degli «KeyIdeArn» della risposta, poiché ti serviranno per configurare la policy chiave e creare l'integrazione.

Output di esempio:

{ "KeyMetadata": { "AWSAccountId": "account-id", "KeyId": "4e2c14f8-7abe-4aec-851a-379f6ed973a8", "Arn": "arn:aws:kms:region:account-id:key/4e2c14f8-7abe-4aec-851a-379f6ed973a8", "CreationDate": 1763155061.148, "Enabled": true, "Description": "Zero-ETL Integration Encryption Key", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false } }

Configurazione della politica delle chiavi KMS

Dopo aver creato la chiave KMS, configura la policy delle chiavi per consentire ad Amazon Redshift AWS Glue e ai servizi di utilizzare la chiave per le operazioni di crittografia e decrittografia. La policy chiave deve concedere le autorizzazioni necessarie ai responsabili del servizio e includere il contesto di crittografia che verrà utilizzato durante la creazione dell'integrazione.

L'esempio seguente mostra una politica chiave per le integrazioni zero-ETL:

{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allows the Redshift and glue service principal to add a grant to a KMS key", "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "glue.amazonaws.com" ] }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:context-key": "context-value" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey", "CreateGrant", "GenerateDataKeyWithoutPlaintext", "ReEncryptTo" ] } } } ] }

La kms:EncryptionContext condizione deve corrispondere al contesto di crittografia aggiuntivo specificato durante la creazione dell'integrazione. È possibile aggiornare la policy chiave utilizzando la AWS KMS console o il seguente comando CLI:

aws kms put-key-policy \ --key-id key-id \ --policy-name default \ --policy file://kms-key-policy.json

Creazione di un utente IAM e configurazione AWS della CLI

Crea un utente IAM che verrà utilizzato per gestire le integrazioni zero-ETL e configurare la CLI AWS con le credenziali appropriate.

  1. Crea un utente IAM:

    aws iam create-user --user-name cli-user
  2. Crea chiavi di accesso per l'utente:

    aws iam create-access-key --user-name cli-user

    Salva gli AccessKeyId e SecretAccessKey dall'output, poiché ti serviranno per configurare la AWS CLI.

Creazione e collegamento di una policy IAM

Crea una policy IAM che conceda le autorizzazioni per le operazioni di integrazione zero-ETL. La policy dovrebbe includere le autorizzazioni per AWS Glue, AWS DMS, Amazon Redshift AWS KMS e.

Salva la seguente politica in un file (ad esempio,/tmp/zetl-policy.json):

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ZetlGlueIntegrationAccess", "Effect": "Allow", "Action": [ "glue:CreateIntegration", "glue:ModifyIntegration", "glue:DeleteIntegration", "glue:DescribeIntegrations", "glue:DescribeInboundIntegrations" ], "Resource": "*" }, { "Sid": "DMSIntegrationAccess", "Effect": "Allow", "Action": [ "dms:CreateOutboundIntegration", "dms:ModifyOutboundIntegration", "dms:CreateEndpoint", "dms:DescribeEndpoints", "dms:ModifyEndpoint", "dms:DeleteEndpoint", "dms:TestConnection" ], "Resource": "*" }, { "Sid": "ZetlRedshiftFullAccess", "Effect": "Allow", "Action": [ "redshift:*", "redshift-serverless:*", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeInternetGateways", "sns:CreateTopic", "sns:Get*", "sns:List*", "cloudwatch:Describe*", "cloudwatch:Get*", "cloudwatch:List*", "cloudwatch:PutMetricAlarm", "cloudwatch:EnableAlarmActions", "cloudwatch:DisableAlarmActions", "tag:GetResources", "tag:UntagResources", "tag:GetTagValues", "tag:GetTagKeys", "tag:TagResources" ], "Resource": "*" }, { "Sid": "ZetlRedshiftDataAPI", "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement", "redshift-data:CancelStatement", "redshift-data:ListStatements", "redshift-data:GetStatementResult", "redshift-data:DescribeStatement", "redshift-data:ListDatabases", "redshift-data:ListSchemas", "redshift-data:ListTables", "redshift-data:DescribeTable" ], "Resource": "*" }, { "Sid": "ZetlKMSAccess", "Effect": "Allow", "Action": [ "kms:CreateKey", "kms:DescribeKey", "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:ListKeys", "kms:CreateAlias", "kms:ListAliases", "kms:CreateGrant" ], "Resource": "*" }, { "Sid": "ZetlSecretsManagerAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:CreateSecret", "secretsmanager:UpdateSecret", "secretsmanager:DeleteSecret", "secretsmanager:DescribeSecret", "secretsmanager:ListSecrets", "secretsmanager:GetResourcePolicy", "secretsmanager:PutResourcePolicy", "secretsmanager:ValidateResourcePolicy" ], "Resource": "*" } ] }

Crea la policy e collegala all'utente IAM:

aws iam create-policy \ --policy-name ZetlCustomPolicy \ --policy-document file:///tmp/zetl-policy.json aws iam attach-user-policy \ --policy-arn arn:aws:iam::account-id:policy/ZetlCustomPolicy \ --user-name cli-user

Configurazione del profilo AWS CLI

Configura un profilo AWS CLI con le credenziali utente create nei passaggi precedenti:

aws configure set aws_access_key_id ACCESS_KEY_ID --profile cli-user aws configure set aws_secret_access_key SECRET_ACCESS_KEY --profile cli-user aws configure set region region --profile cli-user aws configure set output json --profile cli-user

Verifica la configurazione del profilo:

aws sts get-caller-identity --profile cli-user

L'output dovrebbe mostrare l'ID dell'account, l'ID utente e l'ARN dell'utente, a conferma che il profilo è configurato correttamente.

Creazione di una politica delle risorse di Redshift

Crea una policy sulle risorse di Amazon Redshift per autorizzare l'endpoint di AWS DMS origine a creare integrazioni in entrata con il tuo spazio dei nomi Amazon Redshift. Questa policy è allegata allo spazio dei nomi Amazon Redshift e controlla quali fonti possono replicare i dati al suo interno.

L'esempio seguente mostra come creare una politica delle risorse per uno spazio dei nomi Amazon Redshift:

aws redshift put-resource-policy \ --policy '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": ["redshift.amazonaws.com"] }, "Action": ["redshift:AuthorizeInboundIntegration"], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:dms:region:account-id:endpoint:endpoint-id" } } }, { "Effect": "Allow", "Principal": { "AWS": "account-id" }, "Action": [ "redshift:CreateInboundIntegration", "redshift:ModifyInboundIntegration" ] } ] }' \ --resource-arn arn:aws:redshift:region:account-id:namespace:namespace-id \ --region region

Sostituire i seguenti segnaposto:

  • region— La AWS regione in cui si trovano le tue risorse

  • account-id— L'ID AWS del tuo account

  • endpoint-id— L'ID dell'endpoint AWS DMS di origine

  • namespace-id— L'ID del tuo spazio dei nomi Amazon Redshift

Esempio: creazione di un'integrazione zero-ETL con crittografia

Dopo aver impostato le autorizzazioni e le chiavi di crittografia necessarie, puoi creare un'integrazione zero-ETL utilizzando l'API. AWS Glue L'esempio seguente dimostra la creazione di un'integrazione da una fonte MySQL a un target Amazon Redshift con crittografia KMS:

aws glue create-integration \ --integration-name mysql-onprem-integration \ --source-arn arn:aws:dms:region:account-id:endpoint:source-endpoint-id \ --target-arn arn:aws:redshift:region:account-id:namespace:namespace-id \ --description "MySQL to Redshift integration" \ --integration-config '{"SourceProperties":{"SubnetIds":"subnet-id1,subnet-id2,subnet-id3","VpcSecurityGroupIds":"sg-id"}}' \ --data-filter "include: mysql.*" \ --kms-key-id arn:aws:kms:region:account-id:key/key-id \ --additional-encryption-context '{"context-key": "context-value"}' \ --profile cli-user \ --region region

Il comando include i seguenti parametri chiave:

  • --integration-name— Un nome univoco per l'integrazione

  • --source-arn— L'ARN dell'endpoint di origine AWS DMS

  • --target-arn— L'ARN del tuo spazio dei nomi Amazon Redshift

  • --integration-config— Configurazione di rete che include sottorete e gruppi di sicurezza IDs

  • --data-filter— Speciifica gli schemi e le tabelle da replicare

  • --kms-key-id— L'ARN della AWS KMS chiave per la crittografia

  • --additional-encryption-context— Coppie chiave-valore del contesto di crittografia che devono corrispondere alla politica della chiave KMS (ad esempio,) {"context-key": "context-value"}

  • --profile— Il profilo AWS CLI da utilizzare (il profilo cli-user creato in precedenza)

Una volta completata la creazione, il comando restituisce i dettagli dell'integrazione, inclusi l'ARN dell'integrazione, lo stato e i parametri di configurazione. Output di esempio:

{ "SourceArn": "arn:aws:dms:region:account-id:endpoint:endpoint-id", "TargetArn": "arn:aws:redshift:region:account-id:namespace:namespace-id", "IntegrationName": "mysql-onprem-integration", "IntegrationArn": "arn:aws:glue:region:account-id:integration:integration-id", "KmsKeyId": "arn:aws:kms:region:account-id:key/key-id", "AdditionalEncryptionContext": { "context-key": "context-value" }, "Status": "CREATED", "CreateTime": 1763234086.001, "DataFilter": "include: mysql.*", "IntegrationConfig": { "SourceProperties": { "SubnetIds": "subnet-id1,subnet-id2,subnet-id3", "VpcSecurityGroupIds": "sg-id" } } }

Best practice di sicurezza

Segui queste best practice di sicurezza quando configuri le integrazioni zero-ETL:

  • Usa l'accesso con privilegi minimi: concedi solo le autorizzazioni minime richieste per creare e gestire le integrazioni. Prendi in considerazione l'utilizzo di autorizzazioni a livello di risorsa, ove possibile.

  • Abilita la crittografia: utilizza sempre le AWS KMS chiavi gestite dal cliente per crittografare i dati di integrazione. Specificate il contesto di crittografia per una maggiore sicurezza.

  • Ruota le credenziali regolarmente: se utilizzi le chiavi di accesso utente IAM, ruotale regolarmente. Valuta invece la possibilità di utilizzare ruoli IAM con credenziali temporanee.

  • Monitora l'accesso: consente AWS CloudTrail di monitorare le chiamate API relative alla creazione e alla gestione dell'integrazione.

  • Limita l'accesso alla rete: configura i gruppi di sicurezza VPC per limitare l'accesso alla rete solo alle risorse necessarie.

  • Usa le politiche delle risorse: implementa le policy delle risorse di Amazon Redshift per controllare quali fonti possono creare integrazioni con il tuo data warehouse.

  • Tagga le risorse: applica i tag alle integrazioni e alle risorse correlate per una migliore organizzazione e monitoraggio dei costi.