Conecte-se a um EMR cluster da Amazon a partir do seu notebook - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Conecte-se a um EMR cluster da Amazon a partir do seu notebook

Se você se conectar a um EMR cluster da Amazon a partir do seu notebook Jupyter no Studio, talvez seja necessário realizar uma configuração adicional. Em particular, a discussão a seguir aborda duas questões:

  • Passando parâmetros para o comando de EMR conexão da Amazon. Nos SparkMagic kernels, os parâmetros que você passa para o comando de EMR conexão da Amazon podem não funcionar conforme o esperado devido às diferenças na forma como o Papermill passa os parâmetros e como SparkMagic os recebe. A solução alternativa para lidar com essa limitação é passar parâmetros como variáveis de ambiente. Para obter mais detalhes sobre o problema e a solução alternativa, consulte Passe parâmetros para seu comando de EMR conexão.

  • Passar credenciais de usuário para Kerberos ou clusters Amazon autenticados LDAP pelo Basic HTTP Auth. EMR No modo interativo, o Studio solicita credenciais em um formulário pop-up onde você pode inserir suas credenciais de login. Em seu caderno programado não interativo, você tem que passá-los pelo AWS Secrets Manager. Para obter mais detalhes sobre como usar o AWS Secrets Manager em seus trabalhos de notebook agendados, consultePasse as credenciais do usuário para o seu cluster Amazon autenticado pelo Kerberos ou pelo LDAP Basic HTTP Auth EMR.

Passe parâmetros para seu comando de EMR conexão

Se você estiver usando imagens com os kernels SparkMagic PySpark e Spark e quiser parametrizar seu comando de EMR conexão, forneça seus parâmetros no campo Variáveis de ambiente em vez do campo Parâmetros no formulário Create Job (no menu suspenso Additional Options). Certifique-se de que seu comando de EMR conexão no notebook Jupyter passe esses parâmetros como variáveis de ambiente. Por exemplo, suponha que você passe cluster-id como uma variável de ambiente ao criar seu trabalho. Seu comando de EMR conexão deve ter a seguinte aparência:

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

Você precisa dessa solução alternativa para atender aos requisitos da SparkMagic Papermill. Para o contexto em segundo plano, o SparkMagic kernel espera que o comando %%local mágico acompanhe todas as variáveis locais que você definir. No entanto, o Papermill não passa o comando %%local mágico com suas substituições. Para contornar essa limitação do Papermill, você deve fornecer seus parâmetros como variáveis de ambiente no campo Variáveis de ambiente.

Passe as credenciais do usuário para o seu cluster Amazon autenticado pelo Kerberos ou pelo LDAP Basic HTTP Auth EMR

Para estabelecer uma conexão segura com um EMR cluster da Amazon que usa autenticação Kerberos ou HTTP Basic AuthLDAP, você usa o AWS Secrets Manager para passar as credenciais do usuário para o seu comando de conexão. Para obter informações sobre como criar um segredo no Secrets Manager, consulte Criar um segredo do AWS Secrets Manager. Seu segredo deve conter seu nome de usuário e senha. Você passa o segredo com o --secrets argumento, conforme mostrado no exemplo a seguir:

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

Seu administrador pode configurar uma política de acesso flexível usando um método attribute-based-access-control (ABAC), que atribui acesso com base em tags especiais. Você pode configurar o acesso flexível para criar um único segredo para todos os usuários da conta ou um segredo para cada usuário. Os exemplos de código a seguir demonstram esses cenários:

Crie um único segredo para todos os usuários da conta

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

Crie um segredo diferente para cada usuário

É possível criar um segredo diferente para cada usuário usando a PrincipleTag tag, conforme mostrado no exemplo a seguir:

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