Interroga le tabelle Amazon S3 da Amazon Redshift - Amazon Redshift

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:

  1. Aprire la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione, scegli Policy.

  3. Scegli Create Policy (Crea policy).

  4. Scegliere la scheda JSON.

  5. 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/*" ] } ] }
  6. Scegliere Esamina policy.

  7. Nella pagina di revisione della politica, inserisci GlueCatalogS3Tables_Policy Nome. Facoltativamente, inserisci una descrizione. Esamina il riepilogo della politica, quindi scegli Crea politica.

Per creare un ruolo IAM per Amazon Redshift:

  1. Aprire la console IAM.

  2. Nel pannello di navigazione, selezionare Ruoli.

  3. Selezionare Create role (Crea ruolo).

  4. Scegli il AWS servizio come entità affidabile, quindi scegli Redshift come caso d'uso.

  5. In Caso d'uso per altri AWS servizi, scegli Redshift - Personalizzabile, quindi scegli Avanti.

  6. Nella pagina Aggiungi autorizzazioni, allega la GlueCatalogS3Tables_Policy policy che hai creato sopra. Scegli Next (Successivo).

  7. Per Role name (Nome ruolo), digitare un nome per il ruolo, ad esempio RedshiftS3TablesRole.

  8. Controlla le informazioni, quindi scegli Crea ruolo.

  9. 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:

  1. Accedi alla console di AWS gestione e apri la console Amazon Redshift all'indirizzo. https://console.aws.amazon.com/redshiftv2/

  2. Dal menu di navigazione, scegliere Clusters (Cluster), quindi scegliere il cluster da aggiornare.

  3. Per Azioni, scegli Gestisci i ruoli IAM per visualizzare l'elenco corrente dei ruoli IAM associati al cluster.

  4. Nella pagina Gestisci i ruoli IAM, scegli il ruolo IAM da aggiungere, quindi scegli Aggiungi ruolo IAM.

  5. 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. s3tablescatalog

  • Database: 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

  1. Apri la AWS Glue console all'indirizzo https://console.aws.amazon.com/glue/.

  2. Nel pannello di navigazione, seleziona Database.

  3. Scegli Crea, quindi scegli Link alla risorsa.

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

  5. 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:

  1. Connect al cluster Redshift utilizzando un'identità IAM con le seguenti autorizzazioni:

    • redshift:GetClusterCredentialsWithIAM(per i cluster con provisioning) o redshift-serverless:GetCredentials (per Serverless)

    • AmazonS3ReadOnlyAccess

    • AWSGlueConsoleFullAccess

    • Autorizzazioni S3 Tables (come definite nella fase 1)

  2. Quando ti connetti con un'identità IAM, Amazon Redshift crea automaticamente un utente del database con il prefisso IAM: (per utenti) o IAMR: (per ruoli).

  3. In qualità di amministratore del cluster, concedi all'utente federato le autorizzazioni per accedere allo schema esterno. Sostituisci my_user con 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;