View a markdown version of this page

Interroga le tabelle Amazon S3 da Amazon Redshift - Amazon Redshift

Amazon Redshift non supporterà più l'uso delle UDF Python dopo il 30 giugno 2026. Inizieremo ad applicarlo per fasi. Per ulteriori informazioni sulla fine del ciclo di vita e sulle opzioni di migrazione di Python, consulta il post del blog pubblicato il 30 giugno 2025.

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 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 interrogare S3 Tables da Amazon Redshift, devi integrare S3 Tables con. AWS Glue Data Catalog Per istruzioni, consulta Integrazione di Amazon S3 Tables con. AWS Glue Data Catalog

Dopo l'integrazione di S3 Tables con AWS Glue Data Catalog, i principali IAM con le tabelle S3 e le autorizzazioni AWS Glue IAM richieste possono scoprire le tabelle S3 tramite. AWS Glue Data Catalog

Nota

Il metodo 3 (Auto-mounted awsdatacatalog) prevede prerequisiti aggiuntivi. Per informazioni dettagliate, vedi Metodo 3: Auto-mounted awsdatacatalog.

Interroga le tabelle S3 di Amazon Redshift

Per iniziare a interrogare le tabelle S3, segui questi passaggi:

  • Passaggio 1: crea un ruolo IAM per Amazon Redshift

  • Passaggio 2: collega un ruolo IAM al tuo cluster Amazon Redshift

  • Passaggio 3: interroga le tabelle S3 da Amazon Redshift

Fase 1: Creare un ruolo IAM per Amazon Redshift

Il tuo 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 policy e negli esempi seguenti, sostituisci 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 Revisione della politica, inserisci GlueCatalogS3Tables_Policy Nome. Facoltativamente, inserisci una descrizione. Rivedi 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à attendibile, 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. Rivedi le informazioni, quindi scegli Crea ruolo.

  9. Nel riquadro di navigazione, seleziona Ruoli. Scegli il nome del 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

Riduci le risorse specifiche sostituendo il carattere jolly con gli Amazon Resource Names (ARN) esatti.

Passaggio 2: collega un ruolo IAM al tuo 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 di 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 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.

Utilizzando la AWS CLI:

Esegui il comando seguente per associare un ruolo IAM a un cluster o namespace 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.

Passaggio 3: interroga le tabelle S3 da Amazon Redshift

Quando si integra 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 di tabelle 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 secondari: ogni bucket di tabelle S3 diventa un catalogo secondario in. s3tablescatalog

  • Database: ogni namespace S3 all'interno di un bucket di tabelle diventa un database.

  • Tabelle: ogni tabella S3 all'interno di un namespace diventa una tabella.

Ad esempio, se hai un bucket di tabelle S3 denominato analytics-bucket con uno spazio dei nomi sales contenente una tabellatransactions, il percorso completo sarebbe:. AWS Glue Data Catalog s3tablescatalog/analytics-bucket/sales/transactions

Crea un collegamento alle risorse

Prima di utilizzare uno dei tre metodi di interrogazione seguenti, è necessario creare un collegamento alla risorsa in AWS Glue Data Catalog. I collegamenti 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 link alla 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: immettere il percorso del database di S3 Tables (ad esempio,s3tablescatalog/analytics-bucket/sales).

    • Proprietario del database condiviso: inserisci l'ID AWS del tuo account.

    • ID del 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 collegamento alle risorse denominato sales_resource_link nel catalogo AWS Glue dati predefinito che punta al sales database nel bucket della tabella S3. analytics-bucket

Una volta creati i collegamenti alle risorse, Amazon Redshift fornisce 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: CREA SCHEMA ESTERNO

CREATE EXTERNAL SCHEMAUsalo per creare uno schema esterno che fa riferimento al database S3 Tables. Questo metodo fornisce un controllo esplicito sulla denominazione e sulla configurazione degli schemi.

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 indicati nella fase 3. Sostituiscilo 111122223333 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: CREA DATABASE DA ARN

Usalo CREATE DATABASE con la FROM ARN clausola per creare un database federato che fa riferimento direttamente al collegamento alla AWS Glue risorsa. Questo metodo associa automaticamente il AWS Glue database a 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: Auto-mounted awsdatacatalog

Amazon Redshift può montare automaticamente AWS Glue Data Catalog database, inclusi i collegamenti 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. Connettiti al tuo cluster Redshift utilizzando un'identità IAM con le seguenti autorizzazioni:

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

    • AmazonS3ReadOnlyAccess

    • AWSGlueConsoleFullAccess

    • Autorizzazioni per le tabelle S3 (come definite nel passaggio 1)

  2. Quando ti connetti con un'identità IAM, Amazon Redshift crea automaticamente un utente del database con il prefisso IAM: (per gli utenti) o IAMR: (per i 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 alle tabelle esterne di Amazon Redshift Spectrum nella Amazon Redshift Management Guide.

Tabelle Query 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 alla risorsa indicato nella Fase 3:

SELECT * FROM awsdatacatalog.sales_resource_link.transactions;