Configurar a listagem de clusters do Amazon EMR - Amazon SageMaker

Configurar a listagem de clusters do Amazon EMR

Os administradores podem configurar permissões para o perfil de execução do SageMaker Studio para conceder aos usuários a capacidade de visualizar a lista de clusters do Amazon EMR aos quais eles têm acesso, permitindo que eles se conectem a esses clusters. Os clusters aos quais você deseja ter acesso podem ser implantados na mesma conta AWS que a do Studio (escolha Conta única) ou em contas separadas (escolha Contas cruzadas). A página a seguir descreve como conceder as permissões para visualizar clusters do Amazon EMR a partir do Studio ou do Studio Classic.

Importante

Você só pode descobrir e se conectar aos clusters do Amazon EMR para aplicações do JupyterLab e Studio Classic que são inicializados a partir de espaços privados. Verifique se os clusters do Amazon EMR estão localizados na mesma região da AWS do seu ambiente do Studio.

Para permitir que cientistas de dados descubram e se conectem aos clusters do Amazon EMRclusters a partir do Studio ou do Studio Classic, siga estas etapas.

da Se seus clusters do Amazon EMR e o Studio ou o Studio Classic estiverem implantados na mesma conta AWS, anexe as seguintes permissões ao perfil de execução do SageMaker acessando seu cluster:

  1. Etapa 1: recupere o ARN do perfil de execução do SageMaker usado pelo seu espaço privado.

    Para obter informações sobre espaços e perfis de execução do SageMaker, consulte Compreendendo as permissões de espaço e os perfis de execução do domínio.

    Para mais informações sobre como recuperar o IAM do perfil de execução do SageMaker, consulte Obtenha um perfil de execução.

  2. Etapa 2: anexe as seguintes permissões ao perfil de execução do SageMaker que têm acesso ao seu cluster do Amazon EMR.

    1. Navegue até o console do IAM.

    2. Escolha Perfis e, em seguida, pesquise seu perfil de execução pelo nome no campo Pesquisar. O nome do perfil é a última parte do ARN, após a última barra (/).

    3. Acesse o link do seu perfil.

    4. Selecione Adicionar permissões e, em seguida, Criar política em linha.

    5. Na guia JSON, adicione as permissões do Amazon EMR que permitem o acesso e as operações do Amazon EMR. Para obter detalhes sobre o documento de política, consulte Listar políticas do Amazon EMR em Políticas de referência. Substitua a region e o accountID por seus valores reais antes de copiar a lista de instruções para a política em linha de seu perfil.

    6. Escolha Próximo e, em seguida, forneça um nome de política.

    7. Escolha Criar política.

nota

Os usuários da conectividade de controle de acesso baseado em funções (RBAC) com os clusters do Amazon EMR também devem consultar Configure a autenticação da função de runtime quando o cluster do Amazon EMR e o Studio estiverem na mesma conta.

Antes de começar, recupere o ARN do perfil de execução do SageMaker usado pelo seu espaço privado.

Para obter informações sobre espaços e perfis de execução do SageMaker, consulte Compreendendo as permissões de espaço e os perfis de execução do domínio.

Para mais informações sobre como recuperar o IAM do perfil de execução do SageMaker, consulte Obtenha um perfil de execução.

Se seus clusters do Amazon EMR e o Studio ou o Studio Classic estiverem implantados em contas AWS separadas, você configura as permissões em ambas as contas.

nota

Os usuários da conectividade de controle de acesso baseado em funções (RBAC) com os clusters do Amazon EMR também devem consultar Configure a autenticação da função de runtime quando o cluster do Studio estiver em contas diferentes.

Na conta de cluster do Amazon EMR

