Utilisation d'Amazon S3 Tables avec des services AWS d'analyse - Amazon Simple Storage Service

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.

Utilisation d'Amazon S3 Tables avec des services AWS d'analyse

Pour rendre les tables de votre compte accessibles par les services AWS d'analyse, vous devez intégrer vos compartiments de tables Amazon S3 à Amazon SageMaker Lakehouse. Cette intégration permet aux services AWS d'analyse de découvrir et d'accéder automatiquement aux données de votre table. Vous pouvez utiliser cette intégration pour utiliser vos tables dans les services suivants :

Note

Cette intégration utilise les AWS Lake Formation services AWS Glue et peut entraîner des coûts de AWS Glue demande et de stockage. Pour plus d’informations, consultez Tarification d’AWS Glue.

Une tarification supplémentaire s’applique à l’exécution de requêtes sur vos tables S3. Pour plus d'informations, consultez les informations tarifaires du moteur de requête que vous utilisez.

Fonctionnement de l’intégration

Lorsque vous créez un compartiment de table dans la console, Amazon S3 lance les actions suivantes pour intégrer les compartiments de table dans la région que vous avez sélectionnée aux services AWS d'analyse :

  1. Crée un nouveau rôle de service AWS Identity and Access Management (IAM) qui permet à Lake Formation d'accéder à tous vos compartiments de table.

  2. Grâce à ce rôle de service, Lake Formation enregistre des compartiments de tables dans la région actuelle. Cela permet à Lake Formation de gérer l’accès, les autorisations et la gouvernance pour tous les compartiments de tables actuels et futurs de cette région.

  3. Ajoute le s3tablescatalog catalogue AWS Glue Data Catalog à la région actuelle. L'ajout du s3tablescatalog catalogue permet de renseigner tous vos compartiments de tables, espaces de noms et tables dans le catalogue de données.

Note

Ces actions sont automatisées via la console Amazon S3. Si vous effectuez cette intégration par programmation, vous devez effectuer toutes ces actions manuellement.

Vous intégrez vos compartiments de table une fois par AWS région. Une fois l'intégration terminée, tous les compartiments de tables, espaces de noms et tables actuels et futurs sont ajoutés AWS Glue Data Catalog dans cette région.

L'illustration suivante montre comment le s3tablescatalog catalogue remplit automatiquement les compartiments de tables, les espaces de noms et les tables de la région actuelle en tant qu'objets correspondants dans le catalogue de données. Les compartiments de table sont remplis sous forme de sous-catalogues. Les espaces de noms d'un bucket de tables sont renseignés sous forme de bases de données dans leurs sous-catalogues respectifs. Les tables sont renseignées en tant que tables dans leurs bases de données respectives.

Les manières dont les ressources des tables sont représentées AWS Glue Data Catalog.
Comment fonctionnent les autorisations

Nous vous recommandons d'intégrer vos compartiments de tables aux services AWS d'analyse afin de pouvoir utiliser les données de vos tables dans tous les services qui les utilisent AWS Glue Data Catalog comme magasin de métadonnées. L'intégration permet un contrôle d'accès précis. AWS Lake Formation Cette approche de sécurité signifie qu'en plus des autorisations AWS Identity and Access Management (IAM), vous devez accorder à votre compte principal IAM Lake Formation des autorisations sur vos tables avant de pouvoir travailler avec elles.

Il existe deux principaux types d'autorisations dans AWS Lake Formation :

  • Les autorisations d'accès aux métadonnées contrôlent la capacité à créer, lire, mettre à jour et supprimer des bases de données et des tables de métadonnées dans le catalogue de données.

  • Les autorisations d'accès aux données sous-jacentes contrôlent la capacité à lire et à écrire des données dans les emplacements Amazon S3 sous-jacents vers lesquels pointent les ressources du catalogue de données.

Lake Formation utilise une combinaison de son propre modèle d'autorisations et du modèle d'autorisations IAM pour contrôler l'accès aux ressources du catalogue de données et aux données sous-jacentes :

  • Pour qu'une demande d'accès aux ressources du catalogue de données ou aux données sous-jacentes aboutisse, elle doit passer les contrôles d'autorisation par IAM et Lake Formation.

  • Les autorisations IAM contrôlent l'accès à la Formation AWS Glue APIs et aux ressources du lac, tandis que les autorisations Lake Formation contrôlent l'accès aux ressources du catalogue de données, aux sites Amazon S3 et aux données sous-jacentes.

Les autorisations de Lake Formation ne s'appliquent que dans la Région dans laquelle elles ont été accordées, et un principal doit être autorisé par un administrateur de lac de données ou un autre directeur disposant des autorisations nécessaires pour obtenir les autorisations de Lake Formation.

Pour plus d’informations, consultez Octroi d’autorisations Lake Formation du Guide du développeur AWS Lake Formation .

