

 Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le [ billet de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Interrogez les tables Amazon S3 depuis Amazon Redshift
<a name="querying-s3Tables"></a>

Amazon Redshift s'intègre aux compartiments de tables Amazon S3, ce qui vous permet d'accéder aux ressources des tables S3 à l'aide d'Amazon Redshift. Que vous débutiez ou que vous gériez des milliers de tables dans votre environnement Iceberg, les compartiments de tables simplifient la gestion des lacs de données à toutes les échelles. Pour plus d’informations, consultez [Table buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets.html).

Cette rubrique explique comment démarrer avec Amazon S3 Tables et Redshift et comment accéder aux objets S3 Tables à l'aide d'Amazon Redshift.

## Conditions préalables
<a name="querying-s3Tables-prerequisites"></a>

Avant d'interroger les tables S3 depuis Amazon Redshift, vous devez intégrer les tables S3 à. AWS Glue Data Catalog Pour obtenir des instructions, consultez la section [Intégration des tables Amazon S3 avec AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/glue-federation-s3tables.html).

Une fois les tables S3 intégrées AWS Glue Data Catalog, les responsables IAM disposant des autorisations S3 Tables et AWS Glue IAM requises peuvent découvrir les tables S3 via le. AWS Glue Data Catalog

**Note**  
La méthode 3 (awsdatacatalog monté automatiquement) comporte des prérequis supplémentaires. Consultez [Méthode 3 : catalogue awsdatacatalog monté automatiquement](#querying-s3Tables-method3) pour plus de détails.

## Interrogez les tables S3 depuis Amazon Redshift
<a name="querying-s3Tables-steps"></a>

Pour commencer à interroger les tables S3, procédez comme suit :
+ Étape 1 : créer un rôle IAM pour Amazon Redshift
+ Étape 2 : associer un rôle IAM à votre cluster Amazon Redshift
+ Étape 3 : interroger les tables S3 depuis Amazon Redshift

### Étape 1 : créer un rôle IAM pour Amazon Redshift
<a name="querying-s3Tables-step1"></a>

Votre cluster a besoin d'une autorisation pour accéder au catalogue externe de tables S3 dans AWS Glue. Pour fournir cette autorisation, Amazon Redshift utilise un rôle IAM attaché à votre cluster. Créez un rôle IAM avec les autorisations de politique suivantes.

**Note**  
Dans la politique et les exemples ci-dessous, remplacez `us-west-2` par votre AWS région et `111122223333` par votre numéro de AWS compte.

**Pour créer une politique, procédez comme suit :**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le panneau de navigation, choisissez **Politiques**.

1. Choisissez **Create Policy** (Créer une politique).

1. Choisissez l'onglet **JSON**.

1. Collez le document de politique JSON suivant :

   ```
   {
     "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. Choisissez **Examiner une politique**.

1. Sur la page **Politique de révision**, entrez `GlueCatalogS3Tables_Policy` le **nom**. Entrez éventuellement une description. Consultez le résumé de la politique, puis choisissez **Créer une politique**.

**Pour créer un rôle IAM pour Amazon Redshift :**

1. Ouvrez la [console IAM](https://console.aws.amazon.com/iam/).

1. Dans le panneau de navigation, choisissez **Rôles**.

1. Sélectionnez **Create role** (Créer un rôle).

1. Choisissez le **AWS service** comme entité de confiance, puis choisissez **Redshift comme cas** d'utilisation.

1. **Sous **Cas d'utilisation pour d'autres AWS services**, choisissez **Redshift - Personnalisable**, puis Next.**

1. Sur la page **Ajouter des autorisations**, joignez la `GlueCatalogS3Tables_Policy` politique que vous avez créée ci-dessus. Choisissez **Suivant**.

1. Pour **Nom du rôle**, indiquez le nom de votre rôle, par exemple `RedshiftS3TablesRole`.

1. Passez en revue les informations, puis choisissez **Créer un rôle**.

1. Dans le panneau de navigation, choisissez **Rôles**. Choisissez le nom de votre nouveau rôle pour afficher le résumé, puis copiez l'**ARN du rôle dans** votre presse-papiers. Vous utiliserez cet ARN lors de la création de schémas externes pour les espaces de noms des tables S3.

**Note**  
Limitez la portée à des ressources spécifiques en remplaçant le caractère générique par des noms de ressources Amazon exacts (ARNs).

### Étape 2 : associer un rôle IAM à votre cluster Amazon Redshift
<a name="querying-s3Tables-step2"></a>

Associez le rôle IAM que vous avez configuré à l'étape 1 à votre cluster Amazon Redshift.

**À l'aide de la console AWS de gestion :**

1. Connectez-vous à la console de AWS gestion et ouvrez la console Amazon Redshift à l'adresse. [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)

1. Dans le menu de navigation, choisissez **Clusters**, puis choisissez le cluster que vous souhaitez mettre à jour.

1. Pour **Actions**, choisissez **Gérer les rôles IAM** pour afficher la liste actuelle des rôles IAM associés au cluster.

1. Sur la page **Gérer les rôles IAM**, choisissez le rôle IAM à ajouter, puis choisissez **Ajouter un rôle IAM**.

1. Choisissez **Terminé** pour enregistrer les changements.

**À l'aide de la AWS CLI :**

Exécutez la commande suivante pour associer un rôle IAM à un cluster ou à un espace de noms existant. Remplacez `my-redshift-cluster` ou `my-redshift-namespace` par votre identifiant de cluster ou votre espace de noms et `111122223333` par votre identifiant de AWS compte.

```
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"
```

Pour plus d’informations, consultez [Association des rôles IAM aux clusters](https://docs.aws.amazon.com/redshift/latest/mgmt/copy-unload-iam-role.html) dans le *Guide de gestion Amazon Redshift*.

### Étape 3 : interroger les tables S3 depuis Amazon Redshift
<a name="querying-s3Tables-step3"></a>

Lorsque vous intégrez des tables S3 à AWS Glue Data Catalog, le service crée une structure de catalogue fédérée qui mappe les ressources des tables S3 aux objets du AWS Glue catalogue :
+ Un bucket de table S3 devient un **catalogue** dans le AWS Glue Data Catalog.
+ Un espace de noms S3 devient une **AWS Glue base de données**.
+ Une table S3 devient un **objet de AWS Glue table**.

L'intégration crée la hiérarchie suivante :
+ **Catalogue fédéré :** `s3tablescatalog` (créé automatiquement)
+ **Catalogues enfants :** chaque compartiment de table S3 devient un catalogue enfant sous`s3tablescatalog`.
+ **Bases de données :** chaque espace de noms S3 au sein d'un compartiment de table devient une base de données.
+ **Tables :** chaque table S3 au sein d'un espace de noms devient une table.

Par exemple, si vous avez un compartiment de table S3 nommé `analytics-bucket` avec un espace de noms `sales` contenant une table`transactions`, le chemin complet dans le AWS Glue Data Catalog serait :`s3tablescatalog/analytics-bucket/sales/transactions`.

**Création d'un lien vers une ressource**

Avant d'utiliser l'une des trois méthodes de requête ci-dessous, vous devez créer un lien vers une ressource dans AWS Glue Data Catalog. Les liens de ressources permettent à Amazon Redshift de référencer les bases de données S3 Tables via le catalogue standard.

*À l'aide de AWS Glue la console :*

1. Ouvrez la AWS Glue console à l'adresse [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Dans le panneau de navigation, choisissez **Databases (Bases de données)**.

1. Choisissez **Créer**, puis cliquez sur **Lien vers la ressource**.

1. Sur la page **Créer un lien vers une ressource**, fournissez les informations suivantes :
   + **Nom du lien vers la ressource :** entrez le nom du lien vers la ressource (par exemple,`sales_resource_link`).
   + **Base de données partagée :** entrez le chemin de la base de données S3 Tables (par exemple,`s3tablescatalog/analytics-bucket/sales`).
   + **Propriétaire de la base de données partagée :** entrez votre identifiant de AWS compte.
   + **ID de catalogue de la base de données partagée :** entrez l'ID de catalogue au format`<account-id>:s3tablescatalog/<bucket-name>`.

1. Choisissez **Créer**.

*À l'aide de la 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"
            }
        }
  }'
```

Cette commande crée un lien de ressource nommé `sales_resource_link` dans votre catalogue de AWS Glue données par défaut qui pointe vers la `sales` base de données dans le compartiment de table S3`analytics-bucket`.

Une fois les liens de ressources créés, Amazon Redshift propose trois méthodes pour interroger les tables S3. Choisissez la méthode qui convient le mieux à votre cas d'utilisation.

**Note**  
Pour créer un lien de ressource au niveau de la base de données, l'administrateur Redshift doit avoir l'`AWS Glue:CreateDatabase`autorisation d'accéder au catalogue par défaut et à la base de données en cours de création.

#### Méthode 1 : CRÉER UN SCHÉMA EXTERNE
<a name="querying-s3Tables-method1"></a>

`CREATE EXTERNAL SCHEMA`À utiliser pour créer un schéma externe qui fait référence à votre base de données S3 Tables. Cette méthode fournit un contrôle explicite sur la dénomination et la configuration des schémas.

Pour obtenir des informations complètes sur la syntaxe, consultez [CREATE EXTERNAL SCHEMA](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html) dans le manuel *Amazon Redshift Database Developer Guide*.

**Exemple**

Utilisez le nom de la base de données et l'ID du catalogue indiqués à l'étape 3. Remplacez `111122223333` par votre identifiant de AWS compte.

```
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;
```

#### Méthode 2 : CRÉER UNE BASE DE DONNÉES À PARTIR DE L'ARN
<a name="querying-s3Tables-method2"></a>

À utiliser `CREATE DATABASE` avec la `FROM ARN` clause pour créer une base de données fédérée qui fait directement référence à votre lien de AWS Glue ressource. Cette méthode mappe automatiquement la AWS Glue base de données à une base de données Redshift.

Pour obtenir des informations complètes sur la syntaxe, consultez [CREATE DATABASE](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_DATABASE.html) dans le manuel *Amazon Redshift Database Developer Guide*.

**Exemple**

Remplacez `111122223333` par votre identifiant de AWS compte.

```
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;
```

#### Méthode 3 : catalogue awsdatacatalog monté automatiquement
<a name="querying-s3Tables-method3"></a>

Amazon Redshift peut monter automatiquement des AWS Glue Data Catalog bases de données, y compris des liens de ressources S3 Tables, via la `awsdatacatalog` base de données. Cette méthode nécessite l'activation de l'accès fédéré à Spectrum (FAS) sur votre cluster.

**Conditions préalables**

Pour utiliser la `awsdatacatalog` base de données montée automatiquement, vous devez activer l'accès fédéré à Spectrum. Cela permet à Amazon Redshift d'utiliser des informations d'identification fédérées pour accéder AWS Glue Data Catalog à des sources de données externes.

Pour activer l'accès fédéré à Spectrum :

1. Connectez-vous à votre cluster Redshift à l'aide d'une identité IAM avec les autorisations suivantes :
   + `redshift:GetClusterCredentialsWithIAM`(pour les clusters provisionnés) ou `redshift-serverless:GetCredentials` (pour les serveurs sans serveur)
   + `AmazonS3ReadOnlyAccess`
   + `AWSGlueConsoleFullAccess`
   + Autorisations S3 Tables (telles que définies à l'étape 1)

1. Lorsque vous vous connectez avec une identité IAM, Amazon Redshift crée automatiquement un utilisateur de base de données préfixé `IAM:` par (pour les utilisateurs) `IAMR:` ou (pour les rôles).

1. En tant qu'administrateur de cluster, accordez à l'utilisateur fédéré l'autorisation d'accéder au schéma externe. Remplacez `my_user` par votre rôle IAM ou votre nom d'utilisateur :

   ```
   GRANT ALL ON SCHEMA awsdatacatalog TO "IAMR:my_user";
   ```

Pour obtenir des instructions détaillées sur la configuration de l'accès fédéré, consultez la section [Utilisation d'une identité fédérée pour gérer l'accès d'Amazon Redshift aux ressources locales et aux tables externes Amazon Redshift Spectrum dans le guide de gestion *Amazon* Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/authorization-fas-spectrum.html).

**Tables de requêtes S3**

Une fois l'accès fédéré configuré, vérifiez les schémas montés et interrogez vos tables S3.

Vérifiez les schémas montés :

```
SHOW SCHEMAS FROM DATABASE awsdatacatalog;
```

Interrogez les tables S3 en utilisant le nom du lien de ressource indiqué à l'étape 3 :

```
SELECT * FROM awsdatacatalog.sales_resource_link.transactions;
```