Connect a un EMR cluster Amazon dal tuo notebook - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Connect a un EMR cluster Amazon dal tuo notebook

Se ti connetti a un EMR cluster Amazon dal tuo notebook Jupyter in Studio, potresti dover eseguire una configurazione aggiuntiva. In particolare, la discussione seguente affronta due questioni:

  • Passare i parametri al comando di EMR connessione Amazon. Nei SparkMagic kernel, i parametri che passi al tuo comando di EMR connessione Amazon potrebbero non funzionare come previsto a causa delle differenze nel modo in cui Papermill passa i parametri e nel modo in cui SparkMagic riceve i parametri. La soluzione alternativa per ovviare a questa limitazione consiste nel passare i parametri come variabili di ambiente. Per ulteriori dettagli sul problema e sulla soluzione alternativa, consulta Passa i parametri al tuo comando di EMR connessione.

  • Trasferimento delle credenziali utente a Kerberos o a cluster LDAP Amazon con HTTP autenticazione di base. EMR In modalità interattiva, Studio richiede le credenziali in un modulo popup in cui è possibile inserire le credenziali di accesso. Nel tuo notebook pianificato non interattivo, devi passarle attraverso AWS Secrets Manager. Per ulteriori dettagli su come utilizzare i processi pianificati del notebook, AWS Secrets Manager consulta. Passa le credenziali utente al tuo cluster Amazon con autenticazione Kerberos o LDAP Basic HTTP Auth EMR

Passa i parametri al tuo comando di EMR connessione

Se utilizzi immagini con i kernel SparkMagic PySpark e Spark e desideri parametrizzare il comando di EMR connessione, fornisci i parametri nel campo Variabili di ambiente anziché nel campo Parametri nel modulo Create Job (nel menu a discesa Opzioni aggiuntive). Assicurati che il comando di EMR connessione nel notebook Jupyter passi questi parametri come variabili di ambiente. Ad esempio, supponiamo che tu passi cluster-id come variabile di ambiente quando crei il tuo processo. Il comando di EMR connessione dovrebbe essere simile al seguente:

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

Questa soluzione alternativa è necessaria per soddisfare i requisiti di Papermill SparkMagic e Papermill. Per quanto riguarda il contesto di base, il SparkMagic kernel si aspetta che il comando %%local magic accompagni tutte le variabili locali definite. Tuttavia, Papermill non passa il comando magic %%local con le sostituzioni. Per aggirare questa limitazione di Papermill, è necessario fornire i parametri come variabili di ambiente nel campo Variabili di ambiente.

Passa le credenziali utente al tuo cluster Amazon con autenticazione Kerberos o LDAP Basic HTTP Auth EMR

Per stabilire una connessione sicura a un EMR cluster Amazon che utilizza Kerberos o l'autenticazione HTTP Basic Auth, usi AWS Secrets Manager per passare le credenziali utente al comando di connessione. LDAP Per informazioni sulla creazione di un segreto in Secrets Manager, consulta la pagina Crea un segreto AWS Secrets Manager. Il tuo segreto deve contenere nome utente e password. Si passa il segreto con l'argomento --secrets, come illustrato nell'esempio seguente:

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

L'amministratore può impostare una politica di accesso flessibile utilizzando un metodo attribute-based-access-control (ABAC), che assegna l'accesso in base a tag speciali. È possibile configurare un accesso flessibile per creare un unico segreto per tutti gli utenti dell'account o un segreto per ogni utente. I seguenti esempi di codice illustrano questi scenari:

Crea un unico segreto per tutti gli utenti dell'account

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

Crea un segreto diverso per ogni utente

Puoi creare un segreto diverso per ogni utente utilizzando il tag PrincipleTag, come mostrato nell'esempio seguente:

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