Creare un’integrazione di eventi S3 per copiare automaticamente i file dai bucket Amazon S3 - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuovi Python a UDFs partire dal 1° novembre 2025. Se vuoi usare Python UDFs, crea la UDFs data precedente a quella data. Python esistente UDFs continuerà a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog.

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à.

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 politica di esempio consente le autorizzazioni per il bucket di risorse ospitato amzn-s3-demo-bucket in. us-east-1 Il bucket Amazon S3 e l’integrazione sono nella stessa Regione AWS.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "Auto-Copy-Policy-01", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": [ "s3:GetBucketNotification", "s3:PutBucketNotification", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket:*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:redshift:us-east-1:111122223333:integration:*" }, "StringEquals": { "aws:SourceAccount": "111122223333" } } } ] }
  • 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:GetObject per una risorsa bucket come amzn-s3-demo-bucket sia s3:ListBucket per una risorsa bucket e il relativo contenuto, ad esempio amzn-s3-demo-bucket/*.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AutoCopyReadId", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::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.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

    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 autonomamente una politica delle risorse, è possibile utilizzare il put-resource-policyAWS CLIcomando. Ad esempio, per associare una politica delle risorse al tuo cluster con provisioning di Amazon Redshift per l'integrazione di un evento S3 con un bucket Amazon S3, esegui un comando simile al seguente. AWS CLI L'esempio seguente mostra una policy per uno spazio dei nomi del cluster assegnato nell'account utente for. us-east-1 Regione AWS 123456789012 Il bucket è denominato. amzn-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.json contiene:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "redshift:AuthorizeInboundIntegration", "Resource": "arn:aws:redshift:us-east-1:123456789012:namespace:cc4ffe56-ad2c-4fd1-a5a2-f29124a56433", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket", "aws:SourceAccount": 111122223333 } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/myRedshiftRole" }, "Action": "redshift:CreateInboundIntegration", "Resource": "arn:aws:redshift:us-east-1:123456789012:namespace:cc4ffe56-ad2c-4fd1-a5a2-f29124a56433", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket", "aws:SourceAccount": 111122223333 } } } ] }

    Per associare una policy di risorse al tuo spazio dei nomi Redshift Serverless per l'integrazione di un evento S3 con un bucket Amazon S3, esegui un comando simile al seguente. AWS CLI L'esempio seguente mostra una policy per uno spazio dei nomi serverless nell'account utente for. us-east-1 Regione AWS 123456789012 Il bucket è denominato. amzn-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.json contiene:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "redshift:AuthorizeInboundIntegration", "Resource": "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/namespace-1", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket", "aws:SourceAccount": 111122223333 } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/myUser" }, "Action": "redshift:CreateInboundIntegration", "Resource": "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/namespace-1", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket", "aws:SourceAccount": 111122223333 } } } ] }

Creare un’integrazione di eventi Amazon S3

Per configurare il processo di copia, devi dapprima definire un’integrazione di eventi S3.

Amazon Redshift console
Come creare un’integrazione di eventi Amazon S3 sulla console Amazon Redshift
  1. Accedi a Console di gestione AWS e apri la console Amazon Redshift all'indirizzo. https://console.aws.amazon.com/redshiftv2/

  2. Nel riquadro di navigazione sinistro scegli Integrazione di eventi S3.

  3. Scegli Crea integrazione di eventi Amazon S3 per aprire la procedura guidata per creare un’integrazione di eventi S3 da utilizzare con la copia automatica. Il bucket Amazon S3 di origine e il data warehouse Amazon Redshift di destinazione devono trovarsi nella stessa Regione AWS. Specifica le informazioni seguenti mentre segui la procedure per creare un’integrazione:

    • Nome dell'integrazione: è un identificatore univoco per tutte le integrazioni di cui disponi attualmenteAccount AWS. Regione AWS

    • Descrizione: è un testo che descrive l’integrazione di eventi Amazon S3 per farvi riferimento in un momento successivo.

    • Bucket S3 di origine: è il bucket Amazon S3 Account AWS attualmente in uso Regione AWS e rappresenta la fonte di importazione dei dati in Amazon Redshift.

    • Data warehouse Amazon Redshift: è il cluster con provisioning Amazon Redshift o il gruppo di lavoro Redshift serverless di destinazione che riceve i dati dall’integrazione.

      Se il warehouse Amazon Redshift di destinazione si trova nello stesso account, puoi selezionare la destinazione. Se la destinazione si trova in un account diverso, specifichi l’ARN del data warehouse Amazon Redshift. La destinazione deve avere una policy delle risorse con i principali e l’origine di integrazione autorizzati. Se non disponi delle policy delle risorse corrette sulla destinazione e la destinazione si trova nello stesso account, puoi selezionare l’opzione Correggi per me per applicare automaticamente le policy delle risorse durante il processo di creazione dell’integrazione. Se il tuo obiettivo è in un altroAccount AWS, devi applicare manualmente la politica delle risorse sul magazzino Amazon Redshift.

  4. Inserisci fino a 50 Chiavi di tag e con un Valore facoltativo per fornire metadati aggiuntivi sull’integrazione.

  5. Viene visualizzata una pagina di revisione in cui puoi scegliere Crea integrazione di eventi S3.

AWS CLI

Per creare un'integrazione di eventi Amazon S3 utilizzando ilAWS CLI, usa il create-integration comando con le seguenti opzioni:

  • integration-name: specifica un nome per l’integrazione.

  • source-arn: specificare l’ARN del bucket di origine Amazon S3.

  • target-arn: specifica l’ARN del namespace della destinazione del cluster con provisioning Amazon Redshift o del gruppo di lavoro Redshift serverless.

L’esempio seguente crea un’integrazione fornendo il nome dell’integrazione, l’ARN di origine e l’ARN di destinazione. L’integrazione non è crittografata.

aws redshift create-integration \ --integration-name s3-integration \ --source-arn arn:aws:s3:us-east-1::s3-example-bucket \ --target-arn arn:aws:redshift:us-east-1:123456789012:namespace:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222 { "IntegrationArn": "arn:aws:redshift:us-east-1:123456789012:integration:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "IntegrationName": "s3-integration", "SourceArn": "arn:aws:s3:::s3-example-bucket", "SourceType": "s3-event-notifications", "TargetArn": "arn:aws:redshift:us-east-1:123456789012:namespace:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Status": "creating", "Errors": [], "CreateTime": "2024-10-09T19:08:52.758000+00:00", "Tags": [] }

Puoi anche utilizzare i seguenti AWS CLI comandi per gestire l'integrazione degli eventi S3.

  • delete-integration: specifica un ARN di integrazione per eliminare un’integrazione di eventi S3.

  • modify-integration: specifica un ARN di integrazione per modificare il nome o la descrizione (o entrambi) di un’integrazione di eventi S3.

  • describe-integrations: specifica un ARN di integrazione per visualizzare le proprietà di un’integrazione di eventi S3.

Consulta la Guida alla CLI di Amazon Redshift per ulteriori informazioni su questi comandi.

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:

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 COPY JOB, esegui il seguente comando SQL, 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_CREATED definito nel bucket Amazon S3 di origine. Tuttavia, dopo aver creato un'integrazione di eventi S3, puoi aggiornare la notifica degli eventi del bucket Amazon S3 con prefix/suffix un ambito più ristretto. In questo modo, puoi anche S3_OBJECT_CREATED configurarne un altro prefix/suffix con altri obiettivi ed evitare conflitti con l'integrazione degli eventi S3. Se riscontri problemi dovuti al fatto che la copia automatica non è stata eseguita come previsto, prepara il AWS CloudTrail registro dell's3:PutBucketNotificationConfigurationazione sul tuo bucket S3 per l'intervallo di tempo in questione al momento del contatto. Supporto AWS

Regioni supportate

Di seguito sono elencate le Regioni disponibili per la copia automatica.

Region Copia automatica
Africa (Città del Capo) Disponibilità
Asia Pacifico (Hong Kong) Disponibilità
Asia Pacifico (Taipei) Disponibilità
Asia Pacifico (Tokyo) Disponibilità
Asia Pacifico (Seoul) Disponibilità
Asia Pacifico (Osaka) 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à
Europe (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à
AWSGovCloud (Stati Uniti orientali) Disponibilità
AWSGovCloud (Stati Uniti occidentali) Disponibilità