Configurar CloudFormation modelos do Amazon EMR no Service Catalog - SageMaker IA da Amazon

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 CloudFormation modelos do Amazon EMR no Service Catalog

Este tópico pressupõe que os administradores estejam familiarizados com AWS CloudFormationos portfólios e produtos do Amazon EMR. AWS Service Catalog

Para simplificar a criação de clusters do Amazon EMR a partir do Studio, os administradores podem registrar um CloudFormation modelo do Amazon EMR como um produto em um portfólio. AWS Service Catalog Para disponibilizar o modelo aos cientistas de dados, eles devem associar o portfólio à função de execução de SageMaker IA usada no Studio ou no Studio Classic. Por fim, para permitir que os usuários descubram modelos, provisionem clusters e se conectem aos clusters do Amazon EMR no Studio ou Studio Classic, os administradores precisam definir as permissões de acesso apropriadas.

Os AWS CloudFormation modelos do Amazon EMR podem permitir que os usuários finais personalizem vários aspectos do cluster. Por exemplo, o administrador pode definir uma lista de tipos de instância permitidos que os usuários podem escolher ao criar um cluster.

As instruções a seguir usam end-to-end CloudFormation pilhas para configurar um domínio Studio ou Studio Classic, um perfil de usuário, um portfólio do Service Catalog e preencher um modelo de lançamento do Amazon EMR. As etapas a seguir destacam as configurações específicas que os administradores devem aplicar em sua end-to-end pilha para permitir que o Studio ou o Studio Classic acessem os produtos do Service Catalog e provisionem clusters do Amazon EMR.

nota

O GitHub repositório aws-samples/ sagemaker-studio-emr contém exemplos de end-to-end CloudFormation pilhas que implantam as funções, a rede, o domínio, o perfil de SageMaker usuário, o portfólio do Service Catalog necessários e adicionam um modelo de lançamento do Amazon EMR. CloudFormation Os modelos oferecem diferentes opções de autenticação entre o Studio ou o Studio Classic e o cluster do Amazon EMR. Nesses modelos de exemplo, a CloudFormation pilha principal passa os parâmetros de SageMaker AI VPC, grupo de segurança e sub-rede para o modelo de cluster do Amazon EMR.

O repositório sagemaker-studio-emr/cloudformation/emr_servicecatalog_templates contém vários exemplos de modelos de lançamento do Amazon EMR, incluindo opções para implantações de conta única e entre contas. CloudFormation

Consulte Conecte-se a um cluster do Amazon EMR a partir do SageMaker Studio ou do Studio Classic para obter detalhes sobre os métodos de autenticação que você pode usar para se conectar a um cluster do Amazon EMR.

Para permitir que cientistas de dados descubram CloudFormation modelos do Amazon EMR e provisionem clusters do Studio ou do Studio Classic, siga estas etapas.

Etapa 0: verifique sua rede e prepare sua CloudFormation pilha

Antes de começar:

  • Verifique se você analisou os requisitos de rede e segurança em Configurar o acesso à rede para o cluster do Amazon EMR.

  • Você deve ter uma end-to-end CloudFormation pilha existente que suporte o método de autenticação de sua escolha. Você pode encontrar exemplos desses CloudFormation modelos no repositório sagemaker-studio-emr GitHub aws-samples/. As etapas a seguir destacam as configurações específicas em sua end-to-end pilha para permitir o uso de modelos do Amazon EMR no Studio ou no Studio Classic.

Etapa 1: associar seu portfólio do Service Catalog à SageMaker IA

Em seu portfólio do Service Catalog, associe seu ID de portfólio à função de execução de SageMaker IA que acessa seu cluster.

Para fazer isso, adicione a seção a seguir (aqui, no formato YAML) à sua pilha. Isso concede à função de execução de SageMaker IA acesso ao portfólio especificado do Service Catalog contendo produtos como os modelos do Amazon EMR. Ele permite que as funções assumidas pela SageMaker IA lancem esses produtos.

SageMakerStudioEMRProductPortfolio.IDSubstitua SageMakerExecutionRole.Arn e por seus valores reais.

SageMakerStudioEMRProductPortfolioPrincipalAssociation: Type: AWS::ServiceCatalog::PortfolioPrincipalAssociation Properties: PrincipalARN: SageMakerExecutionRole.Arn PortfolioId: SageMakerStudioEMRProductPortfolio.ID PrincipalType: IAM

