Utilisation de compartiments de table gérés par AWS - Amazon Simple Storage Service

Utilisation de compartiments de table gérés par AWS

Les compartiments de table gérés par AWS sont des compartiments de table Amazon S3 spécialisés conçus pour stocker des tables gérées par AWS, tels que le journal des métadonnées S3 et les tables d’inventaire en temps réel. Contrairement aux compartiments de table gérés par le client que vous créez et gérez directement, les compartiments de table gérés par AWS sont automatiquement provisionnés par AWS lorsque vous configurez des fonctionnalités qui nécessitent des tables gérées par AWS. Lorsque des tables gérées sont créées, elles appartiennent à un espace de noms prédéfini basé sur le nom du compartiment source. Cet espace de noms prédéfini ne peut pas être modifié.

Chacune Compte AWS dispose d’un compartiment de table géré par AWS par région, conformément à la convention de dénomination aws-s3. Ce compartiment sert d’emplacement centralisé pour toutes les tables gérées associées aux ressources de votre compte dans cette région.

La table suivante compare les compartiments de table gérés par AWS avec les compartiments de table gérés par le client.

Fonctionnalité Compartiments de table gérés par AWS Compartiments de table gérés par le client
Création Créé automatiquement par Services AWS Vous les créez manuellement
Dénomination Utiliser une convention de dénomination standard (aws-s3) Vous définissez vos propres noms
Création de tables Seuls les Services AWS peuvent créer des tables Vous pouvez créer des tables
Contrôle de l’espace de noms Impossible de créer ou de supprimer des espaces de noms (toutes les tables appartiennent à un espace de noms fixe) Vous pouvez créer et supprimer des espaces de noms
Accès Accès en lecture seule Accès complet
Chiffrement Vous pouvez modifier les paramètres de chiffrement par défaut (SSE-S3) uniquement si vous avez chiffré la table initiale avec une clé gérée par le client AWS Key Management Service (AWS KMS) Vous pouvez définir le chiffrement par défaut au niveau du compartiment et le modifier à tout moment
Maintenance Géré par Services AWS Vous pouvez personnaliser la maintenance automatique au niveau du compartiment

Autorisations permettant d’utiliser des compartiments de table gérés par AWS et d’interroger des tables

Pour utiliser des compartiments de table gérés par AWS, vous devez disposer des autorisations nécessaires pour créer des compartiments et des tables gérées par AWS et pour spécifier les paramètres de chiffrement pour les tables gérées par AWS. Vous devez également disposer d’autorisations pour interroger les tables de vos compartiments de table gérés par AWS.

L’exemple de politique suivant vous permet de créer un compartiment de table géré par AWS via une configuration de métadonnées S3 :

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PermissionsToWorkWithMetadataTables", "Effect":"Allow", "Action":[ "s3:CreateBucketMetadataTableConfiguration", "s3tables:CreateTableBucket", "s3tables:CreateNamespace", "s3tables:CreateTable", "s3tables:GetTable", "s3tables:PutTablePolicy" "s3tables:PutTableEncryption", "kms:DescribeKey" ], "Resource":[ "arn:aws:s3:::bucket/amzn-s3-demo-source-bucket", "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3", "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3/table/*", "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef" ] } ] }

L’exemple de politique suivant vous permet d’interroger des tables dans des compartiments de table gérés par AWS :

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PermissionsToQueryMetadataTables", "Effect":"Allow", "Action":[ "s3tables:GetTable", "s3tables:GetTableData", "s3tables:GetTableMetadataLocation", "kms:Decrypt" ], "Resource":[ "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3", "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3/table/*", "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef" ] } ] }

Interrogation de tables dans des compartiments de table gérés par AWS

Vous pouvez interroger des tables gérées par AWS dans des compartiments de table gérés par AWS à l’aide de méthodes d’accès et de moteurs pris en charge par S3 Tables. Voici quelques exemples de requêtes.

Using standard SQL

L’exemple suivant illustre comment interroger les tables gérées par AWS à l’aide de la syntaxe SQL standard :

SELECT * FROM "s3tablescatalog/aws-s3"."b_amzn-s3-demo-source-bucket"."inventory" LIMIT 10;

L’exemple suivant montre comment joindre des tables gérées par AWS à vos propres tables :

SELECT * FROM "s3tablescatalog/aws-s3"."b_amzn-s3-demo-source-bucket"."inventory" a JOIN "s3tablescatalog/amzn-s3-demo-table-bucket"."my_namespace"."my_table" b ON a.key = b.key LIMIT 10;
Using Spark

L’exemple suivant montre comment interroger votre table avec Spark :

spark.sql(""" SELECT * FROM ice_catalog.inventory a JOIN ice_catalog.my_table b ON a.key = b.key """).show(10, true)

L’exemple suivant montre comment joindre des tables gérées par AWS à une autre table :

SELECT * FROM inventory a JOIN my_table b ON a.key = b.key LIMIT 10;

Chiffrement pour les compartiments de table gérés par AWS

Par défaut, les compartiments de table gérés par AWS sont chiffrés avec un chiffrement côté serveur à l’aide de clés gérées par Amazon S3 (SSE-S3). Après avoir créé votre compartiment de table géré par AWS, vous pouvez utiliser PutTableBucketEncryption pour définir le paramètre de chiffrement par défaut du compartiment de manière à utiliser le chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS).

Lors de la création des tables gérées par AWS, vous pouvez choisir de les chiffrer avec SSE-KMS. Si vous choisissez d’utiliser SSE-KMS, vous devez fournir une clé KMS gérée par le client dans la même région que votre compartiment de table géré par AWS. Vous pouvez définir le type de chiffrement de vos tables gérées par AWS uniquement lors de leur création. Une fois qu’une table gérée par AWS est créée, vous ne pouvez plus modifier ses paramètres de chiffrement.

Si vous souhaitez que le compartiment de table géré par AWS et les tables qui y sont stockées utilisent la même clé KMS, assurez-vous d’utiliser la même clé KMS que celle que vous avez utilisée pour chiffrer vos tables afin de chiffrer votre compartiment de table après sa création. Une fois que vous avez modifié les paramètres de chiffrement par défaut de votre compartiment de table afin qu’ils utilisent SSE-KMS, ces paramètres de chiffrement sont utilisés pour toutes les futures tables que vous créerez dans le compartiment.