Intégration d’Amazon S3 Tables aux services d’analytique AWS - Amazon Simple Storage Service

Intégration d’Amazon S3 Tables aux services d’analytique AWS

Cette rubrique décrit les prérequis et les procédures nécessaires pour intégrer vos compartiments de table Amazon S3 aux services d’analytique AWS. Pour un aperçu du fonctionnement de l’intégration, consultez Présentation de l’intégration de S3 Tables.

Note

Cette intégration utilise les services AWS Glue et AWS Lake Formation, et peut entraîner des coûts de demande et de stockage AWS Glue. 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 de tarification du moteur de requêtes que vous utilisez.

Conditions préalables à l’intégration

Les prérequis suivants sont nécessaires pour intégrer les compartiments de table aux services d’analytique AWS :

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. »

Intégration des compartiments de tables avec les services d’analytique AWS

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

Important

L’intégration des services d’analytique AWS utilise désormais l’option WithPrivilegedAccess de l’opération d’API registerResource Lake Formation pour enregistrer des compartiments de table S3. L’intégration crée également désormais le catalogue s3tablescatalog dans le AWS Glue Data Catalog en utilisant l’option AllowFullTableExternalDataAccess dans l’opération d’API CreateCatalog AWS Glue.

Si vous avez configuré l’intégration avec la version préliminaire, vous pouvez continuer à utiliser votre intégration actuelle. Cependant, étant donné que le processus d’intégration mis à jour améliore les performances, nous vous recommandons de procéder à la migration. Pour migrer vers l’intégration mise à jour, consultez Migration vers le processus d’intégration mis à jour.

  1. Ouvrez la console Amazon S3 sur 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. Saisissez un Nom du compartiment de table et veillez à ce que la case Activer l’intégration soit 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 compartiments de tables à l’aide de l’AWS CLI

Les étapes suivantes montrent comment utiliser l’AWS CLI pour intégrer des compartiments de table. Pour utiliser 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 Role-Trust-Policy.json contenant la stratégie d’approbation suivante :

      JSON
      { "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 LF-GluePolicy.json contenant la stratégie suivante :

      JSON
      { "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/*" ] } ] }

      Attachez la stratégie au rôle en utilisant 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 input.json contenant ce qui suit :

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

    Enregistrez les compartiments de table auprès de Lake Formation en utilisant 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 catalog.json contenant le catalogue qui suit :

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

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

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

    aws glue get-catalog --catalog-id s3tablescatalog

Le processus d’intégration des services d’analytique AWS 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éliorant les performances, nous vous recommandons de procéder à la migration en suivant les étapes ci-dessous. Pour plus d’informations sur le processus de migration ou d’intégration, consultez Création d’un catalogue d’Amazon S3 Tables dans le AWS Glue Data Catalog dans le Guide du développeur AWS Lake Formation.

  1. 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 Guide du développeur AWS Lake Formation.

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

    • Dans le volet de navigation de gauche, choisissez Catalogues.

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

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

    • Dans le volet de navigation de gauche, accédez à la section Administration, puis choisissez Emplacements de lac de données.

    • Choisissez le bouton d’option en regard de l’emplacement du lac de données s3tablescatalog, par exemple s3://tables:region:account-id:bucket/*.

    • Dans le menu Actions, choisissez Supprimer.

    • Dans la boîte de dialogue de confirmation qui s’affiche, choisissez Supprimer.

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

Note

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

Une fois que vous avez intégré, votre principal IAM a obtenu les autorisations Lake Formation pour accéder à vos tables. Si vous souhaitez autoriser d’autres principaux IAM à accéder aux tables, vous devez accorder des autorisations Lake Formation sur vos tables à ces principaux. Pour plus d’informations, consultez Gestion de l’accès à une table ou à une base de données avec Lake Formation.