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á.
Perfis de runtime para etapas ao Amazon EMR
Uma função de tempo de execução é uma função AWS Identity and Access Management (IAM) que você pode especificar ao enviar um trabalho ou uma consulta para um cluster do Amazon EMR. O trabalho ou consulta que você envia ao seu cluster do Amazon EMR usa a função de tempo de execução para acessar AWS recursos, como objetos no Amazon S3. Você pode especificar perfis de runtime com o Amazon EMR para trabalhos do Spark e do Hive.
Também é possível especificar perfis de runtime ao se conectar aos clusters do Amazon EMR no Amazon SageMaker AI e ao anexar um Amazon EMR Studio Workspace a um cluster do EMR. Para obter mais informações, consulte Conecte-se a um cluster do Amazon EMR a partir do SageMaker AI Studio e. Execução de um Workspace do EMR Studio com um perfil de runtime
Antigamente, os clusters do Amazon EMR executavam trabalhos ou consultas do Amazon EMR com permissões com base na política do IAM anexada ao perfil de instância usado para iniciar o cluster. Assim, as políticas precisavam conter a união de todas as permissões para todos os trabalhos e consultas executados em um cluster do Amazon EMR. Com os perfis de runtime, já é possível gerenciar o controle de acesso para cada trabalho ou consulta individualmente, em vez de compartilhar o perfil de instância do Amazon EMR do cluster.
Nos clusters do Amazon EMR com funções de tempo de execução, você também pode aplicar controle de acesso AWS Lake Formation baseado às tarefas e consultas do Spark, Hive e Presto em seus lagos de dados. Para saber mais sobre como se integrar com AWS Lake Formation, consulteIntegre o Amazon EMR com AWS Lake Formation.
nota
Quando você especifica uma função de tempo de execução para uma etapa do Amazon EMR, os trabalhos ou consultas que você envia só podem acessar AWS recursos que as políticas anexadas à função de tempo de execução permitem. Esses trabalhos e consultas não podem acessar o Serviço de Metadados de Instância nas EC2 instâncias do cluster nem usar o perfil de EC2 instância do cluster para acessar quaisquer AWS recursos.
Pré-requisitos para iniciar um cluster do Amazon EMR com um perfil de runtime
Tópicos
Etapa 1: definir configurações de segurança no Amazon EMR
Use a estrutura JSON a seguir para criar uma configuração de segurança no AWS Command Line Interface (AWS CLI) e EnableApplicationScopedIAMRole
defina true
como. Para obter mais informações sobre configurações de segurança, consulte Uso de configurações de segurança para definir a segurança do cluster do Amazon EMR.
{ "AuthorizationConfiguration":{ "IAMConfiguration":{ "EnableApplicationScopedIAMRole":true } } }
É recomendável habilitar sempre as opções de criptografia em trânsito na configuração de segurança, para que os dados transferidos pela Internet sejam criptografados, em vez de em texto sem formatação. Você pode ignorar essas opções se não quiser se conectar aos clusters do Amazon EMR com funções de tempo de execução do Runtime Studio ou SageMaker do EMR Studio. Para configurar a criptografia de dados, consulte Configure data encryption.
Como alternativa, você pode criar uma configuração de segurança com configurações personalizadas usando o AWS Management Console
Etapa 2: configurar um perfil de EC2 instância para o cluster do Amazon EMR
Os clusters do Amazon EMR usam a função de perfil de EC2 instância da Amazon para assumir as funções de tempo de execução. Para usar perfis de runtime com etapas do Amazon EMR, adicione as políticas a seguir ao perfil do IAM que você planeja usar como perfil do perfil de instância. Para adicionar políticas a um perfil do IAM ou editar uma política em linha ou gerenciada já existente, consulte Adicionar e remover permissões de identidade do IAM.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowRuntimeRoleUsage", "Effect":"Allow", "Action":[ "sts:AssumeRole", "sts:TagSession" ], "Resource":[
<runtime-role-ARN>
] } ] }
Etapa3: configurar uma política de confiança
Para cada perfil do IAM que você pretende usar como perfil de runtime, defina a política de confiança a seguir, substituindo EMR_EC2_DefaultRole
pelo perfil do perfil de instância. Para modificar a política de confiança de um perfil do IAM, consulte Modificar a política de confiança de um perfil.
{ "Sid":"AllowAssumeRole", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::
<AWS_ACCOUNT_ID>
:role/EMR_EC2_DefaultRole" }, "Action":"sts:AssumeRole" }
Iniciar um cluster do Amazon EMR com controle de acesso baseado em perfis
Após definir suas configurações, você pode iniciar um cluster do Amazon EMR com a configuração de segurança de Etapa 1: definir configurações de segurança no Amazon EMR. Para usar funções de tempo de execução com etapas do Amazon EMR, use o rótulo de lançamento emr-6.7.0
ou posterior e selecione Hive, Spark ou ambos como seu aplicativo de cluster. CloudWatchAgent é compatível com Runtime Role Clusters para EMR 7.6 e versões posteriores. Para se conectar a partir do SageMaker AI Studio, use release emr-6.9.0
ou posterior e selecione Livy, Spark, Hive ou Presto como seu aplicativo de cluster. Para obter instruções sobre como iniciar seu cluster, consulte Como especificar uma configuração de segurança para um cluster do Amazon EMR.
Enviar trabalhos do Spark usando as etapas do Amazon EMR
Veja a seguir um exemplo de como executar o HdfsTest exemplo incluído no Apache Spark. Essa chamada de API só terá êxito se o perfil de runtime fornecido do Amazon EMR puder acessar o S3_LOCATION
.
RUNTIME_ROLE_ARN=
<runtime-role-arn>
S3_LOCATION=<s3-path>
REGION=<aws-region>
CLUSTER_ID=<cluster-id>
aws emr add-steps --cluster-id $CLUSTER_ID \ --steps '[{ "Name": "Spark Example", "ActionOnFailure": "CONTINUE","HadoopJarStep": { "Jar":"command-runner.jar","Args" : ["spark-example","HdfsTest", "$S3_LOCATION"] } }]' \ --execution-role-arn $RUNTIME_ROLE_ARN \ --region $REGION
nota
É recomendável desativar o acesso SSH ao cluster do Amazon EMR e permitir que somente a API AddJobFlowSteps
do Amazon EMR acesse o cluster.
Enviar trabalhos do Hive usando as etapas do Amazon EMR
O exemplo a seguir usa as etapas do Apache Hive com o Amazon EMR para enviar um trabalho para executar o arquivo QUERY_FILE.hql
. Essa consulta só será terá êxito se o perfil de runtime fornecido puder acessar o caminho do Amazon S3 do arquivo de consulta.
RUNTIME_ROLE_ARN=
<runtime-role-arn>
REGION=<aws-region>
CLUSTER_ID=<cluster-id>
aws emr add-steps --cluster-id $CLUSTER_ID \ --steps '[{ "Name": "Run hive query using command-runner.jar - simple select","ActionOnFailure":"CONTINUE","HadoopJarStep": { "Jar": "command-runner.jar","Args" :["hive - f","s3://DOC_EXAMPLE_BUCKET
/QUERY_FILE.hql"] } }]' \ --execution-role-arn $RUNTIME_ROLE_ARN \ --region $REGION
Conecte-se aos clusters do Amazon EMR com funções de tempo de execução a partir de um notebook SageMaker AI Studio
Você pode aplicar funções de tempo de execução do Amazon EMR às consultas que você executa nos clusters do Amazon EMR a partir do AI Studio. SageMaker Para isso, siga as etapas a seguir.
-
Siga as instruções em Inicie o Amazon SageMaker AI Studio para criar um SageMaker AI Studio.
-
Na interface do SageMaker AI Studio, inicie um notebook com kernels compatíveis. Por exemplo, inicie uma SparkMagic imagem com um PySpark kernel.
-
Escolha um cluster do Amazon EMR no SageMaker AI Studio e, em seguida, escolha Connect.
-
Escolha um perfil de runtime e escolha Conectar.
Isso criará uma célula de notebook de SageMaker IA com comandos mágicos para se conectar ao seu cluster do Amazon EMR com a função de tempo de execução escolhida do Amazon EMR. Na célula do caderno, você pode inserir e executar consultas com perfil de runtime e controle de acesso baseado no Lake Formation. Para um exemplo mais detalhado, consulte Aplicar controles refinados de acesso a dados com o AWS Lake Formation Amazon EMR e o Amazon
Controlar o acesso ao perfil de runtime do Amazon EMR
Você pode controlar o acesso ao perfil de runtime usando a chave de condição elasticmapreduce:ExecutionRoleArn
. A política a seguir permite que uma entidade principal do IAM use um perfil do IAM chamado Caller
, ou qualquer perfil do IAM que comece com a string CallerTeamRole
, como o perfil de runtime.
Importante
Você deve criar uma condição com base na chave de elasticmapreduce:ExecutionRoleArn
contexto ao conceder a um chamador acesso para chamar o AddJobFlowSteps
ou GetClusterSessionCredentials
APIs, conforme mostra o exemplo a seguir.
{ "Sid":"AddStepsWithSpecificExecRoleArn", "Effect":"Allow", "Action":[ "elasticmapreduce:AddJobFlowSteps" ], "Resource":"*", "Condition":{ "StringEquals":{ "elasticmapreduce:ExecutionRoleArn":[ "arn:aws:iam::
<AWS_ACCOUNT_ID>
:role/Caller" ] }, "StringLike":{ "elasticmapreduce:ExecutionRoleArn":[ "arn:aws:iam::<AWS_ACCOUNT_ID>
:role/CallerTeamRole*" ] } } }
Estabelecer confiança entre os perfis de runtime e os clusters do Amazon EMR
O Amazon EMR gera um identificador exclusivo ExternalId
para cada configuração de segurança com autorização de perfil de runtime ativada. Essa autorização permite que cada usuário tenha um conjunto de perfil de runtime para usar nos clusters que pertencem a eles. Por exemplo, em uma empresa, cada departamento pode usar o próprio ID externo para atualizar a política de confiança em seu próprio conjunto de perfis de runtime.
Você encontra o ID externo com a API DescribeSecurityConfiguration
do Amazon EMR, conforme mostrado no exemplo a seguir.
aws emr describe-security-configuration --name 'iamconfig-with-lf'{"Name": "iamconfig-with-lf", "SecurityConfiguration": "{\"AuthorizationConfiguration\":{\"IAMConfiguration\":{\"EnableApplicationScopedIAMRole\ ":true,\"ApplicationScopedIAMRoleConfiguration\":{\"PropagateSourceIdentity\":true,\"Exter nalId\":\"FXH5TSACFDWUCDSR3YQE2O7ETPUSM4OBCGLYWODSCUZDNZ4Y\"}},\"Lake FormationConfiguration\":{\"AuthorizedSessionTagValue\":\"Amazon EMR\"}}}", "CreationDateTime": "2022-06-03T12:52:35.308000-07:00" }
Para obter informações sobre como usar uma ID externa, consulte Como usar uma ID externa ao conceder acesso aos seus AWS recursos a terceiros.
Auditoria
Para monitorar e controlar as ações que os usuários finais realizam com os perfis do IAM, você pode ativar o atributo de identidade de origem. Para saber mais sobre a identidade de origem, consulte Monitorar e controlar ações realizadas com perfis assumidos.
Para rastrear a identidade de origem, defina ApplicationScopedIAMRoleConfiguration/PropagateSourceIdentity
como true
em sua configuração de segurança, como mostrado a seguir.
{ "AuthorizationConfiguration":{ "IAMConfiguration":{ "EnableApplicationScopedIAMRole":true, "ApplicationScopedIAMRoleConfiguration":{ "PropagateSourceIdentity":true } } } }
Quando você define PropagateSourceIdentity
como true
, o Amazon EMR aplica a identidade de origem das credenciais de chamada a um trabalho ou sessão de consulta que você cria com o perfil de runtime. Se não houver nenhuma identidade de origem nas credenciais de chamada, o Amazon EMR não definirá a identidade de origem.
Para usar essa propriedade, forneça permissões sts:SetSourceIdentity
ao perfil de instância, como mostrado a seguir.
{ // PropagateSourceIdentity statement "Sid":"PropagateSourceIdentity", "Effect":"Allow", "Action":"sts:SetSourceIdentity", "Resource":[
<runtime-role-ARN>
], "Condition":{ "StringEquals":{ "sts:SourceIdentity":<source-identity>
} } }
Também é necessário adicionar a instrução AllowSetSourceIdentity
à política de confiança de seus perfis de runtime.
{ // AllowSetSourceIdentity statement "Sid":"AllowSetSourceIdentity", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::
<AWS_ACCOUNT_ID>
:role/EMR_EC2_DefaultRole" }, "Action":[ "sts:SetSourceIdentity", "sts:AssumeRole" ], "Condition":{ "StringEquals":{ "sts:SourceIdentity":<source-identity>
} } }
Considerações adicionais
nota
Com o lançamento do Amazon EMRemr-6.9.0
, você pode enfrentar falhas intermitentes ao se conectar aos clusters do Amazon EMR a partir do AI Studio. SageMaker Para resolver esse problema, instale o patch com uma ação de bootstrap ao iniciar o cluster. Para obter detalhes sobre o patch, consulte Amazon EMR release 6.9.0 known issues.
Além disso, considere as informações a seguir ao configurar perfis de runtime para o Amazon EMR.
-
O Amazon EMR oferece suporte a perfis de runtime em todas as Regiões da AWS comerciais.
-
As etapas do Amazon EMR oferecem suporte a trabalhos do Apache Spark e do Apache Hive com perfis de runtime quando você usa a versão
emr-6.7.0
ou posteriores. -
SageMaker O AI Studio suporta consultas Spark, Hive e Presto com funções de tempo de execução quando você usa a versão ou posterior.
emr-6.9.0
-
Os seguintes kernels de notebook na SageMaker IA oferecem suporte a funções de tempo de execução:
-
DataScience — Kernel Python 3
-
DataScience 2.0 — Kernel do Python 3
-
DataScience 3.0 — Kernel do Python 3
-
SparkAnalytics 1.0 — SparkMagic e PySpark grãos
-
SparkAnalytics 2.0 — SparkMagic e PySpark grãos
-
SparkMagic — PySpark núcleo
-
-
O Amazon EMR oferece suporte a etapas que usam
RunJobFlow
somente no momento da criação do cluster. Essa API não é compatível com perfis de runtime. -
O Amazon EMR não oferece suporte a perfis de runtime em clusters configurados para alta disponibilidade.
A partir da versão 7.5.0 e superior do Amazon EMR, as funções de tempo de execução oferecem suporte à visualização das interfaces de usuário do Spark e do YARN (UIs), como as seguintes: Spark Live UI, Spark History Server, YARN e YARN. NodeManager ResourceManager Quando você navega até eles UIs, há uma solicitação de nome de usuário e senha. Nomes de usuário e senhas podem ser gerados por meio do uso da API do GetClusterSessionCredentials EMR. Para obter mais informações sobre os detalhes de uso da API, consulte GetClusterSessionCredentials.
Um exemplo de como usar a GetClusterSessionCredentials API do EMR é o seguinte:
aws emr get-cluster-session-credentials --cluster-id
<cluster_ID>
--execution-role-arn<IAM_role_arn>
-
Você deve dar escape nos argumentos do comando Bash ao executar comandos com o arquivo JAR
command-runner.jar
:aws emr add-steps --cluster-id
<cluster-id>
--steps '[{"Name":"sample-step","ActionOnFailure":"CONTINUE","Jar":"command-runner.jar","Properties":"","Args":["bash","-c","\"aws s3 ls\""],"Type":"CUSTOM_JAR"}]' --execution-role-arn<IAM_ROLE_ARN>
Além disso, você deve escapar dos argumentos do comando Bash ao executar comandos com o executor de script. Veja a seguir um exemplo que mostra a configuração das propriedades do Spark, com caracteres de escape incluídos:
"\"--conf spark.sql.autoBroadcastJoinThreshold=-1\n--conf spark.cradle.RSv2Mode.enabled=true\""
-
Os perfis de runtime não oferecem suporte para controlar o acesso a recursos no cluster, como HDFS e HMS.