View a markdown version of this page

Connexion à un cluster Amazon EMR à partir de votre bloc-notes - Amazon SageMaker AI

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.

Connexion à un cluster Amazon EMR à partir de votre bloc-notes

Si vous vous connectez à un cluster Amazon EMR à partir de votre bloc-notes Jupyter dans Studio, vous devrez peut-être effectuer une configuration supplémentaire. La discussion suivante aborde en particulier deux questions :

  • Transmission de paramètres à votre commande de connexion EMR dans votre bloc-notes. Dans SparkMagic les noyaux, les paramètres que vous transmettez à votre commande de connexion Amazon EMR peuvent ne pas fonctionner comme prévu en raison de différences dans la façon dont Papermill transmet les paramètres et reçoit les paramètres. SparkMagic La solution de contournement pour remédier à cette limitation consiste à transmettre des paramètres sous forme de variables d'environnement. Pour plus d’informations sur le problème et la solution de contournement, consultez Transmettez des paramètres à votre commande de connexion EMR.

  • Transmission des informations d'identification utilisateur aux clusters Kerberos, LDAP ou HTTP Basic Auth-authenticated Amazon EMR. En mode interactif, Studio demande des informations d'identification dans un formulaire contextuel dans lequel vous pouvez saisir vos informations d'identification de connexion. Dans votre bloc-notes planifié non interactif, vous devez les transmettre via AWS Secrets Manager. Pour plus de détails sur la façon d'utiliser le AWS Secrets Manager dans vos tâches de bloc-notes planifiées, consultezTransmettez les informations d'identification utilisateur à votre cluster Amazon EMR Kerberos, LDAP ou HTTP Basic Auth-authenticated.

Transmettez des paramètres à votre commande de connexion EMR

Si vous utilisez des images avec les noyaux SparkMagic PySpark et Spark et que vous souhaitez paramétrer votre commande de connexion EMR, indiquez vos paramètres dans le champ Variables d'environnement au lieu du champ Paramètres du formulaire Create Job (dans le menu déroulant Options supplémentaires). Assurez-vous que votre commande de connexion EMR dans le bloc-notes Jupyter transmet ces paramètres en tant que variables d'environnement. Supposons, par exemple, que vous transmettiez cluster-id en tant que variable d’environnement lorsque vous créez votre tâche. Votre commande de connexion EMR devrait ressembler à l'exemple suivant :

%%local import os
%sm_analytics emr connect —cluster-id {os.getenv('cluster_id')} --auth-type None

Vous avez besoin de cette solution de contournement pour répondre aux exigences de Papermill SparkMagic et de Papermill. Pour le contexte d'arrière-plan, le SparkMagic noyau s'attend à ce que la commande %%local magique accompagne toutes les variables locales que vous définissez. Cependant, Papermill ne transmet pas la commande magique %%local avec vos remplacements. Pour contourner cette limitation de Papermill, vous devez fournir vos paramètres sous forme de variables d'environnement dans le champ Environment variables (Variables d'environnement).

Transmettez les informations d'identification utilisateur à votre cluster Amazon EMR Kerberos, LDAP ou HTTP Basic Auth-authenticated

Pour établir une connexion sécurisée à un cluster Amazon EMR qui utilise l'authentification Kerberos, LDAP ou HTTP Basic Auth, vous utilisez le AWS Secrets Manager pour transmettre les informations d'identification de l'utilisateur à votre commande de connexion. Pour plus d’informations sur la création d’un secret Secrets Manager, consultez Création d’un secret AWS Secrets Manager. Votre secret doit contenir votre nom d’utilisateur et votre mot de passe. Vous transmettez le secret avec l’argument --secrets, comme le montre l’exemple suivant :

%sm_analytics emr connect --cluster-id j_abcde12345 --auth Kerberos --secret aws_secret_id_123

Votre administrateur peut définir une stratégie d'accès flexible à l'aide d'une méthode de contrôle d'accès par attributs (ABAC), qui attribue l'accès en fonction de balises spéciales. Vous pouvez configurer un accès flexible afin de créer un secret unique pour tous les utilisateurs du compte ou un secret pour chaque utilisateur. Les exemples de code suivants illustrent ces scénarios :

Créer un secret unique pour tous les utilisateurs du compte

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345" }, "Action": "secretsmanager:GetSecretValue", "Resource": [ "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes123-1a2b3c", "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes456-4d5e6f", "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes789-7g8h9i" ] } ] }

Créer un secret différent pour chaque utilisateur

Vous pouvez créer un secret différent pour chaque utilisateur à l’aide de la balise PrincipleTag, comme illustré dans l’exemple suivant :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345" }, "Condition": { "StringEquals": { "aws:ResourceTag/user-identity": "${aws:PrincipalTag/user-identity}" } }, "Action": "secretsmanager:GetSecretValue", "Resource": [ "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes123-1a2b3c", "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes456-4d5e6f", "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes789-7g8h9i" ] } ] }