Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. 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à.
Interroga le tabelle Amazon S3 da Amazon Redshift
Amazon Redshift si integra con i bucket di tabelle Amazon S3, consentendoti di accedere alle risorse delle tabelle S3 utilizzando Amazon Redshift. Che tu stia appena iniziando o gestendo migliaia di tabelle nel tuo ambiente Iceberg, i table bucket semplificano la gestione dei data lake su qualsiasi scala. Per ulteriori informazioni sui bucket, consultare Bucket di tabella.
Questo argomento descrive come iniziare a usare Amazon S3 Tables e Redshift e accedere agli oggetti S3 Tables utilizzando Amazon Redshift.
Prerequisiti
Prima di eseguire query su S3 Tables da Amazon Redshift, devi integrare S3 Tables con. AWS Glue Data Catalog Per istruzioni, consulta Integrazione delle tabelle Amazon S3 con. AWS Glue Data Catalog
Dopo l'integrazione con S3 Tables AWS Glue Data Catalog, i dirigenti IAM con le autorizzazioni S3 Tables e AWS Glue IAM richieste possono scoprire S3 Tables tramite. AWS Glue Data Catalog
Nota
Il metodo 3 (awsdatacatalog montato automaticamente) presenta prerequisiti aggiuntivi. Per informazioni dettagliate, vedi Metodo 3: awsdatacatalog montato automaticamente.
Interroga le tabelle S3 da Amazon Redshift
Per iniziare a eseguire query su S3 Tables, segui questi passaggi:
Fase 1: creare un ruolo IAM per Amazon Redshift
Fase 2: collegare un ruolo IAM al cluster Amazon Redshift
Fase 3: Interroga le tabelle S3 da Amazon Redshift
Fase 1: creare un ruolo IAM per Amazon Redshift
Il cluster necessita dell'autorizzazione per accedere al catalogo esterno di S3 Tables in. AWS Glue Per fornire tale autorizzazione, Amazon Redshift utilizza un ruolo IAM collegato al cluster. Crea un ruolo IAM con le seguenti autorizzazioni politiche.
Nota
Nella politica e negli esempi seguenti, sostituiscilo us-west-2 con la tua AWS regione e 111122223333 con l'ID AWS del tuo account.
Per creare una politica:
Aprire la console IAM all'indirizzo https://console.aws.amazon.com/iam/
. Nel riquadro di navigazione, scegli Policy.
Scegli Create Policy (Crea policy).
Scegliere la scheda JSON.
Incolla il seguente documento di policy JSON:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GlueDataCatalogPermissions", "Effect": "Allow", "Action": [ "glue:GetCatalog", "glue:GetDatabase", "glue:GetTable", "glue:GetTables", "glue:UpdateTable", "glue:DeleteTable" ], "Resource": [ "arn:aws:glue:us-west-2:111122223333:catalog", "arn:aws:glue:us-west-2:111122223333:catalog/s3tablescatalog", "arn:aws:glue:us-west-2:111122223333:catalog/s3tablescatalog/*", "arn:aws:glue:us-west-2:111122223333:database/s3tablescatalog/*/*", "arn:aws:glue:us-west-2:111122223333:table/s3tablescatalog/*/*/*", "arn:aws:glue:us-west-2:111122223333:database/*", "arn:aws:glue:us-west-2:111122223333:table/*/*" ] }, { "Sid": "S3TablesDataAccessPermissions", "Effect": "Allow", "Action": [ "s3tables:GetTableBucket", "s3tables:GetNamespace", "s3tables:GetTable", "s3tables:GetTableMetadataLocation", "s3tables:GetTableData", "s3tables:ListTableBuckets", "s3tables:CreateTable", "s3tables:PutTableData", "s3tables:UpdateTableMetadataLocation", "s3tables:ListNamespaces", "s3tables:ListTables", "s3tables:DeleteTable" ], "Resource": [ "arn:aws:s3tables:us-west-2:111122223333:bucket/*", "arn:aws:s3tables:us-west-2:111122223333:bucket/*/table/*" ] } ] }Scegliere Esamina policy.
Nella pagina di revisione della politica, inserisci
GlueCatalogS3Tables_PolicyNome. Facoltativamente, inserisci una descrizione. Esamina il riepilogo della politica, quindi scegli Crea politica.
Per creare un ruolo IAM per Amazon Redshift:
Aprire la console IAM
. Nel pannello di navigazione, selezionare Ruoli.
Selezionare Create role (Crea ruolo).
Scegli il AWS servizio come entità affidabile, quindi scegli Redshift come caso d'uso.
In Caso d'uso per altri AWS servizi, scegli Redshift - Personalizzabile, quindi scegli Avanti.
Nella pagina Aggiungi autorizzazioni, allega la
GlueCatalogS3Tables_Policypolicy che hai creato sopra. Scegli Next (Successivo).Per Role name (Nome ruolo), digitare un nome per il ruolo, ad esempio
RedshiftS3TablesRole.Controlla le informazioni, quindi scegli Crea ruolo.
Nel riquadro di navigazione, seleziona Ruoli. Scegli il nome del tuo nuovo ruolo per visualizzare il riepilogo, quindi copia l'ARN del ruolo negli appunti. Utilizzerai questo ARN per creare schemi esterni per i namespace di S3 Tables.
Nota
Limita l'ambito a risorse specifiche sostituendo il carattere jolly con i nomi esatti di Amazon Resource Names (ARNs).
Fase 2: collegare un ruolo IAM al cluster Amazon Redshift
Associa il ruolo IAM configurato nella Fase 1 al tuo cluster Amazon Redshift.
Utilizzo della console AWS di gestione:
Accedi alla console di AWS gestione e apri la console Amazon Redshift all'indirizzo. https://console.aws.amazon.com/redshiftv2/
Dal menu di navigazione, scegliere Clusters (Cluster), quindi scegliere il cluster da aggiornare.
Per Azioni, scegli Gestisci i ruoli IAM per visualizzare l'elenco corrente dei ruoli IAM associati al cluster.
Nella pagina Gestisci i ruoli IAM, scegli il ruolo IAM da aggiungere, quindi scegli Aggiungi ruolo IAM.
Scegli Save (Salva) per salvare le modifiche.
Utilizzo della AWS CLI:
Esegui il comando seguente per associare un ruolo IAM a un cluster o uno spazio dei nomi esistente. Sostituisci my-redshift-cluster o my-redshift-namespace con l'identificatore o lo spazio dei nomi del cluster e 111122223333 con l'ID del tuo account. AWS
aws redshift modify-cluster-iam-roles \ --cluster-identifier my-redshift-cluster \ --add-iam-roles arn:aws:iam::111122223333:role/RedshiftS3TablesRole -- for serverless aws redshift-serverless update-namespace \ --namespace-name my-redshift-namespace \ --iam-roles "arn:aws:iam::111122223333:role/RedshiftS3TablesRole"
Per ulteriori informazioni, consulta Associazione di ruoli IAM ai cluster nella Guida alla gestione di Amazon Redshift.
Fase 3: Interroga le tabelle S3 da Amazon Redshift
Quando integri S3 Tables con AWS Glue Data Catalog, il servizio crea una struttura di catalogo federata che mappa le risorse di S3 Tables agli oggetti del catalogo: AWS Glue
Un bucket da tavolo S3 diventa un catalogo in. AWS Glue Data Catalog
Un namespace S3 diventa un database.AWS Glue
Una tabella S3 diventa un oggetto tabella.AWS Glue
L'integrazione crea la seguente gerarchia:
Catalogo federato:
s3tablescatalog(creato automaticamente)Cataloghi per bambini: ogni bucket da tavolo S3 diventa un catalogo per bambini sotto.
s3tablescatalogDatabase: ogni namespace S3 all'interno di un bucket di tabella diventa un database.
Tabelle: ogni tabella S3 all'interno di un namespace diventa una tabella.
Ad esempio, se hai un bucket di tabella S3 denominato analytics-bucket con uno spazio dei nomi sales contenente una tabellatransactions, il percorso completo in sarebbe:. AWS Glue Data Catalog s3tablescatalog/analytics-bucket/sales/transactions
Crea un link a una risorsa
Prima di utilizzare uno dei tre metodi di interrogazione seguenti, è necessario creare un collegamento alla risorsa in AWS Glue Data Catalog. I link alle risorse consentono ad Amazon Redshift di fare riferimento ai database S3 Tables tramite il catalogo standard.
Utilizzando la console: AWS Glue
Apri la AWS Glue console all'indirizzo https://console.aws.amazon.com/glue/
. Nel pannello di navigazione, seleziona Database.
Scegli Crea, quindi scegli Link alla risorsa.
Nella pagina Crea collegamento a una risorsa, fornisci le seguenti informazioni:
Nome del link alla risorsa: inserisci un nome per il link alla risorsa (ad esempio,
sales_resource_link).Database condiviso: inserisci il percorso del database S3 Tables (ad esempio,
s3tablescatalog/analytics-bucket/sales).Proprietario del database condiviso: inserisci l'ID AWS del tuo account.
ID di catalogo del database condiviso: inserisci l'ID del catalogo nel formato
<account-id>:s3tablescatalog/<bucket-name>.
Scegli Create (Crea).
Utilizzo della AWS CLI:
aws glue create-database \ --region us-west-2 \ --cli-input-json '{ "CatalogId": "111122223333", "DatabaseInput": { "Name": "sales_resource_link", "TargetDatabase": { "CatalogId": "111122223333:s3tablescatalog/analytics-bucket", "DatabaseName": "sales" } } }'
Questo comando crea un link di risorse denominato sales_resource_link nel AWS Glue Data Catalog predefinito che punta al sales database nel bucket di tabella S3. analytics-bucket
Una volta creati i link alle risorse, Amazon Redshift offre tre metodi per interrogare le tabelle S3. Scegli il metodo più adatto al tuo caso d'uso.
Nota
Per creare un collegamento alle risorse a livello di database, l'amministratore di Redshift deve disporre dell'AWS Glue:CreateDatabaseautorizzazione sul catalogo predefinito e sul database in fase di creazione.
Metodo 1: CREARE UNO SCHEMA ESTERNO
Utilizzalo CREATE EXTERNAL SCHEMA per creare uno schema esterno che faccia riferimento al tuo database S3 Tables. Questo metodo fornisce un controllo esplicito sulla denominazione e sulla configurazione dello schema.
Per i dettagli completi sulla sintassi, consulta CREATE EXTERNAL SCHEMA nella Amazon Redshift Database Developer Guide.
Esempio
Usa il nome del database e l'ID del catalogo della Fase 3. 111122223333Sostituiscilo con l'ID AWS del tuo account.
CREATE EXTERNAL SCHEMA s3tables_schema FROM DATA CATALOG DATABASE 'sales_resource_link' IAM_ROLE 'arn:aws:iam::111122223333:role/RedshiftS3TablesRole' REGION 'us-west-2' CATALOG_ID '111122223333'; SELECT * FROM s3tables_schema.transactions;
Metodo 2: CREARE UN DATABASE DA ARN
Da utilizzare CREATE DATABASE con la FROM ARN clausola per creare un database federato che faccia riferimento direttamente al collegamento alla AWS Glue risorsa. Questo metodo mappa automaticamente il AWS Glue database su un database Redshift.
Per i dettagli completi sulla sintassi, consulta CREATE DATABASE nella Amazon Redshift Database Developer Guide.
Esempio
Sostituiscilo 111122223333 con l'ID del tuo AWS account.
CREATE DATABASE s3tables_db FROM ARN 'arn:aws:glue:us-west-2:111122223333:database/sales_resource_link' WITH DATA CATALOG SCHEMA analytics_schema IAM_ROLE 'arn:aws:iam::111122223333:role/RedshiftS3TablesRole'; SELECT * FROM s3tables_db.analytics_schema.transactions;
Metodo 3: awsdatacatalog montato automaticamente
Amazon Redshift può montare automaticamente i AWS Glue Data Catalog database, inclusi i link alle risorse di S3 Tables, tramite il database. awsdatacatalog Questo metodo richiede l'accesso federato a Spectrum (FAS) per essere abilitato sul cluster.
Prerequisiti
Per utilizzare il awsdatacatalog database montato automaticamente, è necessario abilitare l'accesso federato a Spectrum. Ciò consente ad Amazon Redshift di utilizzare credenziali di identità federate per accedere AWS Glue Data Catalog a fonti di dati esterne.
Per abilitare l'accesso federato a Spectrum:
Connect al cluster Redshift utilizzando un'identità IAM con le seguenti autorizzazioni:
redshift:GetClusterCredentialsWithIAM(per i cluster con provisioning) oredshift-serverless:GetCredentials(per Serverless)AmazonS3ReadOnlyAccessAWSGlueConsoleFullAccessAutorizzazioni S3 Tables (come definite nella fase 1)
Quando ti connetti con un'identità IAM, Amazon Redshift crea automaticamente un utente del database con il prefisso
IAM:(per utenti) oIAMR:(per ruoli).In qualità di amministratore del cluster, concedi all'utente federato le autorizzazioni per accedere allo schema esterno. Sostituisci
my_usercon il tuo ruolo o nome utente IAM:GRANT ALL ON SCHEMA awsdatacatalog TO "IAMR:my_user";
Per istruzioni dettagliate sulla configurazione dell'accesso federato, consulta Usare un'identità federata per gestire l'accesso di Amazon Redshift alle risorse locali e le tabelle esterne di Amazon Redshift Spectrum nella Amazon Redshift Management Guide.
Interroga le tabelle S3
Una volta configurato l'accesso federato, verifica gli schemi montati e interroga le tabelle S3.
Verifica gli schemi montati:
SHOW SCHEMAS FROM DATABASE awsdatacatalog;
Interroga le tabelle S3 utilizzando il nome del collegamento alle risorse del passaggio 3:
SELECT * FROM awsdatacatalog.sales_resource_link.transactions;