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à.
Scarica i dati da un cluster Amazon Redshift tra più account su Amazon S3
Creato da Andrew Kamel () AWS
Archivio di codice: -s3-python aws-unload-redshift-to | Ambiente: produzione | Tecnologie: database; analisi; serverless |
Carico di lavoro: open source | AWSservizi: AWS Lambda; Amazon Redshift; Amazon S3; Secrets Manager AWS |
Riepilogo
Quando si testano le applicazioni, è utile disporre dei dati di produzione nell'ambiente di test. L'utilizzo dei dati di produzione può darvi una valutazione più accurata dell'applicazione che state sviluppando.
Questo modello estrae i dati da un cluster Amazon Redshift in un ambiente di produzione in un bucket Amazon Simple Storage Service (Amazon S3) in un ambiente di sviluppo su Amazon Web Services ().AWS
Il modello illustra la configurazione di entrambi PROD gli account, DEV tra cui:
Risorse obbligatorie
AWS Identity and Access Management (IAM) ruoli
Modifiche di rete a sottoreti, gruppi di sicurezza e cloud privato virtuale (VPC) per supportare la connessione Amazon Redshift
Una AWS Lambda funzione di esempio con un runtime Python per testare l'architettura
Per concedere l'accesso al cluster Amazon Redshift, il pattern utilizza il pattern AWS Secrets Manager per memorizzare le credenziali pertinenti. Il vantaggio è avere tutte le informazioni necessarie per connettersi direttamente al cluster Amazon Redshift senza dover sapere dove si trova il cluster Amazon Redshift. Inoltre, puoi monitorare l'uso del segreto.
Il segreto salvato in Secrets Manager include l'host del cluster Amazon Redshift, il nome del database, la porta e le credenziali pertinenti.
Per informazioni sulle considerazioni sulla sicurezza quando si utilizza questo modello, consulta la sezione Best practice.
Prerequisiti e limitazioni
Prerequisiti
Un cluster Amazon Redshift in esecuzione nell'account PROD
Un bucket S3 creato nell'account DEV
VPCpeering tra gli PROD account DEV e, con le tabelle di routing adattate di conseguenza
DNSnomi host e DNS risoluzione abilitati per entrambi i peer VPCs
Limitazioni
A seconda della quantità di dati da interrogare, la funzione Lambda potrebbe scadere.
Se l'esecuzione richiede più tempo del timeout Lambda massimo (15 minuti), utilizza un approccio asincrono per il codice Lambda. L'esempio di codice per questo pattern utilizza la libreria psycopg2
per Python, che attualmente non supporta l'elaborazione asincrona. Alcuni non sono disponibili in tutti. Servizi AWS Regioni AWS Per la disponibilità per regione, vedi Servizi AWS per regione
. Per endpoint specifici, consulta la pagina Endpoint e quote del servizio e scegli il link relativo al servizio.
Architettura
Il diagramma seguente mostra l'architettura, la larghezza e gli account di destinazione. DEV PROD
Il diagramma mostra il flusso di lavoro seguente:
La funzione Lambda nell'DEVaccount assume il IAM ruolo richiesto per accedere alle credenziali di Amazon Redshift in Secrets Manager nell'account. PROD
La funzione Lambda recupera quindi il segreto del cluster Amazon Redshift.
La funzione Lambda nell'DEVaccount utilizza le informazioni per connettersi al cluster Amazon Redshift PROD nell'account tramite peering. VPCs
La funzione Lambda invia quindi un comando unload per interrogare il cluster Amazon Redshift nell'account. PROD
Il cluster Amazon Redshift nell'PRODaccount assume il IAM ruolo pertinente per accedere al bucket S3 nell'account. DEV
Il cluster Amazon Redshift scarica i dati richiesti nel bucket S3 dell'account. DEV
Interrogazione di dati da Amazon Redshift
Il diagramma seguente mostra i ruoli utilizzati per recuperare le credenziali di Amazon Redshift e connettersi al cluster Amazon Redshift. Il flusso di lavoro viene avviato dalla funzione Lambda.
Il diagramma mostra il flusso di lavoro seguente:
I dati
CrossAccount-SM-Read-Role
presenti nell'DEVaccount presuppongono quelliSM-Read-Role
presenti nell'account. PRODIl
SM-Read-Role
ruolo utilizza la policy allegata per recuperare il segreto da Secrets Manager.Le credenziali vengono utilizzate per accedere al cluster Amazon Redshift.
Caricamento di dati su Amazon S3
Il diagramma seguente mostra il processo di lettura-scrittura tra account per l'estrazione dei dati e il loro caricamento su Amazon S3. Il flusso di lavoro viene avviato dalla funzione Lambda. Il pattern concatena IAM i ruoli in Amazon Redshift. Il comando unload proveniente dal cluster Amazon Redshift presuppone, e CrossAccount-S3-Write-Role
quindi assume. S3-Write-Role
Questo concatenamento di ruoli consente ad Amazon Redshift di accedere ad Amazon S3.
Il flusso di lavoro include i seguenti passaggi:
L'DEVaccesso
CrossAccount-SM-Read-Role
all'account presuppone l'immissioneSM-Read-Role
nell'PRODaccount.SM-Read-Role
recupera le credenziali di Amazon Redshift da Secrets Manager.La funzione Lambda si connette al cluster Amazon Redshift e invia una query.
Il cluster Amazon Redshift presuppone il.
CrossAccount-S3-Write-Role
CrossAccount-S3-Write-Role
Si presuppone che sia presenteS3-Write-Role
nell'account. DEVI risultati della query vengono scaricati nel bucket S3 dell'account. DEV
Strumenti
Servizi AWS
AWS Key Management Service (AWS KMS) ti aiuta a creare e controllare chiavi crittografiche per proteggere i tuoi dati.
AWS Lambda è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
Amazon Redshift è un servizio di data warehouse gestito su scala petabyte nel cloud. AWS
AWS Secrets Managerconsente di sostituire le credenziali codificate nel codice, comprese le password, con una chiamata a API Secrets Manager per recuperare il segreto a livello di codice.
Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
Archivio di codici
Il codice per questo pattern è disponibile nel repository GitHub unload-redshift-to-s3-python
Best practice
Dichiarazione di non responsabilità in materia di sicurezza
Prima di implementare questa soluzione, prendete in considerazione i seguenti importanti consigli di sicurezza:
Ricorda che collegare gli account di sviluppo e produzione può aumentare l'ambito e ridurre il livello di sicurezza complessivo. Consigliamo di implementare questa soluzione solo temporaneamente, estraendo la parte di dati richiesta e quindi distruggendo immediatamente le risorse distribuite. Per distruggere le risorse, è necessario eliminare la funzione Lambda, rimuovere tutti IAM i ruoli e le politiche creati per questa soluzione e revocare qualsiasi accesso alla rete concesso tra gli account.
Consultate i vostri team di sicurezza e conformità prima di copiare qualsiasi dato dagli ambienti di produzione a quelli di sviluppo. Le informazioni di identificazione personale (PII), le informazioni sanitarie protette (PHI) e altri dati riservati o regolamentati in genere non devono essere copiati in questo modo. Copia solo le informazioni non riservate disponibili al pubblico (ad esempio, dati di stock pubblici provenienti dall'interfaccia di un negozio). Prendi in considerazione la tokenizzazione o l'anonimizzazione dei dati o la generazione di dati di test sintetici, invece di utilizzare i dati di produzione quando possibile. Uno dei principi di AWS sicurezza è tenere le persone lontane dai dati. In altre parole, gli sviluppatori non devono eseguire operazioni nell'account di produzione.
Limita l'accesso alla funzione Lambda nell'account di sviluppo perché può leggere i dati dal cluster Amazon Redshift nell'ambiente di produzione.
Per evitare di interrompere l'ambiente di produzione, implementa i seguenti consigli:
Utilizzate un account di sviluppo separato e dedicato per le attività di test e sviluppo.
Implementa rigorosi controlli di accesso alla rete e limita il traffico tra gli account solo a quanto necessario.
Monitora e verifica l'accesso all'ambiente di produzione e alle fonti di dati.
Implementa controlli di accesso con privilegi minimi per tutte le risorse e i servizi coinvolti.
Rivedi e modifica regolarmente le credenziali, come AWS Secrets Manager quelle segrete e le chiavi di accesso ai ruoli. IAM
Fate riferimento alla seguente documentazione sulla sicurezza per i servizi utilizzati in questo articolo:
La sicurezza è una priorità assoluta quando si accede ai dati e alle risorse di produzione. Segui sempre le migliori pratiche, implementa controlli di accesso con privilegi minimi e rivedi e aggiorna regolarmente le tue misure di sicurezza.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un segreto per il cluster Amazon Redshift. | Per creare il segreto per il cluster Amazon Redshift, procedi come segue:
| DevOps ingegnere |
Crea un ruolo per accedere a Secrets Manager. | Per creare il ruolo, procedi come segue:
| DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un ruolo per accedere al bucket S3. | Per creare il ruolo per l'accesso al bucket S3, procedi come segue:
| DevOps ingegnere |
Crea il ruolo Amazon Redshift. | Per creare il ruolo Amazon Redshift, procedi come segue:
| DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Distribuire la funzione Lambda. | Per distribuire una funzione Lambda nel VPC peered, procedi come segue:
| DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Importa le risorse richieste. | Per importare le risorse richieste, esegui i seguenti comandi:
| Sviluppatore di app |
Esegui la funzione di gestione Lambda. | La funzione Lambda utilizza AWS Security Token Service (AWS STS) per l'accesso tra account e la gestione temporanea delle credenziali. La funzione utilizza l' AssumeRole APIoperazione per assumere temporaneamente le autorizzazioni del ruolo. Per eseguire la funzione Lambda, usa il seguente codice di esempio:
| Sviluppatore di app |
Scoprite il segreto. | Per ottenere il segreto di Amazon Redshift, usa il seguente codice di esempio:
| Sviluppatore di app |
Esegui il comando unload. | Per scaricare i dati nel bucket S3, usa il seguente codice di esempio.
| Sviluppatore di app |
Attività | Descrizione | Competenze richieste |
---|---|---|
Elimina la funzione Lambda. | Per evitare di incorrere in costi non pianificati, rimuovi le risorse e la connessione tra gli DEV account e. PROD Per rimuovere la funzione Lambda, procedi come segue:
| DevOps ingegnere |
Rimuovi i IAM ruoli e le politiche. | Rimuovi i IAM ruoli e le politiche dagli PROD account DEV e. Nell'DEVaccount, procedi come segue:
Nell'PRODaccount, procedi come segue:
| DevOps ingegnere |
Eliminare il segreto in Secrets Manager. | Per eliminare il segreto, procedi come segue:
| DevOps ingegnere |
Rimuovi le regole VPC del peering e dei gruppi di sicurezza. | Per rimuovere le regole del VPC peering e dei gruppi di sicurezza, procedi come segue:
| DevOps ingegnere |
Rimuovi i dati dal bucket S3. | Per rimuovere i dati da Amazon S3, procedi come segue:
| DevOps ingegnere |
Pulisci AWS KMS le chiavi. | Se hai creato delle AWS KMS chiavi personalizzate per la crittografia, procedi come segue:
| DevOps ingegnere |
Controlla ed elimina i CloudWatch log di Amazon. | Per eliminare i CloudWatch log, procedi come segue:
| DevOps ingegnere |
Risorse correlate
Informazioni aggiuntive
Dopo aver scaricato i dati da Amazon Redshift ad Amazon S3, puoi analizzarli utilizzando Amazon Athena.
Amazon Athena è un servizio di interrogazione per Big Data utile quando è necessario accedere a grandi volumi di dati. È possibile utilizzare Athena senza dover effettuare il provisioning di server o database. Athena supporta interrogazioni complesse ed è possibile eseguirla su oggetti diversi.
Come per la maggior parte Servizi AWS, il vantaggio principale dell'utilizzo di Athena è che offre una grande flessibilità nel modo in cui vengono eseguite le query senza complessità aggiuntiva. Quando usi Athena, puoi eseguire query su diversi tipi di dati, ad esempio CSV eJSON, in Amazon S3 senza modificare il tipo di dati. Puoi interrogare i dati da varie fonti, anche esterne. AWS Athena riduce la complessità perché non è necessario gestire i server. Athena legge i dati direttamente da Amazon S3 senza caricarli o modificarli prima di eseguire la query.