Assurez-vous de suivre les étapes décrites Conditions préalables à l’intégration et Intégration de compartiments de tables aux services d' AWS analyse de disposer des autorisations appropriées pour accéder aux ressources de AWS Glue Data Catalog votre table et pour utiliser les services d' AWS analyse.

Important

Si vous n'êtes pas l'utilisateur qui a effectué l'intégration des compartiments de tables aux services AWS d'analyse pour votre compte, vous devez disposer des autorisations Lake Formation nécessaires sur la table. Pour de plus amples informations, veuillez consulter Octroi d'une autorisation sur une table ou une base de données.

Conditions préalables à l’intégration

Les conditions préalables suivantes sont requises pour intégrer des compartiments de tables aux services d' AWS analyse :

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 de vos colonnes sont tous en minuscules. Si le nom ou la définition de votre table contient des majuscules, le tableau n'est pas pris 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' AWS analyse tels qu'Amazon Athena, même si vos compartiments de tables sont intégrés aux AWS services d'analyse.

Si la définition de votre table contient des majuscules, le message d'erreur suivant s'affiche lorsque vous exécutez une SELECT requête dans Athena : « GENERIC_INTERNAL_ERROR : Get table request failed : com.amazonaws.services.glue.model. ValidationException: ressource de fédération non prise en charge - Noms de table ou de colonne non valides. »

Intégration de compartiments de tables aux services d' AWS analyse

Cette intégration doit être effectuée une fois par AWS région.

Important

L'intégration des services d' AWS analyse utilise désormais l'WithPrivilegedAccessoption de l'opération d'API registerResource Lake Formation pour enregistrer des buckets de tables S3. L'intégration crée également désormais le s3tablescatalog catalogue dans le AWS Glue Data Catalog en utilisant l'AllowFullTableExternalDataAccessoption dans l'opération CreateCatalog AWS Glue API.

Si vous avez configuré l'intégration avec la version préliminaire, vous pouvez continuer à utiliser votre intégration actuelle. Cependant, le processus d'intégration mis à jour permet d'améliorer les performances. Nous vous recommandons donc de procéder à la migration. Pour migrer vers l'intégration mise à jour, consultezMigration vers le processus d'intégration mis à jour.

  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le volet de navigation de gauche, choisissez Compartiments de tables.

  3. Choisissez Créer un compartiment de tables.

    La page Créer un compartiment de tables s’ouvre.

  4. Entrez le nom du bucket Table et assurez-vous que la case Activer l'intégration est cochée.

  5. Choisissez Créer un compartiment de tables. Amazon S3 essaiera d’intégrer automatiquement vos compartiments de tables dans cette région.

La première fois que vous intégrez des compartiments de table dans une région, Amazon S3 crée un nouveau rôle de service IAM en votre nom. Ce rôle permet à Lake Formation d’accéder à tous les compartiments de tables de votre compte et de fédérer l’accès à vos tables dans le AWS Glue Data Catalog.

Pour intégrer des seaux de table à l'aide du AWS CLI

Les étapes suivantes montrent comment utiliser le AWS CLI pour intégrer des compartiments de table. Pour suivre ces étapes, remplacez-les user input placeholders par vos propres informations.

  1. Créez un compartiment de tables.

    aws s3tables create-table-bucket \ --region us-east-1 \ --name amzn-s3-demo-table-bucket
  2. Créez un rôle de service IAM qui permet à Lake Formation d’accéder à vos ressources de table.

    1. Créez un fichier appelé Role-Trust-Policy.json contenant la politique de confiance suivante :

      { "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationDataAccessPolicy", "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext", "sts:SetSourceIdentity" ], "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } } ] }

      Créez le rôle de service IAM à l'aide de la commande suivante :

      aws iam create-role \ --role-name S3TablesRoleForLakeFormation \ --assume-role-policy-document file://Role-Trust-Policy.json
    2. Créez un fichier appelé LF-GluePolicy.json contenant la politique suivante :

      { "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationPermissionsForS3ListTableBucket", "Effect": "Allow", "Action": [ "s3tables:ListTableBuckets" ], "Resource": [ "*" ] }, { "Sid": "LakeFormationDataAccessPermissionsForS3TableBucket", "Effect": "Allow", "Action": [ "s3tables:CreateTableBucket", "s3tables:GetTableBucket", "s3tables:CreateNamespace", "s3tables:GetNamespace", "s3tables:ListNamespaces", "s3tables:DeleteNamespace", "s3tables:DeleteTableBucket", "s3tables:CreateTable", "s3tables:DeleteTable", "s3tables:GetTable", "s3tables:ListTables", "s3tables:RenameTable", "s3tables:UpdateTableMetadataLocation", "s3tables:GetTableMetadataLocation", "s3tables:GetTableData", "s3tables:PutTableData" ], "Resource": [ "arn:aws:s3tables:us-east-1:111122223333:bucket/*" ] } ] }

      Associez la politique au rôle à l'aide de la commande suivante :

      aws iam put-role-policy \ --role-name S3TablesRoleForLakeFormation \ --policy-name LakeFormationDataAccessPermissionsForS3TableBucket \ --policy-document file://LF-GluePolicy.json
  3. Créez un fichier appelé input.json contenant les éléments suivants :

    { "ResourceArn": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "WithFederation": true, "RoleArn": "arn:aws:iam::111122223333:role/S3TablesRoleForLakeFormation" }

    Enregistrez des seaux de table auprès de Lake Formation à l'aide de la commande suivante :

    aws lakeformation register-resource \ --region us-east-1 \ --with-privileged-access \ --cli-input-json file://input.json
  4. Créez un fichier appelé catalog.json contenant le catalogue suivant :

    { "Name": "s3tablescatalog", "CatalogInput": { "FederatedCatalog": { "Identifier": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "ConnectionName": "aws:s3tables" }, "CreateDatabaseDefaultPermissions":[], "CreateTableDefaultPermissions":[], "AllowFullTableExternalDataAccess": "True" } }

    Créez le s3tablescatalog catalogue à l'aide de la commande suivante. La création de ce catalogue remplit le AWS Glue Data Catalog avec des objets correspondant à des compartiments de tables, à des espaces de noms et à des tables.

    aws glue create-catalog \ --region us-east-1 \ --cli-input-json file://catalog.json
  5. Vérifiez que le s3tablescatalog catalogue a été ajouté à AWS Glue l'aide de la commande suivante :

    aws glue get-catalog --catalog-id s3tablescatalog

