Connectez-vous à un EMR cluster Amazon depuis votre bloc-notes - Amazon SageMaker

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.

Connectez-vous à un EMR cluster Amazon depuis votre bloc-notes

Si vous vous connectez à un EMR cluster Amazon depuis 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 dans votre commande de EMR connexion Amazon. Dans SparkMagic les noyaux, les paramètres que vous transmettez à votre commande de EMR connexion Amazon peuvent ne pas fonctionner comme prévu en raison des différences entre la façon dont Papermill transmet les paramètres et SparkMagic reçoit les paramètres. 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, veuillez consulter Passez des paramètres à votre commande EMR de connexion.

  • Transmission des informations d'identification utilisateur à Kerberos ou à des clusters LDAP Amazon authentifiés par HTTP Basic Auth. 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 les tâches planifiées AWS Secrets Manager dans votre bloc-notes, consultezTransmettez les informations d'identification utilisateur à votre cluster Amazon authentifié par Kerberos ou HTTP Basic Auth LDAP EMR.

Passez des paramètres à votre commande EMR de connexion

Si vous utilisez des images avec les noyaux SparkMagic PySpark et Spark et que vous souhaitez paramétrer votre commande de EMR connexion, indiquez vos paramètres dans le champ Variables d'environnement plutôt que dans le champ Paramètres du formulaire Create Job (dans le menu déroulant Options supplémentaires). Assurez-vous que votre commande de EMR connexion 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 EMR connexion doit ressembler à ce qui suit :

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

Vous avez besoin de cette solution 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 authentifié par Kerberos ou HTTP Basic Auth LDAP EMR

Pour établir une connexion sécurisée à un EMR cluster Amazon qui utilise l'authentification Kerberos ou HTTP Basic AuthLDAP, vous utilisez la commande AWS Secrets Manager pour transmettre les informations d'identification utilisateur à votre commande de connexion. Pour plus d'informations sur la création d'un secret Secrets Manager, veuillez consulter 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 politique d'accès flexible à l'aide d'une méthode attribute-based-access-control (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

{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : {"AWS" : "arn:aws:iam::AWS_ACCOUNT_ID:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"}, "Action" : "secretsmanager:GetSecretValue", "Resource" : [ "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes123-1a2b3c", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes456-4d5e6f", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID: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 :

{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : {"AWS" : "arn:aws:iam::AWS_ACCOUNT_ID: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:AWS_ACCOUNT_ID:secret:aes123-1a2b3c", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes456-4d5e6f", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes789-7g8h9i" ] } ] }