Résoudre les problèmes courants liés à l'utilisation d'Amazon EMR avec AWS Lake Formation - Amazon EMR

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.

Résoudre les problèmes courants liés à l'utilisation d'Amazon EMR avec AWS Lake Formation

Cette section explique comment résoudre les problèmes courants liés à l'utilisation d'Amazon EMR avec AWS Lake Formation.

L'accès au lac de données n'est pas autorisé

Vous devez explicitement opter pour le filtrage des données sur les EMR clusters Amazon avant de pouvoir analyser et traiter les données de votre lac de données. En cas d'échec de l'accès aux données, un message Access is not allowed générique apparaît dans la sortie des entrées de votre bloc-notes.

Pour activer et autoriser le filtrage des données sur AmazonEMR, consultez la section Autoriser le filtrage des données sur Amazon EMR dans le manuel du AWS Lake Formation développeur pour obtenir des instructions.

Expiration de session

Le délai d'expiration de la session pour EMR Notebooks et Zeppelin est contrôlé par le paramètre IAM Role for Lake Formation. Maximum CLI/API session duration La valeur par défaut de ce paramètre est une heure. En cas d'expiration de session, le message suivant apparaît dans les entrées de votre bloc-notes lorsque vous essayez d'exécuter des SQL commandes Spark.

Error 401 HTTP ERROR: 401 Problem accessing /sessions/2/statements. Reason: JWT token included in request failed validation. Powered by Jetty:// 9.3.24.v20180605 org.springframework.web.client.HttpClientErrorException: 401 JWT token included in request failed validation…

Pour valider votre session, actualisez la page. Vous serez invité à vous authentifier à nouveau à l'aide de votre IdP et serez redirigé vers le bloc-notes. Vous pouvez continuer à exécuter des requêtes après vous être authentifié à nouveau.

Aucune autorisation pour l'utilisateur sur le tableau demandé

Lorsque vous tentez d'accéder à une table à laquelle vous n'avez pas accès, vous verrez l'exception suivante dans le résultat des entrées de votre bloc-notes lorsque vous essayez d'exécuter des SQL commandes Spark.

org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to fetch table table. Resource does not exist or requester is not authorized to access requested permissions. (Service: AWSGlue; Status Code: 400; Error Code: AccessDeniedException; Request ID: …

Pour accéder au tableau, vous devez accorder l'accès à l'utilisateur en mettant à jour les autorisations rattachées à ce tableau dans Lake Formation.

Interrogation de données entre comptes partagées avec Lake Formation

Lorsque vous utilisez Amazon EMR pour accéder aux données partagées avec vous à partir d'un autre compte, certaines bibliothèques Spark tentent de lancer un Glue:GetUserDefinedFunctions API appel. Les versions 1 et 2 des autorisations AWS RAM gérées ne prenant pas en charge cette action, le message d'erreur suivant s'affiche :

"ERROR: User: arn:aws:sts::012345678901:assumed-role/my-spark-role/i-06ab8c2b59299508a is not authorized to perform: glue:GetUserDefinedFunctions on resource: arn:exampleCatalogResource because no resource-based policy allows the glue:GetUserDefinedFunctions action"

Pour résoudre cette erreur, l'administrateur du lac de données qui a créé le partage de ressources doit mettre à jour les autorisations AWS RAM gérées associées au partage de ressources. La version 3 des autorisations gérées AWS RAM permet aux nœuds principaux d'effectuer l'action glue:GetUserDefinedFunctions.

Si vous créez un nouveau partage de ressources, Lake Formation applique la dernière version de l'autorisation AWS RAM gérée par défaut, et aucune action n'est requise de votre part. Pour activer l'accès aux données entre comptes pour les partages de ressources existants, vous devez mettre à jour les autorisations AWS RAM gérées vers la version 3.

Vous pouvez consulter les AWS RAM autorisations attribuées aux ressources partagées avec vous dans AWS RAM. Les autorisations suivantes sont incluses dans la version 3 :

Databases AWSRAMPermissionGlueDatabaseReadWriteForCatalog AWSRAMPermissionGlueDatabaseReadWrite Tables AWSRAMPermissionGlueTableReadWriteForCatalog AWSRAMPermissionGlueTableReadWriteForDatabase AllTables AWSRAMPermissionGlueAllTablesReadWriteForCatalog AWSRAMPermissionGlueAllTablesReadWriteForDatabase
Pour mettre à jour la version des autorisations AWS RAM gérées des partages de ressources existants

Vous (administrateur du lac de données) pouvez soit mettre à jour les autorisations AWS RAM gérées vers une version plus récente en suivant les instructions du guide de AWS RAM l'utilisateur, soit révoquer toutes les autorisations existantes pour le type de ressource et les réaccorder. Si vous révoquez les autorisations, le partage AWS RAM de AWS RAM ressources associé au type de ressource est supprimé. Lorsque vous réaccordez des autorisations, AWS RAM de nouveaux partages de ressources sont créés en y joignant la dernière version des autorisations AWS RAM gérées.

Insertion, création et modification de tableaux

L'insertion, la création ou la modification de tableaux dans des bases de données protégées par des politiques Lake Formation ne sont pas prises en charge. Lorsque vous effectuez ces opérations, vous verrez l'exception suivante dans le résultat des entrées de votre bloc-notes lorsque vous tenterez d'exécuter des SQL commandes Spark :

java.io.IOException: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: …

Pour plus d'informations, consultez Limitations de l'EMRintégration d'Amazon avec AWS Lake Formation.