Para obter detalhes sobre o conjunto necessário de permissões do IAM, consulte a seção de permissões.

Etapa 2: referencie um modelo do Amazon EMR em um produto do Service Catalog

Em um produto do Service Catalog do seu portfólio, faça referência a um recurso de modelo do Amazon EMR e garanta sua visibilidade no Studio ou no Studio Classic.

Para fazer isso, faça referência ao recurso do modelo do Amazon EMR na definição de produto do Service Catalog e, em seguida, adicione o conjunto "sagemaker:studio-visibility:emr" de chave de tag ao valor "true" (veja o exemplo em formato YAML).

Na definição do produto Service Catalog, o AWS CloudFormation modelo do cluster é referenciado via URL. A tag adicional definida como “true” garante a visibilidade dos modelos do Amazon EMR no Studio ou no Studio Classic.

nota

O modelo do Amazon EMR referenciado pelo URL fornecido no exemplo não impõe nenhum requisito de autenticação quando inicializado. A opção é destinada a fins de demonstração e aprendizado. Não é recomendada em um ambiente de produção.

SMStudioEMRNoAuthProduct: Type: AWS::ServiceCatalog::CloudFormationProduct Properties: Owner: AWS Name: SageMaker Studio Domain No Auth EMR ProvisioningArtifactParameters: - Name: SageMaker Studio Domain No Auth EMR Description: Provisions a SageMaker domain and No Auth EMR Cluster Info: LoadTemplateFromURL: Link to your CloudFormation template. For example, https://aws-blogs-artifacts-public.s3.amazonaws.com/artifacts/astra-m4-sagemaker/end-to-end/CFN-EMR-NoStudioNoAuthTemplate-v3.yaml Tags: - Key: "sagemaker:studio-visibility:emr" Value: "true"

Etapa 3: Parametrizar o modelo do Amazon EMR CloudFormation

O CloudFormation modelo usado para definir o cluster do Amazon EMR dentro do produto Service Catalog permite que os administradores especifiquem parâmetros configuráveis. Os administradores podem definir valores Default e intervalos AllowedValues para esses parâmetros na seção Parameters do modelo. Durante o processo de inicialização do cluster, os cientistas de dados podem fornecer entradas personalizadas ou fazer seleções a partir dessas opções predefinidas para personalizar certos aspectos do cluster do Amazon EMR.

O exemplo a seguir ilustra parâmetros de entrada adicionais que os administradores podem definir ao criar um modelo do Amazon EMR.

"Parameters": { "EmrClusterName": { "Type": "String", "Description": "EMR cluster Name." }, "MasterInstanceType": { "Type": "String", "Description": "Instance type of the EMR master node.", "Default": "m5.xlarge", "AllowedValues": [ "m5.xlarge", "m5.2xlarge", "m5.4xlarge" ] }, "CoreInstanceType": { "Type": "String", "Description": "Instance type of the EMR core nodes.", "Default": "m5.xlarge", "AllowedValues": [ "m5.xlarge", "m5.2xlarge", "m5.4xlarge", "m3.medium", "m3.large", "m3.xlarge", "m3.2xlarge" ] }, "CoreInstanceCount": { "Type": "String", "Description": "Number of core instances in the EMR cluster.", "Default": "2", "AllowedValues": [ "2", "5", "10" ] }, "EmrReleaseVersion": { "Type": "String", "Description": "The release version of EMR to launch.", "Default": "emr-5.33.1", "AllowedValues": [ "emr-5.33.1", "emr-6.4.0" ] } }

Depois que os administradores disponibilizarem os modelos do Amazon CloudFormation EMR no Studio, os cientistas de dados poderão usá-los para autoprovisionar clusters do Amazon EMR. A seção Parameters definida no modelo se traduz em campos de entrada no formulário de criação de cluster no Studio ou no Studio Classic. Para cada parâmetro, os cientistas de dados podem inserir um valor personalizado no campo de inserção ou selecionar entre as opções predefinidas listadas em um menu suspenso, que corresponde ao AllowedValues especificado no modelo.

A ilustração a seguir mostra o formulário dinâmico montado a partir de um modelo do CloudFormation Amazon EMR para criar um cluster do Amazon EMR no Studio ou no Studio Classic.

Ilustração de um formulário dinâmico montado a partir de um modelo do CloudFormation Amazon EMR para criar um cluster do Amazon EMR a partir do Studio ou do Studio Classic.

