Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog
Creare un’integrazione di eventi S3 per copiare automaticamente i file dai bucket Amazon S3
Nota
La versione di anteprima per la copia automatica è terminata. Di conseguenza i cluster di anteprima vengono rimossi automaticamente 30 giorni dopo il termine del periodo di anteprima. Se intendi continuare a utilizzare la copia automatica, consigliamo di ricreare i processi di copia automatica esistenti in un altro cluster Amazon Redshift. Non è supportato l’aggiornamento di un cluster di anteprima alla versione più recente di Amazon Redshift.
Puoi utilizzare un processo di copia automatica per caricare i dati nelle tabelle Amazon Redshift dai file archiviati in Amazon S3. Amazon Redshift rileva quando vengono aggiunti nuovi file Amazon S3 al percorso specificato nel comando COPY ed esegue automaticamente un comando COPY senza che sia necessario creare una pipeline di importazione dei dati esterna. Amazon Redshift consente di tenere traccia in modo semplice dei file caricati. Amazon Redshift stabilisce il numero di file raggruppati per comando COPY. È possibile visualizzare i comandi COPY risultanti nelle viste di sistema.
La prima fase per creare un processo COPY JOB automatico consiste nel creare un’integrazione di eventi S3. Quando viene visualizzato un nuovo file nel bucket di origine Amazon S3, Amazon Redshift gestisce il caricamento dei file nel database utilizzando il comando COPY.
Prerequisiti per la creazione di un’integrazione di eventi S3
Per configurare l’integrazione di eventi S3, verifica che siano soddisfatti i prerequisiti seguenti.
Il bucket Amazon S3 deve avere una policy di bucket che concede diverse autorizzazioni Amazon S3. Ad esempio, la seguente policy di esempio concede le autorizzazioni per il bucket di risorse
amzn-s3-demo-bucketospitato inus-east-1. Il bucket Amazon S3 e l’integrazione sono nella stessa Regione AWS.Il cluster con provisioning Amazon Redshift o il namespace Redshift serverless di destinazione deve disporre dell’autorizzazione per accedere al bucket. Verifica che un ruolo IAM collegato al cluster o al namespace serverless disponga di una policy IAM che concede le autorizzazioni appropriate. La policy deve consentire sia
s3:GetObjectper una risorsa bucket comesiaamzn-s3-demo-buckets3:ListBucketper una risorsa bucket e il relativo contenuto, ad esempio.amzn-s3-demo-bucket/*Per aggiungere la policy a un ruolo IAM che ha una relazione di attendibilità per il ruolo, segui la procedura descritta.
Se il data warehouse di destinazione è un cluster con provisioning, puoi associare un ruolo IAM al cluster con provisioning utilizzando la scheda Autorizzazioni del cluster nei dettagli del cluster sulla console Amazon Redshift. Per informazioni su come collegare un ruolo al cluster con provisioning, consulta Associazione di ruoli IAM ai cluster nella Guida alla gestione di Amazon Redshift.
Se il data warehouse di destinazione è Redshift serverless, puoi collegare un ruolo IAM al namespace serverless utilizzando la scheda Sicurezza e crittografia nei dettagli del namespace sulla console Redshift serverless. Per informazioni su come collegare un ruolo al namespace serverless, consulta Concessione delle autorizzazioni ad Amazon Redshift serverless nella Guida alla gestione di Amazon Redshift.
Il data warehouse Amazon Redshift deve inoltre disporre di una policy delle risorse che consenta il bucket Amazon S3. Se utilizzi la console Amazon Redshift, quando crei l’integrazione di eventi S3, Amazon Redshift fornisce l’opzione Correggi per me per aggiungere questa policy al data warehouse Amazon Redshift. Per aggiornare una policy delle risorse, puoi utilizzare il comando AWS CLI put-resource-policy. Ad esempio, per collegare una policy delle risorse al cluster con provisioning Amazon Redshift per l’integrazione di un evento S3 con un bucket Amazon S3, esegui un comando AWS CLI simile al seguente. L’esempio seguente mostra una policy per un namespace del cluster con provisioning nella Regione AWS
us-east-1per l’account utente123456789012. Il bucket è denominatoamzn-s3-demo-bucket.aws redshift put-resource-policy \ --policy file://rs-rp.json \ --resource-arn "arn:aws:redshift:us-east-1:123456789012:namespace/cc4ffe56-ad2c-4fd1-a5a2-f29124a56433"Dove
rs-rp.jsoncontiene:Per collegare una policy delle risorse al namespace Redshift serverless per l’integrazione di un evento S3 con un bucket Amazon S3, esegui un comando AWS CLI simile al seguente. L’esempio seguente mostra una policy per un namespace serverless nella Regione AWS
us-east-1per l’account utente123456789012. Il bucket è denominatoamzn-s3-demo-bucket.aws redshift put-resource-policy \ --policy file://rs-rp.json \ --resource-arn "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/namespace-1"Dove
rs-rp.jsoncontiene:
Creare un’integrazione di eventi Amazon S3
Per configurare il processo di copia, devi dapprima definire un’integrazione di eventi S3.
Amazon Redshift crea quindi un’integrazione di eventi S3 con l’origine e la destinazione associate, lo stato e le informazioni sullo stato di un processo di copia automatica associato. Puoi visualizzare le informazioni su un’integrazione di eventi S3 sulla console Amazon Redshift scegliendo Integrazioni di eventi S3 e selezionando l’integrazione per visualizzarne i dettagli. Le integrazioni sono separate da quelle create Nel mio account e Da altri account. Nell’elenco Nel mio account sono visualizzate le integrazioni in cui l’origine e la destinazione si trovano nello stesso account. Nell’elenco Da altri account sono visualizzate le integrazioni in cui l’origine è di proprietà di un altro account.
Se elimini un’integrazione di eventi S3, lo stato del processo COPY JOB corrispondente cambia da 1 (attivo) a 0 (inattivo/in sospeso). Tuttavia il processo COPY JOB corrispondente non viene rimosso automaticamente. Se in seguito tenti di creare un processo COPY JOB con lo stesso nome, potrebbe verificarsi un conflitto.
Creare e monitorare un processo COPY JOB
Dopo avere creato l’integrazione, nella pagina Dettagli sull’integrazione di eventi S3 relativa all’integrazione che hai creato, scegli Crea un processo di copia automatica per accedere ad Amazon Redshift Query Editor V2 dove puoi creare il processo di copia automatica per l’integrazione. Amazon Redshift abbina il bucket della clausola FROM dell’istruzione COPY JOB CREATE al bucket utilizzato nell’integrazione di eventi S3. Per informazioni su come utilizzare Amazon Redshift Query Editor V2, consulta Esecuzione di query su un database con Amazon Redshift Query Editor V2 nella Guida alla gestione di Amazon Redshift. Ad esempio, esegui il comando COPY seguente in Query Editor V2 per creare un processo COPY JOB automatico che abbina il bucket Amazon S3 s3://amzn-s3-demo-bucket/staging-folder a un’integrazione di eventi Amazon S3.
COPY public.target_table FROM 's3://amzn-s3-demo-bucket/staging-folder' IAM_ROLE 'arn:aws:iam::123456789012:role/MyLoadRoleName' JOB CREATE my_copy_job_name AUTO ON;
È necessario definire un processo COPY JOB una sola volta, in quanto gli stessi parametri verranno utilizzati per le esecuzioni future.
Per definire e gestire un processo COPY JOB, devi disporre dell’autorizzazione. Per informazioni sulla concessione e sulla revoca dell’autorizzazione per un processo COPY JOB, consulta GRANT e REVOKE. Per ulteriori informazioni sulla concessione e sulla revoca delle autorizzazioni con ambito per un processo COPY JOB, consulta Assegnazione delle autorizzazioni con ambito e Revoca delle autorizzazioni con ambito.
È possibile gestire le operazioni di caricamento utilizzando le opzioni CREATE, LIST, SHOW, DROP, ALTER e RUN relative ai processi. Per ulteriori informazioni, consulta COPY JOB.
È possibile eseguire query sulle viste di sistema per vedere lo stato e l'avanzamento del processo COPY JOB. Le viste disponibili sono le seguenti:
SYS_COPY_JOB – include una riga per ogni processo COPY JOB definito.
SYS_COPY_JOB_DETAIL: include i dettagli sui file in sospeso, con errore e importati per ciascun processo COPY JOB.
SYS_COPY_JOB_INFO: contiene i messaggi registrati relativi a un processo COPY JOB.
SYS_LOAD_HISTORY – include i dettagli sui comandi COPY.
SYS_LOAD_ERROR_DETAIL – include i dettagli sugli errori relativi al comando COPY.
SVV_COPY_JOB_INTEGRATIONS: include i dettagli sulle integrazioni di eventi S3.
STL_LOAD_ERRORS – include gli errori relativi ai comandi COPY.
STL_LOAD_COMMITS – include le informazioni utilizzate per risolvere i problemi di caricamento dei dati relativi al comando COPY.
Per ulteriori informazioni sulla correzione degli errori relativi all’integrazione di eventi S3, consulta Risoluzione dei problemi di integrazione degli eventi S3 e degli errori del processo COPY JOB.
Per ottenere l’elenco dei file caricati da un processo COPY JOB, esegui il comando SQL seguente, ma prima sostituisci <job_id>:
SELECT job_id, job_name, data_source, copy_query, filename, status, curtime FROM sys_copy_job copyjob JOIN stl_load_commits loadcommit ON copyjob.job_id = loadcommit.copy_job_id WHERE job_id =<job_id>;
Considerazioni sulla creazione dell’integrazione di eventi S3 per la copia automatica
Considera quanto segue quando utilizzi la copia automatica.
Puoi creare un massimo di 200 processi COPY JOB per ogni cluster o gruppo di lavoro in un Account AWS.
Puoi creare un massimo di 50 integrazioni di eventi S3 per ogni destinazione Amazon Redshift.
Non puoi creare un’integrazione di eventi S3 con un bucket Amazon S3 di origine che ha un punto (.) nel nome del bucket.
Puoi creare solo un’integrazione di eventi S3 tra la stessa origine e la stessa destinazione. In altre parole può esserci una sola integrazione di eventi S3 tra un bucket Amazon S3 e un data warehouse Amazon Redshift alla volta.
Non puoi avere notifiche di eventi esistenti per il tipo di evento
S3_OBJECT_CREATEDdefinito nel bucket Amazon S3 di origine. Tuttavia, dopo avere creato un’integrazione di eventi S3, puoi aggiornare la notifica degli eventi del bucket Amazon S3 con un prefisso/suffisso con un ambito più ristretto. In questo modo puoi anche configurareS3_OBJECT_CREATEDper un altro prefisso/suffisso per altre destinazioni ed evitare un conflitto con l’integrazione di eventi S3. Se riscontri problemi causati dall’esecuzione imprevista dalla copia automatica, prepara il log AWS CloudTrail dell’aziones3:PutBucketNotificationConfigurationsul bucket S3 per l’intervallo di tempo in questione quando contatti Supporto AWS.
Regioni supportate
Di seguito sono elencate le Regioni disponibili per la copia automatica.
| Regione | Copia automatica |
|---|---|
| Africa (Città del Capo) | Disponibilità |
| Asia Pacifico (Hong Kong) | Disponibilità |
| Asia Pacifico (Taipei) | Disponibilità |
| Asia Pacifico (Tokyo) | Disponibilità |
| Asia Pacifico (Seul) | Disponibilità |
| Asia Pacifico (Osaka-Locale) | Disponibilità |
| Asia Pacifico (Mumbai) | Disponibilità |
| Asia Pacifico (Hyderabad) | Disponibilità |
| Asia Pacifico (Singapore) | Disponibilità |
| Asia Pacifico (Sydney) | Disponibilità |
| Asia Pacifico (Giacarta) | Disponibilità |
| Asia Pacifico (Melbourne) | Disponibilità |
| Asia Pacifico (Malesia) | Disponibilità |
| Asia Pacifico (Nuova Zelanda) | Non disponibile |
| Asia Pacifico (Thailandia) | Disponibilità |
| Canada (Centrale) | Disponibilità |
| Canada occidentale (Calgary) | Disponibilità |
| Cina (Pechino) | Disponibilità |
| Cina (Ningxia) | Disponibilità |
| Europa (Francoforte) | Disponibilità |
| Europa (Zurigo) | Disponibilità |
| Europa (Stoccolma) | Disponibilità |
| Europa (Milano) | Disponibilità |
| Europa (Spagna) | Disponibilità |
| Europa (Irlanda) | Disponibilità |
| Europa (Londra) | Disponibilità |
| Europa (Parigi) | Disponibilità |
| Israele (Tel Aviv) | Disponibilità |
| Medio Oriente (Emirati Arabi Uniti) | Disponibilità |
| Medio Oriente (Bahrein) | Disponibilità |
| Messico (centrale) | Disponibilità |
| Sud America (San Paolo) | Disponibilità |
| Stati Uniti orientali (Virginia settentrionale) | Disponibilità |
| Stati Uniti orientali (Ohio) | Disponibilità |
| Stati Uniti occidentali (California settentrionale) | Disponibilità |
| Stati Uniti occidentali (Oregon) | Disponibilità |
| AWS GovCloud (Stati Uniti-Est) | Disponibilità |
| AWS GovCloud (Stati Uniti occidentali) | Disponibilità |