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à.
AWSIntegrazione zero-ETL per sorgenti di database autogestite
AWSL'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.
-
Le risorse di sola lettura aggiuntive relative alle integrazioni vengono create automaticamente all'interno del servizio. 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 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
-
Endpoint AWS DMS di origine esistenti per i tuoi database autogestiti
-
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 \ --regionregion
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-idkey-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.
-
Crea un utente IAM:
aws iam create-user --user-namecli-user -
Crea chiavi di accesso per l'utente:
aws iam create-access-key --user-namecli-userSalva gli
AccessKeyIdeSecretAccessKeydall'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 perAWS 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-namecli-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_idACCESS_KEY_ID--profilecli-useraws configure set aws_secret_access_keySECRET_ACCESS_KEY--profilecli-useraws configure set regionregion--profilecli-useraws configure set output json --profilecli-user
Verifica la configurazione del profilo:
aws sts get-caller-identity --profilecli-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\ --regionregion
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-namemysql-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"}' \ --profilecli-user\ --regionregion
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.