Amazon Redshift ne prendra plus en charge l'utilisation des UDF Python après le 30 juin 2026. Nous allons commencer à l'appliquer par étapes. Pour plus d'informations sur les détails de la fin de vie de Python et des options de migration, consultez le billet de
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
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.
Cette rubrique explique comment démarrer avec Amazon S3 Tables et Redshift et accéder aux objets S3 Tables à l'aide d'Amazon Redshift.
Conditions préalables
Avant d'interroger des tables S3 depuis Amazon Redshift, vous devez intégrer S3 Tables à. AWS Glue Data Catalog Pour obtenir des instructions, consultez la section Intégrer des tables Amazon S3 à AWS Glue Data Catalog.
Une fois que S3 Tables est intégré à AWS Glue Data Catalog, les administrateurs IAM disposant des tables S3 et des autorisations AWS Glue IAM requises peuvent découvrir les tables S3 via le. AWS Glue Data Catalog
Note
La méthode 3 (Auto-mounted awsdatacatalog) comporte des prérequis supplémentaires. Consultez Méthode 3 : Auto-mounted awsdatacatalog pour plus de détails.
Interrogez des tables S3 depuis Amazon Redshift
Pour commencer à interroger des tables S3, procédez comme suit :
Étape 1 : Création d'un rôle IAM pour Amazon Redshift
Étape 2 : associer un rôle IAM à votre cluster Amazon Redshift
Étape 3 : Interrogez les tables S3 depuis Amazon Redshift
Étape 1 : Création d'un rôle IAM pour Amazon Redshift
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 associé à 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 identifiant de AWS compte.
Pour créer une politique :
Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/
. Dans le panneau de navigation, choisissez Politiques.
Choisissez Create Policy (Créer une politique).
Choisissez l'onglet JSON.
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/*" ] } ] }Choisissez Examiner une politique.
Sur la page Réviser la politique, saisissez
GlueCatalogS3Tables_Policyle nom. Si vous le souhaitez, entrez 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, procédez comme suit :
Ouvrez la console IAM
. Dans le panneau de navigation, choisissez Rôles.
Sélectionnez Create role (Créer un rôle).
Choisissez le AWS service comme entité de confiance, puis choisissez Redshift comme cas d'utilisation.
Sous Cas d'utilisation pour d'autres AWS services, choisissez Redshift - Personnalisable, puis choisissez Suivant.
Sur la page Ajouter des autorisations, joignez la
GlueCatalogS3Tables_Policypolitique que vous avez créée ci-dessus. Choisissez Suivant.Pour Nom du rôle, indiquez le nom de votre rôle, par exemple
RedshiftS3TablesRole.Passez en revue les informations, puis choisissez Créer un rôle.
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
Réduisez la portée à des ressources spécifiques en remplaçant le caractère générique par des noms de ressources Amazon (ARN) exacts.
Étape 2 : associer un rôle IAM à votre cluster Amazon Redshift
Associez le rôle IAM que vous avez configuré à l'étape 1 à votre cluster Amazon Redshift.
À l'aide de la console AWS de gestion :
Connectez-vous à la console de AWS gestion et ouvrez la console Amazon Redshift à https://console.aws.amazon.com/redshiftv2/
l'adresse. Dans le menu de navigation, choisissez Clusters, puis choisissez le cluster que vous souhaitez mettre à jour.
Dans Actions, choisissez Gérer les rôles IAM pour afficher la liste actuelle des rôles IAM associés au cluster.
Sur la page Gérer les rôles IAM, choisissez le rôle IAM à ajouter, puis choisissez Ajouter un rôle IAM.
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 dans le Guide de gestion Amazon Redshift.
Étape 3 : Interrogez les tables S3 depuis Amazon Redshift
Lorsque vous intégrez S3 Tables à AWS Glue Data Catalog, le service crée une structure de catalogue fédérée qui fait correspondre les ressources des tables S3 aux objets du AWS Glue catalogue :
Un compartiment 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 pour enfants : chaque compartiment de table S3 devient un catalogue enfant sous
s3tablescatalog.Bases de données : chaque espace de noms S3 d'un compartiment de tables devient une base de données.
Tables : chaque table S3 d'un espace de noms devient une table.
Par exemple, si vous avez un compartiment de tables S3 nommé analytics-bucket avec un espace de noms sales contenant une tabletransactions, 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 :
Ouvrez la AWS Glue console à l'adresse https://console.aws.amazon.com/glue/
. Dans le panneau de navigation, choisissez Databases (Bases de données).
Choisissez Créer, puis cliquez sur Lien vers une ressource.
Sur la page Créer un lien vers une ressource, fournissez les informations suivantes :
Nom du lien de ressource : entrez un nom pour le lien de 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>.
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 tables S3analytics-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 vers une ressource au niveau de la base de données, l'administrateur Redshift doit disposer de l'AWS Glue:CreateDatabaseautorisation sur le catalogue par défaut et sur la base de données en cours de création.
Méthode 1 : CRÉATION D'UN SCHÉMA EXTERNE
Permet CREATE EXTERNAL SCHEMA de 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 plus de détails sur la syntaxe, consultez la section CRÉER UN SCHÉMA EXTERNE dans le manuel Amazon Redshift Database Developer Guide.
Exemple
Utilisez le nom de la base de données et l'ID de catalogue indiqués à l'étape 3. 111122223333Remplacez-le 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
Utilisez CREATE DATABASE FROM ARN cette 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 plus de détails sur la syntaxe, consultez la section CRÉER UNE BASE DE DONNÉES dans le manuel Amazon Redshift Database Developer Guide.
Exemple
111122223333Remplacez-le 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 : Auto-mounted awsdatacatalog
Amazon Redshift peut monter automatiquement des AWS Glue Data Catalog bases de données, y compris des liens vers des 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 base de awsdatacatalog 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 à des sources de données externes AWS Glue Data Catalog et à des sources de données.
Pour activer l'accès fédéré à Spectrum, procédez comme suit :
Connectez-vous à votre cluster Redshift à l'aide d'une identité IAM avec les autorisations suivantes :
redshift:GetClusterCredentialsWithIAM(pour les clusters provisionnés) ouredshift-serverless:GetCredentials(pour les serveurs sans serveur)AmazonS3ReadOnlyAccessAWSGlueConsoleFullAccessAutorisations S3 Tables (telles que définies à l'étape 1)
Lorsque vous vous connectez avec une identité IAM, Amazon Redshift crée automatiquement un utilisateur de base de données préfixé par
IAM:(pour les utilisateurs) ouIAMR:(pour les rôles).En tant qu'administrateur de cluster, accordez à l'utilisateur fédéré les autorisations nécessaires pour accéder au schéma externe. Remplacez
my_userpar 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 Amazon Redshift aux ressources locales et aux tables externes Amazon Redshift Spectrum dans le Amazon Redshift Management Guide.
Tables Query 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 à l'aide du nom du lien de ressource indiqué à l'étape 3 :
SELECT * FROM awsdatacatalog.sales_resource_link.transactions;