Configurar funções IAM de tempo de execução para acesso ao EMR cluster da Amazon no Studio - 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á.

Configurar funções IAM de tempo de execução para acesso ao EMR cluster da Amazon no Studio

Ao se conectar a um EMR cluster da Amazon a partir de seus notebooks Studio ou Studio Classic, você pode navegar visualmente por uma lista de IAM funções, conhecidas como funções de tempo de execução, e selecionar uma rapidamente. Posteriormente, todas as suas tarefas do Apache Spark, Apache Hive ou Presto criadas a partir do seu notebook acessam somente os dados e recursos permitidos pelas políticas anexadas à função de tempo de execução. Além disso, quando os dados são acessados a partir de data lakes gerenciados com AWS Lake Formation, você pode impor o acesso em nível de tabela e coluna usando políticas anexadas à função de tempo de execução.

Com esse recurso, você e seus colegas de equipe podem se conectar ao mesmo cluster, cada um usando uma função de tempo de execução com permissões correspondentes ao seu nível individual de acesso aos dados. Suas sessões também são isoladas umas das outras no cluster compartilhado.

Para experimentar esse recurso usando o Studio Classic, consulte Aplicar controles refinados de acesso a dados com e a Amazon a partir do AWS Lake Formation EMR Amazon SageMaker Studio Classic. Esta postagem do blog ajuda você a configurar um ambiente de demonstração no qual você pode tentar usar funções de tempo de execução pré-configuradas para se conectar aos EMR clusters da Amazon.

Pré-requisitos

Antes começar, certifique-se de que os seguintes pré-requisitos sejam atendidos:

Cenários de conexão entre contas

A autenticação por função de tempo de execução oferece suporte a vários cenários de conexão entre contas quando seus dados residem fora da sua conta do Studio. A imagem a seguir mostra três maneiras diferentes de atribuir seu EMR cluster, dados e até mesmo a função de execução de EMR tempo de execução da Amazon entre seu Studio e suas contas de dados:

Cenários entre contas compatíveis com a autenticação de IAM função em tempo de execução.

Na opção 1, seu EMR cluster da Amazon e sua função EMR de execução de tempo de execução da Amazon estão em uma conta de dados separada da conta do Studio. Você define uma política de permissão separada da função de EMR acesso da Amazon (também chamada deAssumable role) que concede permissão à função de execução do Studio ou do Studio Classic para assumir a função de EMR acesso da Amazon. A função de EMR acesso da Amazon então chama a Amazon EMR API GetClusterSessionCredentials em nome da sua função de execução Studio ou Studio Classic, dando acesso ao cluster.

Na opção 2, seu EMR cluster da Amazon e sua função EMR de execução de tempo de execução da Amazon estão em sua conta do Studio. Sua função de execução do Studio tem permissão para usar a Amazon EMR API GetClusterSessionCredentials para obter acesso ao seu cluster. Para acessar o bucket do Amazon S3, conceda à função de execução de tempo de EMR execução da Amazon permissões de acesso entre contas do bucket do Amazon S3 — você concede essas permissões dentro da sua política de bucket do Amazon S3.

Na opção 3, seus EMR clusters da Amazon estão na sua conta do Studio e a função de execução do EMR tempo de execução da Amazon está na conta de dados. Sua função de execução do Studio ou Studio Classic tem permissão para usar a Amazon EMR API GetClusterSessionCredentials para obter acesso ao seu cluster. Adicione a função EMR de execução de tempo de execução da Amazon na configuração da função de execuçãoJSON. Em seguida, você pode selecionar a função na interface do usuário ao escolher seu cluster. Para obter detalhes sobre como configurar seu JSON arquivo de configuração da função de execução, consultePré-carregue suas funções de execução no Studio ou no Studio Classic.

Configurar o Studio para usar IAM funções de tempo de execução

Para estabelecer a autenticação da função de tempo de execução para seus EMR clusters da Amazon, configure as IAM políticas, a rede e os aprimoramentos de usabilidade necessários. Sua configuração depende de você lidar com qualquer acordo entre contas, se seus EMR clusters da Amazon, sua função de execução EMR de tempo de execução da Amazon ou ambos residirem fora da sua conta Studio. A seção a seguir orienta você sobre as políticas de instalação, como configurar a rede para permitir tráfego entre contas cruzadas e o arquivo de configuração local a ser configurado para automatizar sua conexão com a AmazonEMR.

Configure a autenticação da função de tempo de execução quando o EMR cluster da Amazon e o Studio estiverem na mesma conta