Siga estas etapas para criar as funções e políticas necessárias na conta em que o Amazon EMR está implantado, também chamada de conta confiável:

  1. Etapa 1: recupere o ARN do perfil de serviço do seu cluster do Amazon EMR.

    Para saber como encontrar o ARN do perfil de serviço de um cluster, consulte Configurar perfis de serviço do IAM para permissões do Amazon EMR aos serviços e recursos da AWS.

  2. Etapa 2: crie um perfil personalizado do IAM chamado AssumableRole com a seguinte configuração:

    • Permissões: conceda as permissões necessárias ao AssumableRole para permitir o acesso aos recursos do Amazon EMR. Essa função também é conhecida como função de acesso em cenários que envolvem acesso entre contas.

    • Relação de confiança: configure a política de confiança para AssumableRole a fim de permitir a atribuição do perfil de execução (o SageMakerExecutionRole no diagrama de contas cruzadas) pela conta do Studio que requer acesso.

    Ao assumir a função, o Studio ou o Studio Classic podem obter acesso temporário às permissões necessárias no Amazon EMR.

    Para obter instruções detalhadas sobre como criar um novo AssumableRole em sua conta AWS do Amazon EMR, siga estas etapas:

    1. Navegue até o console do IAM.

    2. No painel de navegação à esquerda, selecione Política e, em seguida, Criar política.

    3. Na guia JSON, adicione as permissões do Amazon EMR que permitem o acesso e as operações do Amazon EMR. Para obter detalhes sobre o documento de política, consulte Listar políticas do Amazon EMR em Políticas de referência. Substitua a region e o accountID por seus valores reais antes de copiar a lista de instruções para a política em linha de seu perfil.

    4. Escolha Próximo e, em seguida, forneça um nome de política.

    5. Escolha Criar política.

    6. No painel de navegação à esquerda, selecione Funções e, em seguida, Criar função.

    7. Na página Criar função, escolha a opção Política de confiança personalizada como entidade confiável.

    8. Cole o seguinte documento JSON na seção Política de confiança personalizada e escolha Avançar:

      For users of Studio and JupyterLab

      Substitua studio-account pelo ID da conta do Studio, e AmazonSageMaker-ExecutionRole pelo perfil de execução usado pelo seu espaço no JupyterLab.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio-account:role/service-role/AmazonSageMaker-ExecutionRole" }, "Action": "sts:AssumeRole" } ] }
      For users of Studio Classic

      Substitua studio-account pelo ID da conta do Studio Classic.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio-account:root" }, "Action": "sts:AssumeRole" } ] }
    9. Na página Adicionar permissões, adicione a permissão que você acabou de criar e escolha Avançar.

    10. Na página Revisar, insira um nome para a função, como AssumableRole, e uma descrição opcional.

    11. Revisar os detalhes do perfil e selecionar Criar perfil.

    Para obter mais informações sobre como criar um perfil em uma conta da AWS, consulte Criar um perfil do IAM (console).

Na conta do Studio