Le processus d'intégration des services d' AWS analyse a été mis à jour. Si vous avez configuré l'intégration avec la version préliminaire, vous pouvez continuer à utiliser votre intégration actuelle. Cependant, le processus d'intégration mis à jour améliore les performances. Nous vous recommandons donc de procéder à la migration en suivant les étapes suivantes. Pour plus d'informations sur le processus de migration ou d'intégration, consultez la section Création d'un catalogue de tables Amazon S3 AWS Glue Data Catalog dans le manuel du AWS Lake Formation développeur.

  1. Ouvrez la AWS Lake Formation console sur https://console.aws.amazon.com/lakeformation/ et connectez-vous en tant qu'administrateur du lac de données. Pour plus d'informations sur la création d'un administrateur de lac de données, voir Création d'un administrateur de lac de données dans le guide du AWS Lake Formation développeur.

  2. Supprimez votre s3tablescatalog catalogue en procédant comme suit :

    • Dans le volet de navigation de gauche, sélectionnez Catalogues.

    • Sélectionnez le bouton d'option situé à côté du s3tablescatalog catalogue dans la liste des catalogues. Dans le menu Actions, sélectionnez Delete (Supprimer).

  3. Désenregistrez l'emplacement des données du s3tablescatalog catalogue en procédant comme suit :

    • Dans le volet de navigation de gauche, accédez à la section Administration, puis choisissez Data lake locations.

    • Sélectionnez le bouton d'option à côté de l'emplacement du lac de s3tablescatalog données, par exemple,s3://tables:region:account-id:bucket/*.

    • Dans le menu Actions, choisissez Supprimer.

    • Dans la boîte de dialogue de confirmation qui apparaît, choisissez Supprimer.

  4. Maintenant que vous avez supprimé l'emplacement de votre s3tablescatalog catalogue et de votre lac de données, vous pouvez suivre les étapes pour intégrer vos compartiments de tables aux services AWS d'analyse en utilisant le processus d'intégration mis à jour.

Note

Si vous souhaitez utiliser des tables chiffrées SSE-KMS dans des services AWS d'analyse intégrés, le rôle que vous utilisez doit être autorisé à utiliser votre AWS KMS clé pour les opérations de chiffrement. Pour de plus amples informations, veuillez consulter Octroi aux principaux IAM des autorisations leur permettant de travailler avec des tables chiffrées dans les services d'analyse intégrés AWS.

Accorder des autorisations à Lake Formation sur les ressources de votre table

Une fois vos compartiments de tables intégrés aux services AWS d'analyse, Lake Formation gère l'accès aux ressources de vos tables. Lake Formation utilise son propre modèle d'autorisations (autorisations Lake Formation) qui permet un contrôle d'accès précis pour les ressources du catalogue de données. Lake Formation exige que chaque principal IAM (utilisateur ou rôle) soit autorisé à effectuer des actions sur les ressources gérées par Lake Formation. Pour plus d’informations, consultez Octroi d’autorisations Lake Formation du Guide du développeur AWS Lake Formation . Pour plus d'informations sur le partage de données entre comptes, voir Partage de données entre comptes dans Lake Formation dans le Guide du AWS Lake Formation développeur.