Se o seu EMR cluster da Amazon residir na sua conta do Studio, conclua as etapas a seguir para adicionar as permissões necessárias à sua política de execução do Studio:

  1. Adicione a IAM política necessária para se conectar aos EMR clusters da Amazon. Para obter detalhes, consulte Configurar a listagem de EMR clusters da Amazon.

  2. Conceda permissão para ligar para a Amazon EMR API GetClusterSessionCredentials ao passar por uma ou mais funções de execução de EMR tempo de execução permitidas da Amazon especificadas na política.

  3. (Opcional) Conceda permissão para transmitir IAM funções que sigam qualquer convenção de nomenclatura definida pelo usuário.

  4. (Opcional) Conceda permissão para acessar EMR clusters da Amazon que estão marcados com sequências específicas definidas pelo usuário.

  5. Pré-carregue suas IAM funções para que você possa selecionar a função a ser usada ao se conectar ao seu EMR cluster da Amazon. Para obter detalhes sobre como pré-carregar suas IAM funções, consultePré-carregue suas funções de execução no Studio ou no Studio Classic.

O exemplo de política a seguir permite que funções EMR de execução de tempo de execução da Amazon pertencentes aos grupos de modelagem e treinamento sejam chamadasGetClusterSessionCredentials. Além disso, o segurado pode acessar os EMR clusters da Amazon marcados com as sequências de caracteres modeling ou. training

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "*", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::123456780910:role/emr-execution-role-ml-modeling*", "arn:aws:iam::123456780910:role/emr-execution-role-ml-training*" ], "elasticmapreduce:ResourceTag/group": [ "*modeling*", "*training*" ] } } } ] }

Configure a autenticação da função de tempo de execução quando o cluster do Studio estiver em contas diferentes

Se o seu EMR cluster da Amazon não estiver na sua conta do Studio, permita que sua função de SageMaker execução assuma a função de EMR acesso cruzado da Amazon para que você possa se conectar ao cluster. Conclua as etapas a seguir para configurar sua configuração entre contas:

  1. Crie sua política de permissão de função de SageMaker execução para que a função de execução possa assumir a função de EMR acesso da Amazon. Veja abaixo um exemplo de política:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAssumeCrossAccountEMRAccessRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::emr_account_id:role/emr-access-role-name" } ] }
  2. Crie a política de confiança para especificar quais contas do Studio IDs são confiáveis para assumir a função de EMR acesso da Amazon. Veja abaixo um exemplo de política:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountSageMakerExecutionRoleToAssumeThisRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio_account_id:role/studio_execution_role" }, "Action": "sts:AssumeRole" } }
  3. Crie a política de permissão da função de EMR acesso da Amazon, que concede à função EMR de execução de tempo de execução da Amazon as permissões necessárias para realizar as tarefas pretendidas no cluster. Configure a função de EMR acesso da Amazon para chamá-la API GetClusterSessionCredentials com as funções de execução EMR de tempo de execução da Amazon especificadas na política de permissão da função de acesso. Veja abaixo um exemplo de política:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallingEmrGetClusterSessionCredentialsAPI", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::emr_account_id:role/emr-execution-role-name" ] } } } ] }
  4. Configure a rede entre contas para que o tráfego possa ir e voltar entre suas contas. Para instruções guiadas, consulte Configure o acesso à rede para seu EMR cluster AmazonConfigurar o. As etapas desta seção ajudam você a concluir as seguintes tarefas:

    1. VPC-verifique sua conta do Studio e sua conta da Amazon EMR para estabelecer uma conexão.

    2. Adicione rotas manualmente às tabelas de rotas da sub-rede privada em ambas as contas. Isso permite a criação e a conexão de EMR clusters da Amazon da conta Studio à sub-rede privada da conta remota.

    3. Configure o grupo de segurança anexado ao seu domínio do Studio para permitir o tráfego de saída e o grupo de segurança do nó EMR primário da Amazon para permitir o TCP tráfego de entrada do grupo de segurança da instância do Studio.

  5. Pré-carregue suas funções IAM de tempo de execução para que você possa selecionar a função a ser usada ao se conectar ao seu EMR cluster da Amazon. Para obter detalhes sobre como pré-carregar suas IAM funções, consultePré-carregue suas funções de execução no Studio ou no Studio Classic.

Configurar o acesso ao Lake Formation

Ao acessar dados de data lakes gerenciados pelo AWS Lake Formation, você pode impor o acesso em nível de tabela e coluna usando políticas anexadas à sua função de tempo de execução. Para configurar a permissão de acesso ao Lake Formation, consulte Integrar a Amazon EMR com AWS Lake Formation.

Pré-carregue suas funções de execução no Studio ou no Studio Classic

Você pode pré-carregar suas funções IAM de tempo de execução para poder selecionar a função a ser usada ao se conectar ao seu EMR cluster da Amazon. Os usuários do JupyterLab in Studio podem usar o SageMaker console ou o script fornecido.

