

 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 ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/) 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
<a name="querying-s3Tables"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets.html).

Questo argomento descrive come iniziare a usare Amazon S3 Tables e Redshift e accedere agli oggetti S3 Tables utilizzando Amazon Redshift.

## Prerequisiti
<a name="querying-s3Tables-prerequisites"></a>

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](https://docs.aws.amazon.com/glue/latest/dg/glue-federation-s3tables.html)

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](#querying-s3Tables-method3).

## Interroga le tabelle S3 di Amazon Redshift
<a name="querying-s3Tables-steps"></a>

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
<a name="querying-s3Tables-step1"></a>

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/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, scegli **Policy**.

1. Scegli **Create Policy** (Crea policy).

1. Scegliere la scheda **JSON**.

1. 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/*"
         ]
       }
     ]
   }
   ```

1. Scegliere **Esamina policy**.

1. 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](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, selezionare **Ruoli**.

1. Selezionare **Create role (Crea ruolo)**.

1. Scegli il **AWS servizio ** come entità attendibile, quindi scegli ** Redshift ** come caso d'uso.

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

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

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

1. Rivedi le informazioni, quindi scegli ** Crea ruolo**.

1. 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
<a name="querying-s3Tables-step2"></a>

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/](https://console.aws.amazon.com/redshiftv2/).

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

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

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

1. 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](https://docs.aws.amazon.com/redshift/latest/mgmt/copy-unload-iam-role.html) nella *Guida alla gestione di Amazon Redshift*.

### Passaggio 3: interroga le tabelle S3 da Amazon Redshift
<a name="querying-s3Tables-step3"></a>

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 tabella`transactions`, 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/](https://console.aws.amazon.com/glue/).

1. Nel pannello di navigazione, seleziona **Database**.

1. Scegli ** Crea**, quindi scegli Link alla ** risorsa**.

1. 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>`.

1. 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:CreateDatabase`autorizzazione sul catalogo predefinito e sul database in fase di creazione.

#### Metodo 1: CREA SCHEMA ESTERNO
<a name="querying-s3Tables-method1"></a>

`CREATE EXTERNAL SCHEMA`Usalo 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 ](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html) 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
<a name="querying-s3Tables-method2"></a>

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 ](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_DATABASE.html) 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
<a name="querying-s3Tables-method3"></a>

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)

1. 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).

1. 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 ](https://docs.aws.amazon.com/redshift/latest/mgmt/authorization-fas-spectrum.html) 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;
```