Avant que les responsables d'IAM puissent accéder aux tables des services AWS d'analyse, vous devez leur accorder des autorisations Lake Formation sur ces ressources.

Note

Si vous êtes l'utilisateur qui a effectué l'intégration du bucket de tables, vous disposez déjà des autorisations Lake Formation pour accéder à vos tables. Si vous êtes le seul directeur à accéder à vos tables, vous pouvez ignorer cette étape. Il vous suffit d'accorder des autorisations Lake Formation sur vos tables aux autres principaux IAM. Cela permet aux autres principaux d'accéder à la table lors de l'exécution de requêtes. Pour de plus amples informations, veuillez consulter Octroi d'une autorisation sur une table ou une base de données.

Vous devez accorder aux autres responsables IAM des autorisations Lake Formation sur les ressources de votre table pour travailler avec eux dans les services suivants :

  • Amazon Redshift

  • Amazon Data Firehose

  • Amazon QuickSight

  • Amazon Athena

Octroi d'une autorisation sur une table ou une base de données

Vous pouvez accorder à une Lake Formation principale des autorisations sur une table ou une base de données dans un bucket de tables, soit par le biais de la console Lake Formation, soit du AWS CLI.

Note

Lorsque vous accordez des autorisations sur une ressource du catalogue de données à un compte externe ou directement à un responsable 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 donateur, 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 la subvention 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 AWS RAM console ou AWS CLI accepter l'invitation. Pour plus d'informations sur le partage de données entre comptes, voir Partage de données entre comptes dans Lake Formation dans le guide du AWS Lake Formation développeur.

Console
  1. Ouvrez la AWS Lake Formation console sur https://console.aws.amazon.com/lakeformation/ et connectez-vous en tant qu'administrateur du lac de données. Pour plus d'informations sur la création d'un administrateur de lac de données, voir Création d'un administrateur de lac de données dans le guide du AWS Lake Formation développeur.

  2. Dans le volet de navigation, choisissez Autorisations relatives aux données, puis choisissez Grant.

  3. Sur la page Accorder des autorisations, sous Principaux, effectuez l'une des opérations suivantes :

    • Pour Amazon Athena ou Amazon Redshift, choisissez les utilisateurs et les rôles IAM, puis sélectionnez le principal IAM que vous utilisez pour les requêtes.

    • Pour Amazon Data Firehose, choisissez les utilisateurs et les rôles IAM, puis sélectionnez le rôle de service que vous avez créé pour le streaming vers les tables.

    • Pour QuickSight, choisissez des utilisateurs et des groupes SAML, puis entrez le nom de ressource Amazon (ARN) de votre utilisateur QuickSight administrateur.

  4. Sous Balises LF ou ressources de catalogue, choisissez Ressources de catalogue de données nommées.

  5. Pour les catalogues, choisissez le sous-catalogue que vous avez créé lorsque vous avez intégré votre compartiment de table, par exemple,. account-id:s3tablescatalog/amzn-s3-demo-bucket

  6. Pour Bases de données, choisissez l’espace de noms de compartiments de tables S3 que vous avez créé.

  7. (Facultatif) Pour Tables, choisissez la table S3 que vous avez créée dans votre compartiment de tables.

    Note

    Si vous créez une nouvelle table dans l'éditeur de requêtes Athena, ne sélectionnez pas de table.

  8. Effectuez l’une des actions suivantes :

    • Si vous avez spécifié une table à l'étape précédente, choisissez Super pour les autorisations de table.

    • Si vous n'avez pas spécifié de table à l'étape précédente, accédez à Autorisations de base de données. Pour le partage de données entre comptes, 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 Describe.

  9. Choisissez Accorder.

CLI
  1. Assurez-vous d'exécuter les AWS CLI commandes suivantes en tant qu'administrateur du lac de données. Pour plus d'informations, consultez la section Création d'un administrateur de lac de données dans le guide du AWS Lake Formation développeur.

  2. Exécutez la commande suivante pour accorder des autorisations Lake Formation sur la table du compartiment de tables S3 à un principal IAM pour lui permettre d’accéder à la table. Pour utiliser cet exemple, remplacez user input placeholders par vos propres informations.

    aws lakeformation grant-permissions \ --region us-east-1 \ --cli-input-json \ '{ "Principal": { "DataLakePrincipalIdentifier": "user or role ARN, for example, arn:aws:iam::account-id:role/example-role" }, "Resource": { "Table": { "CatalogId": "account-id:s3tablescatalog/amzn-s3-demo-bucket", "DatabaseName": "S3 table bucket namespace, for example, test_namespace", "Name": "S3 table bucket table name, for example test_table" } }, "Permissions": [ "ALL" ] }'