Visite Inicializar um cluster do Amazon EMR no Studio ou Studio Classic para saber como iniciar um cluster no Studio ou Studio Classic usando esses modelos do Amazon EMR.

Etapa 4: configure as permissões para permitir a listagem e a inicialização de clusters do Amazon EMR a partir do Studio

Por fim, anexe as permissões necessárias do IAM para permitir a listagem dos clusters existentes do Amazon EMR em execução e o provisionamento automático de novos clusters do Studio ou do Studio Classic.

A função à qual você deve adicionar essas políticas depende se o Studio ou o Studio Classic e o Amazon EMR estão implantados na mesma conta (escolha Conta única) ou em contas diferentes (escolha Contas cruzadas).

Importante

Você só pode descobrir e se conectar aos clusters do Amazon EMR JupyterLab e aos aplicativos do Studio Classic que são lançados a partir de espaços privados. Certifique-se de que os clusters do Amazon EMR estejam localizados na mesma AWS região do seu ambiente Studio.

Se seus clusters do Amazon EMR e o Studio ou o Studio Classic estiverem implantados na mesma AWS conta, anexe as seguintes permissões à função de execução da SageMaker IA que acessa seu cluster.

  1. Etapa 1: Recupere o ARN da função de execução SageMaker de IA usada pelo seu espaço privado.

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

    Para obter mais informações sobre como recuperar o ARN da função de execução SageMaker da IA, consulte. Obtenha um perfil de execução

  2. Etapa 2: anexe as seguintes permissões à função de execução de SageMaker IA acessando seus clusters 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.

    8. Repita a etapa Criar política em linha para adicionar outra política que concede ao perfil de execução as permissões para provisionar novos clusters do Amazon EMR usando modelos do AWS CloudFormation . Para obter detalhes sobre o documento de política, consulte Criar EMRclusters políticas da Amazon emPolí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.

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 da função de execução SageMaker de IA usada pelo seu espaço privado.

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

Para obter mais informações sobre como recuperar o ARN da função de execução SageMaker da IA, consulte. Obtenha um perfil de execução

Se seus clusters do Amazon EMR e o Studio ou o Studio Classic forem implantados em AWS contas 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 uma nova AssumableRole em sua AWS conta 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

      studio-accountSubstitua pelo ID da conta do Studio e AmazonSageMaker-ExecutionRole pela função de execução usada pelo seu JupyterLab espaço.

      { "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 a função de execução da SageMaker IA acessando seus clusters com as permissões necessárias para acessar recursos na conta confiável.

  1. Etapa 1: Recupere o ARN da função de execução SageMaker de IA usada pelo seu espaço privado.

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

    Para obter mais informações sobre como recuperar o ARN da função de execução SageMaker da IA, consulte. Obtenha um perfil de execução

  2. Etapa 2: anexe as seguintes permissões à função de execução de SageMaker IA acessando seus clusters 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. Repita a etapa Criar política em linha para adicionar outra política que concede ao perfil de execução as permissões para provisionar novos clusters do Amazon EMR usando modelos do AWS CloudFormation . Para obter detalhes sobre o documento de política, consulte Criar EMRclusters políticas da Amazon emPolí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.

    10. (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 presumíveis (função de acesso) ao seu domínio ou perfil de usuário. JupyterLab os usuários no Studio podem usar o console de SageMaker IA ou o script fornecido.

    Escolha a guia que corresponde ao seu caso de uso.

    Associate your assumable roles in JupyterLab using the SageMaker AI console

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

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

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

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

      • Para adicionar suas funções presumí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 e selecione o perfil de usuário usando a função de execução de SageMaker IA cujas permissões você atualizou. Na guia Configurações do aplicativo, navegue até a JupyterLabseção.

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

    4. Selecione Enviar.

    Associate your assumable roles in JupyterLab using a Python script

    Em um JupyterLab aplicativo iniciado em um espaço usando a função de execução de SageMaker IA 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. Esse trecho de código atualiza as configurações do perfil do usuário para um perfil de usuário específico (usoclient.update_userprofile) ou configurações de domínio (usoclient.update_domain) em um domínio de SageMaker IA. Especificamente, ele permite que o JupyterLab aplicativo assuma uma função específica 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 de LCC que você usa deve ser uma JupyterServer configuração. 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.