Preload runtime roles in JupyterLab using the SageMaker console

Para associar suas funções de tempo de execução ao seu perfil de usuário ou domínio usando o SageMaker console:

  1. Navegue até o SageMaker console em https://console.aws.amazon.com/sagemaker/.

  2. No painel de navegação esquerdo, escolha domínio e selecione o domínio usando a função de SageMaker execução cujas permissões você atualizou.

    • Para adicionar seu tempo de execução (e funções de acesso para casos de uso entre contas) ao seu domínio: na guia Configurações do aplicativo da página de detalhes do domínio, navegue até a JupyterLabseção.

    • Para adicionar seu tempo de execução (e funções de acesso para casos de uso entre contas) ao seu perfil de usuário: na página Detalhes do domínio, escolha a guia Perfis de usuário, selecione o perfil do usuário usando a função de SageMaker execução cujas permissões você atualizou. Na guia Configurações do aplicativo, navegue até a JupyterLabseção.

  3. Escolha Editar e adicione suas funções ARNs de acesso (função assumível) e de execução de tempo de execução EMR sem servidor.

  4. Selecione Enviar.

Na próxima vez em que você se conectar a um EMR servidor da Amazon, as funções de tempo de execução devem aparecer em um menu suspenso para seleção.

Preload runtime roles in JupyterLab using a Python script

Em um JupyterLab aplicativo iniciado em um espaço usando a função de SageMaker execução cujas permissões você atualizou, execute o comando a seguir em um terminal. Substitua o domainIDuser-profile-name,emr-accountID,, e EMRServiceRole por seus valores adequados. Esse trecho de código atualiza as configurações do perfil do usuário (client.update_userprofile) em um SageMaker domínio em um caso de uso de várias contas. Especificamente, ele define as funções de serviço para a AmazonEMR. Também permite que o JupyterLab aplicativo assuma uma IAM função específica (AssumableRoleouAccessRole) para executar a Amazon EMR na EMR conta da Amazon.

Como alternativa, use client.update_domain para atualizar as configurações do domínio se seu espaço usar uma função de execução definida no nível do domínio.

import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_userprofile( DomainId="domainID", UserProfileName="user-profile-name", DefaultUserSettings={ 'JupyterLabAppSettings': { 'EmrSettings': { 'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"], 'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServiceRole", "arn:aws:iam::emr-accountID:role/AnotherServiceRole"] } } }) resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name") resp['CreationTime'] = str(resp['CreationTime']) resp['LastModifiedTime'] = str(resp['LastModifiedTime']) print(json.dumps(resp, indent=2))
Preload runtime roles in Studio Classic

Forneça o ARN do AccessRole (AssumableRole) para sua função SageMaker de execução. O ARN é carregado pelo servidor Jupyter no lançamento. A função de execução usada pelo Studio assume essa função entre contas para descobrir e se conectar aos EMR clusters da Amazon na conta confiável.

Você pode especificar essas informações usando scripts de Configuração do Ciclo de Vida (LCC). Você pode anexar o LCC ao seu domínio ou a um perfil de usuário específico. O LCC script que você usa deve ser uma JupyterServer configuração. Para obter mais informações sobre como criar um LCC script, consulte Usar configurações de ciclo de vida com o Studio Classic.

Veja a seguir um exemplo de LCC script. Para modificar o script, substitua AssumableRole e emr-account por seus respectivos valores. O número de contas cruzadas é limitado a cinco.

O trecho a seguir é um exemplo de script LCC bash que você pode aplicar se o aplicativo e o cluster do Studio Classic estiverem na mesma conta:

#!/bin/bash set -eux FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE" FILE_NAME="emr-configurations-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "emr-execution-role-arns": { "123456789012": [ "arn:aws:iam::123456789012:role/emr-execution-role-1", "arn:aws:iam::123456789012:role/emr-execution-role-2" ] } } EOF

Se o aplicativo e os clusters do Studio Classic estiverem em contas diferentes, especifique as funções de EMR acesso da Amazon que podem usar o cluster. No exemplo de política a seguir, 123456789012 é o ID da conta do cluster da EMR Amazon, e 212121212121 e 434343434343 são as funções de acesso permitidas da Amazon. ARNs EMR

#!/bin/bash set -eux FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE" FILE_NAME="emr-configurations-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "emr-execution-role-arns": { "123456789012": [ "arn:aws:iam::212121212121:role/emr-execution-role-1", "arn:aws:iam::434343434343:role/emr-execution-role-2" ] } } EOF # add your cross-account EMR access role FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE" FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "123456789012": "arn:aws:iam::123456789012:role/cross-account-emr-access-role" } EOF