

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

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

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

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

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/](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 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](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à affidabile, 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. Controlla le informazioni, quindi scegli **Crea ruolo**.

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

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

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

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 tabella`transactions`, 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/](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 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>`.

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

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

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](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 della Fase 3. `111122223333`Sostituiscilo 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
<a name="querying-s3Tables-method2"></a>

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](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: awsdatacatalog montato automaticamente
<a name="querying-s3Tables-method3"></a>

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)

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

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 le tabelle esterne di Amazon Redshift Spectrum nella Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/authorization-fas-spectrum.html) 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;
```