Connessione a un cluster Amazon EMR dal notebook
Se ti connetti a un cluster Amazon EMR dal tuo notebook Jupyter in Studio, potresti dover eseguire una configurazione aggiuntiva. In particolare, la discussione seguente affronta due questioni:
-
Passaggio dei parametri al comando di connessione Amazon EMR. Nei kernel SparkMagic, i parametri passati al comando di connessione Amazon EMR 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 comando di connessione EMR.
-
Passaggio delle credenziali utente a cluster Amazon EMR autenticati con Kerberos, LDAP o HTTP Basic Auth. 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 Gestione dei segreti AWS. Per ulteriori dettagli su come utilizzare Gestione dei segreti AWS nei processi pianificati relativi al notebook, consulta Passa le credenziali utente al cluster Amazon EMR autenticato con Kerberos, LDAP o HTTP Basic Auth.
Passa i parametri al comando di connessione EMR
Se utilizzi immagini con kernel SparkMagic PySpark e Spark e desideri parametrizzare il comando di connessione EMR, fornisci i parametri nel campo Variabili di ambiente anziché nel campo Parametri nel modulo Crea processo (nel menu a discesa Opzioni aggiuntive). Assicurati che il comando di connessione EMR 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 connessione EMR dovrebbe essere simile a quello riportato di seguito:
%%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 SparkMagic e Papermill. Per quanto riguarda il contesto di fondo, il kernel SparkMagic si aspetta che il comando magic %%local 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 cluster Amazon EMR autenticato con Kerberos, LDAP o HTTP Basic Auth
Per stabilire una connessione sicura a un cluster Amazon EMR che utilizza l'autenticazione Kerberos, LDAP o HTTP Basic Auth, si utilizza Gestione dei segreti AWS per passare le credenziali utente al comando di connessione. Per informazioni sulla creazione di un segreto in Secrets Manager, consulta la pagina Crea un segreto Gestione dei segreti AWS. Il segreto deve contenere un nome utente e una 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 policy di accesso flessibile utilizzando un metodo di controllo degli accessi basato su attributi (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
Crea un segreto diverso per ogni utente
Puoi creare un segreto diverso per ogni utente utilizzando il tag PrincipleTag, come mostrato nell'esempio seguente: