Didacticiel : Premiers pas avec S3 Tables
Dans ce didacticiel, vous créez un compartiment de tables et intégrez les compartiments de tables de votre région avec les services d’analytique AWS. Vous allez ensuite utiliser l’AWS CLI pour créer votre premier espace de noms et votre première table dans le compartiment de table. Ensuite, vous utilisez AWS Lake Formation pour accorder une autorisation sur votre table, afin de pouvoir commencer à interroger votre table avec Athena.
Astuce
Si vous migrez des données tabulaires de compartiments à usage général vers des compartiments de table, la bibliothèque de solutions AWS propose une solution guidée pour vous aider. Cette solution automatise le déplacement des tables Apache Iceberg et Apache Hive enregistrées dans le AWS Glue Data Catalog et stockées dans des compartiments à usage général vers des compartiments de table en utilisant AWS Step Functions Amazon EMR avec Apache Spark. Pour plus d’informations, consultez Instructions relatives à la migration de données tabulaires d’Amazon S3 vers S3 Tables
Rubriques
Étape 1 : création d’un compartiment de table et intégration avec les services d’analytique AWS
Dans cette étape, vous utilisez la console Amazon S3 pour créer votre premier compartiment de table. Pour découvrir d’autres méthodes de création d’un compartiment de tables, consultez Création d’un compartiment de tables.
Note
Par défaut, la console Amazon S3 intègre automatiquement vos compartiments de table à Amazon SageMaker Lakehouse, ce qui permet aux services d’analytique AWS de découvrir et d’accéder automatiquement à vos données de S3 Tables. Si vous créez votre premier compartiment de table par programmation à l’aide de l’AWS Command Line Interface (AWS CLI), des kits AWS SDK ou de l’API REST, vous devez effectuer manuellement l’intégration avec les services d’analytique AWS. Pour plus d’informations, consultez Intégration d’Amazon S3 Tables aux services d’analytique AWS.
Connectez-vous à la AWS Management Console et ouvrez la console Amazon S3 à l’adresse https://console.aws.amazon.com/s3/
. Dans la barre de navigation en haut de la page, sélectionnez le nom de la Région AWS actuellement affichée. Choisissez ensuite la région dans laquelle vous souhaitez créer le compartiment de table.
Dans le volet de navigation de gauche, choisissez Compartiments de tables.
Choisissez Créer un compartiment de tables.
Sous Configuration générale, saisissez un nom pour votre compartiment de table.
Le nom du compartiment de table doit présenter les caractéristiques suivantes :
Il doit être unique pour votre Compte AWS dans la région actuelle.
Il doit comporter entre 3 et 63 caractères.
Il doit être composé uniquement de lettres minuscules, de chiffres et de traits d’union (
-).Il doit commencer et se terminer par une lettre ou un chiffre.
Une fois le compartiment de table créé, vous ne pouvez pas changer son nom. Le Compte AWS qui crée le compartiment en est le propriétaire. Pour plus d’informations sur la dénomination des compartiments de table, consultez Règles de dénomination des compartiments de tables.
-
Dans la section Intégration aux services d’analytique AWS, assurez-vous que la case Activer l’intégration est cochée.
Si Activer l’intégration est sélectionnée lorsque vous créez votre premier compartiment de table à l’aide de la console, Amazon S3 tente d’intégrer automatiquement votre compartiment de table aux services d’analytique AWS. Cette intégration vous permet d’utiliser les services d’analytique AWS pour accéder à toutes les tables dans la région actuelle. Pour plus d’informations, consultez Intégration d’Amazon S3 Tables aux services d’analytique AWS.
Choisissez Créer un compartiment.
Étape 2 : créer un espace de noms de tables et une table
Pour cette étape, vous créez un espace de noms dans votre compartiment de table, puis créez une nouvelle table sous cet espace de noms. Vous pouvez créer un espace de noms de tables et une table en utilisant la console ou l’AWS CLI.
Important
Lorsque vous créez des tables, assurez-vous d’utiliser toutes les lettres minuscules dans les noms et les définitions de tables. Par exemple, assurez-vous que les noms des tables et des colonnes sont tous en minuscules. Si le nom ou la définition de votre table contient des majuscules, la table n’est pas prise en charge par AWS Lake Formation ou par le AWS Glue Data Catalog. Dans ce cas, votre table ne sera pas visible par les services d’analytique AWS tels qu’Amazon Athena, même si vos compartiments de table sont intégrés aux services d’analytique AWS.
Si la définition de votre table contient des majuscules, le message d’erreur suivant s’affiche lorsque vous exécutez une requête SELECT dans Athena : « GENERIC_INTERNAL_ERROR : échec de la demande de table : com.amazonaws.services.glue.model.ValidationException : ressource de fédération non prise en charge - Noms de table ou de colonne non valides. »
La procédure suivante utilise la console Amazon S3 pour créer un espace de noms et une table avec Amazon Athena.
Pour créer un espace de noms de tables et une table
Connectez-vous à la AWS Management Console et ouvrez la console Amazon S3 à l’adresse https://console.aws.amazon.com/s3/
. -
Dans le volet de navigation de gauche, choisissez Compartiments de tables.
-
Sur la page Compartiments de table, choisissez le compartiment de table dans lequel vous souhaitez créer une table.
-
Sur la page des détails du compartiment de table, choisissez Créer une table avec Athena.
-
Dans la boîte de dialogue Créer une table avec Athena, choisissez Créer un espace de noms, puis saisissez un nom dans le champ Nom de l’espace de noms. Les noms des espaces de noms doivent comporter de 1 à 255 caractères et être uniques dans le compartiment de table. Les caractères valides sont : a-z, A-Z, 0-9 et le trait d’union (
_). Les traits de soulignement ne sont pas autorisés au début des noms d’espaces de noms. -
Choisissez Create namespace (Créer un espace de noms).
-
Choisissez Créer une table avec Athena.
-
La console Amazon Athena s’ouvre et l’éditeur de requêtes Athena apparaît. L’éditeur de requêtes contient un exemple de requête que vous pouvez utiliser pour créer une table. Modifiez la requête pour spécifier le nom de la table et les colonnes que vous souhaitez attribuer à la table.
-
Lorsque vous avez terminé de modifier la requête, choisissez Exécuter pour créer votre table.
Si la création de votre table a réussi, le nom de votre nouvelle table apparaît dans la liste des tables d’Athena. Lorsque vous revenez à la console Amazon S3, votre nouvelle table apparaît dans la liste Tables de la page de détails de votre compartiment de table une fois que vous avez actualisé la liste.
Pour utiliser les exemples de commandes d’AWS CLI suivants afin de créer un espace de noms dans votre compartiment de table, puis de créer une nouvelle table avec un schéma sous cet espace de noms, remplacez les valeurs par les vôtres.user input
placeholder
Prérequis
-
Associez ensuite la politique
AmazonS3TablesFullAccessà votre identité. -
Installez l’AWS CLI version 2.23.10 ou supérieure. Pour plus d'informations, consultez Installation ou mise à jour de la version la plus récente de l'AWS CLI (langue française non garantie) dans le Guide de l'utilisateur AWS Command Line Interface.
Créez un nouvel espace de noms dans votre compartiment de table en exécutant la commande suivante :
aws s3tables create-namespace \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket\ --namespacemy_namespaceVérifiez que votre espace de noms a été créé avec succès en exécutant la commande suivante :
aws s3tables list-namespaces \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket
Créez une nouvelle table avec un schéma de table en exécutant la commande suivante :
aws s3tables create-table --cli-input-json file://mytabledefinition.jsonPour le fichier
mytabledefinition.json, utilisez l’exemple de définition de table suivant :{ "tableBucketARN": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket", "namespace": "my_namespace", "name": "my_table", "format": "ICEBERG", "metadata": { "iceberg": { "schema": { "fields": [{"name": "id", "type": "int","required": true}, {"name": "name", "type": "string"}, {"name": "value", "type": "int"}] } } } }
(Facultatif) Étape 3 : octroi des autorisations Lake Formation sur votre table
Pour cette étape, vous accordez des autorisations Lake Formation sur votre nouvelle table à d’autres principaux IAM. Ces autorisations permettent à des principaux autres que vous d’accéder aux ressources de compartiments de table à l’aide d’Athena et d’autres services d’analytique AWS. Pour plus d’informations, consultez Octroi de l’autorisation Lake Formation sur une table ou une base de données. Si vous êtes le seul utilisateur à accéder à vos tables, vous pouvez ignorer cette étape.
-
Ouvrez la console AWS Lake Formation à l’adresse https://console.aws.amazon.com/lakeformation/
et connectez-vous en tant qu’administrateur du lac de données. Pour plus d’informations sur la manière de créer un administrateur de lac de données, consultez Création d’un administrateur de lac de données. Dans le volet de navigation, choisissez Autorisations de données, puis Accorder.
Sur la page Accorder des autorisations, sous Principaux, choisissez Utilisateurs et rôles IAM, puis choisissez l’utilisateur ou le rôle IAM que vous souhaitez autoriser à exécuter des requêtes sur votre table.
Sous Balises LF ou ressources de catalogue, choisissez Ressources de catalogue de données nommées.
-
Procédez de l’une des manières suivantes, selon que vous souhaitez accorder l’accès à toutes les tables de votre compte ou uniquement aux ressources du compartiment de table que vous avez créé :
-
Pour Catalogues, choisissez le sous-catalogue que vous avez créé lorsque vous avez intégré votre compartiment de table. Par exemple,
.111122223333:s3tablescatalog -
Pour Catalogues, choisissez le sous-catalogue de votre compartiment de table. Par exemple,
.111122223333:s3tablescatalog/amzn-s3-demo-table-bucket
-
-
(Facultatif) Si vous avez choisi le sous-catalogue pour votre compartiment de table, effectuez l’une des opérations suivantes ou les deux :
Pour Bases de données, choisissez l’espace de noms de compartiments de table que vous avez créé.
Pour Tables, choisissez la table que vous avez créée dans votre compartiment de table, ou choisissez Toutes les tables.
-
Selon que vous avez choisi un catalogue ou un sous-catalogue et selon que vous avez ensuite choisi une base de données ou une table, vous pouvez définir des autorisations au niveau du catalogue, de la base de données ou de la table. Pour plus d’informations sur les autorisations Lake Formation, consultez Gestion des autorisations Lake Formation dans le Guide du développeur AWS Lake Formation.
Effectuez l’une des actions suivantes :
-
Pour Autorisations de catalogue, choisissez Super pour accorder à l’autre principal toutes les autorisations sur votre catalogue, ou choisissez des autorisations plus détaillées, telles que Décrire.
-
Pour Autorisations de base de données, vous ne pouvez pas choisir Super pour accorder à l’autre principal toutes les autorisations sur votre base de données. Choisissez plutôt des autorisations plus détaillées, telles que Décrire.
-
Pour Autorisations de table, choisissez Super pour accorder à l’autre principal toutes les autorisations sur votre table, ou choisissez des autorisations plus détaillées, telles que Sélectionner ou Décrire.
Note
Lorsque vous accordez des autorisations Lake Formation sur une ressource du catalogue de données à un compte externe ou directement à un principal IAM d’un autre compte, Lake Formation utilise le service AWS Resource Access Manager (AWS RAM) pour partager la ressource. Si le compte du bénéficiaire appartient à la même organisation que le compte du concédant, la ressource partagée est immédiatement accessible au bénéficiaire. Si le compte du bénéficiaire n’appartient pas à la même organisation, AWS RAM envoie une invitation au compte du bénéficiaire pour qu’il accepte ou rejette l’octroi de ressources. Ensuite, pour rendre la ressource partagée disponible, l’administrateur du lac de données du compte bénéficiaire doit utiliser la console AWS RAM ou l’AWS CLI pour accepter l’invitation. Pour plus d’informations sur le partage de données entre comptes, consultez Partage de données entre comptes dans Lake Formation dans le Guide du développeur AWS Lake Formation.
-
-
Choisissez Accorder.
Étape 4 : interroger des données avec SQL dans Athena
Vous pouvez interroger votre table avec SQL dans Athena. Athena prend en charge les requêtes en langage de définition de données (DDL), en langage de manipulation de données (DML) et en langage de requête de données (DQL) pour S3 Tables.
Vous pouvez accéder à la requête Athena depuis la console Amazon S3 ou via la console Amazon Athena.
La procédure suivante utilise la console Amazon S3 pour accéder à l’éditeur de requêtes Athena afin que vous puissiez interroger une table avec Amazon Athena.
Pour interroger une table
Connectez-vous à la AWS Management Console et ouvrez la console Amazon S3 à l’adresse https://console.aws.amazon.com/s3/
. -
Dans le volet de navigation de gauche, choisissez Compartiments de tables.
-
Sur la page Compartiments de table, choisissez le compartiment qui contient la table que vous souhaitez interroger.
-
Dans la page des détails du compartiment, choisissez le bouton radio en regard du nom de la table que vous souhaitez interroger.
-
Choisissez Interroger une table avec Athena.
-
La console Amazon Athena s’ouvre et l’éditeur de requêtes Athena apparaît avec un exemple de requête
SELECTchargé pour vous. Modifiez cette requête en fonction de votre cas d’utilisation. -
Pour exécuter la requête, choisissez ensuite Run (Exécuter).
Pour interroger une table
Ouvrez la console Athena à l’adresse https://console.aws.amazon.com/athena/
. -
Interrogez votre table. Voici un exemple de requête que vous pouvez modifier. Veillez à remplacer les
par vos propres informations.user input placeholdersSELECT * FROM "s3tablescatalog/amzn-s3-demo-table-bucket"."my_namespace"."my_table" LIMIT 10 -
Pour exécuter la requête, choisissez ensuite Run (Exécuter).