Na conta em que o Studio está implantado, também chamada de conta confiável, atualize o perfil de execução do SageMaker que acessa seus clusters com as permissões necessárias para acessar recursos na conta confiável.

  1. Etapa 1: recupere o ARN do perfil de execução do SageMaker usado pelo seu espaço privado.

    Para obter informações sobre espaços e perfis de execução do SageMaker, consulte Compreendendo as permissões de espaço e os perfis de execução do domínio.

    Para mais informações sobre como recuperar o IAM do perfil de execução do SageMaker, consulte Obtenha um perfil de execução.

  2. Etapa 2: anexe as seguintes permissões ao perfil de execução do SageMaker que têm acesso ao seu cluster do Amazon EMR.

    1. Navegue até o console do IAM.

    2. Escolha Perfis e, em seguida, pesquise seu perfil de execução pelo nome no campo Pesquisar. O nome do perfil é a última parte do ARN, após a última barra (/).

    3. Acesse o link do seu perfil.

    4. Selecione Adicionar permissões e, em seguida, Criar política em linha.

    5. Na guia JSON, adicione a política em linha que concede permissões à função para atualizar os domínios, perfis de usuário e espaços. Para obter detalhes sobre o documento de política, consulte Política de ações de atualização de domínio, perfil de usuário e espaço em Políticas de referência. Substitua a region e o accountID por seus valores reais antes de copiar a lista de instruções para a política em linha de seu perfil.

    6. Escolha Próximo e, em seguida, forneça um nome de política.

    7. Escolha Criar política.

    8. Repita a etapa Criar política em linha para adicionar outra política que conceda ao perfil de execução as permissões para assumir AssumableRole e, em seguida, executar as ações permitidas pela política de acesso do perfil. Substitua emr-account pelo ID da conta do Amazon EMR e AssumableRole pelo nome do perfil a ser assumido que foi criado na conta do Amazon EMR.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRoleAssumptionForCrossAccountDiscovery", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": ["arn:aws:iam::emr-account:role/AssumableRole" ] }] }
    9. (Opcional) Para permitir a listagem de clusters do Amazon EMR implantados na mesma conta do Studio, adicione uma política em linha adicional ao seu perfil de execução do Studio, conforme definido em Listar políticas do Amazon EMR em Políticas de referência.

  3. Etapa 3: associe suas funções de atribuição (função de acesso) ao seu domínio ou perfil de usuário. Os usuários do JupyterLab no Studio podem usar o console do SageMaker ou o script fornecido.

    Escolha a guia que corresponde ao seu caso de uso.

    Associate your assumable roles in JupyterLab using the SageMaker console

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

    1. Navegue para o console do SageMaker em https://console.aws.amazon.com/sagemaker/.

    2. No painel de navegação à esquerda, selecione Domínio e selecione o domínio usando o perfil de execução do SageMaker cujas permissões você atualizou.

      • Para adicionar suas funções assumíveis (função de acesso) ao seu domínio: na guia Configurações da aplicação da página Detalhes do domínio, navegue até a seção JupyterLab.

      • Para adicionar suas funções assumíveis (função de acesso) 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 o perfil de execução do SageMaker cujas permissões você atualizou. Na guia Configurações da aplicação, navegue até a seção JupyterLab.

    3. Escolha Editar e adicione os ARNs da sua função assumível (função de acesso).

    4. Selecione Enviar.

    Associate your assumable roles in JupyterLab using a Python script

    Em uma aplicação do JupyterLab iniciado em um espaço usando o perfil de execução do SageMaker cujas permissões você atualizou, execute o comando a seguir em um terminal. Substitua domainID, user-profile-name, emr-accountID e AssumableRole (EMRServiceRole para funções de runtime do RBAC) por seus valores adequados. O trecho de código atualiza as configurações do perfil do usuário para um perfil de usuário específico (use client.update_userprofile) ou configurações de domínio (use client.update_domain) em um domínio do SageMaker. Especificamente, ele permite que a aplicação do JupyterLab assuma um perfil específico do IAM (AssumableRole) para executar clusters do Amazon EMR na conta do Amazon EMR.

    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))
    For users of Studio Classic

    Forneça o ARN do AssumableRole para seu perfil de execução do Studio Classic. O ARN é carregado pelo servidor do Jupyter na inicialização. O perfil de execução do Studio aceita essa função entre contas para descobrir e se conectar aos clusters do Amazon EMR na conta confiável.

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

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

    # This script creates the file that informs Studio Classic that the role "arn:aws:iam::emr-account:role/AssumableRole" in remote account "emr-account" must be assumed to list and describe Amazon EMR clusters in the remote account. #!/bin/bash set -eux 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 > "$FILE" <<- "EOF" { emr-cross-account1: "arn:aws:iam::emr-cross-account1:role/AssumableRole", emr-cross-account2: "arn:aws:iam::emr-cross-account2:role/AssumableRole" } EOF

    Depois que a LCC é executada e os arquivos são gravados, o servidor lê o arquivo /home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE/emr-discovery-iam-role-arns-DO_NOT_DELETE.json e armazena o ARN entre contas.

Consulte Listar clusters do Amazon EMR no Studio ou no Studio Classic para saber como descobrir e se conectar aos clusters do Amazon EMR a partir dos cadernos do Studio ou Studio Classic.