Configurar autenticação da AWS para implantação do SageMaker

Este artigo descreve como configurar instance profiles para permitir que você implemente modelos do MLflow no AWS SageMaker.É possível usar chaves de acesso para um usuário da AWS com permissões semelhantes às da IAM role especificada aqui, mas a Databricks recomenda o uso de instance profiles para dar permissão para implantar um cluster no SageMaker.

Etapa 1: criar uma IAM role da AWS e anexar a política de permissão do SageMaker

  1. No console da AWS, acesse o serviço IAM .

  2. Clique na guia Funções na barra lateral.

  3. Clique em Criar função.

    1. Em Selecionar tipo de entidade confiável, selecione Serviço da AWS.

    2. Em Escolher o serviço que utilizará essa função, clique no serviço EC2.

      Selecionar serviço
    3. Clique em Próximo: permissões.

  4. Na tela Anexar políticas de permissões, selecione AmazonSageMakerFullAccess.

    Anexar permissão do SageMaker
  5. Clique em Próximo: revisão.

  6. No campo Nome da função, insira um nome de papel.

  7. Clique em Criar função.

  8. Na lista Funções, clique no nome da função.

    Resumo da função

Anote o ARN da sua função, que tem o formato arn:aws:iam::<account-id>:role/<role-name>.

Etapa 2: adicionar uma política embutida para acessar os recursos de implantação do SageMaker

Adicione uma política à função.

  1. Clique em Política em linha.

  2. Cole a seguinte definição JSON:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Action": [
            "s3:PutObjectAcl",
            "s3:PutObjectTagging"
          ],
          "Resource": [
            "arn:aws:s3:::mlflow-sagemaker-*-<account-id>",
            "arn:aws:s3:::mlflow-sagemaker-*-<account-id>/*"
          ],
          "Effect": "Allow"
        },
        {
          "Action": [
            "iam:GetRole"
          ],
          "Resource": [
            "arn:aws:iam::<account-id>:role/<role-name>"
          ],
          "Effect": "Allow"
        },
        {
          "Action": [
            "ecr:DescribeGitRepositories"
          ],
          "Resource": [
            "arn:aws:ecr:*:<account-id>:repository/*"
          ],
          "Effect": "Allow"
        }
      ]
    }
    

Essas permissões são necessárias para permitir que o cluster Databricks:

  1. Obtenha o ARN canônico da nova função.

  2. Faça upload de objetos com escopo de permissão para o S3 para uso pelos servidores de endpoint do SageMaker.

As permissões da função terão a seguinte aparência:

Permissões de função

Etapa 3: atualizar a política de confiança da função

Adicione iam:AssumeRole acesso ao sagemaker.amazonaws.com.

  1. Acesse Resumo da função > Relações de confiança > Editar relação de confiança.

  2. Cole e salve o seguinte JSON:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "ec2.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        },
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "sagemaker.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

Os relacionamentos de confiança da sua função devem se assemelhar ao seguinte:

Relações de confiança

Etapa 4: permitir que a função Databricks workspace AWS passe a função

  1. Acesse sua função Databricks workspace AWS.

  2. Clique em Política em linha.

  3. Cole e salve a seguinte definição JSON:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Action": [
            "iam:PassRole"
          ],
          "Resource": [
            "arn:aws:iam::<account-id>:role/<role-name>"
          ],
          "Effect": "Allow"
        }
      ]
    }
    

em que account-id é o ID da account que executa o serviço AWS SageMaker e role-name é a função que você definiu na Etapa 1.

Etapa 5: criar um instance profile de clusters da Databricks

  1. Nas configurações de administrador do Databricks workspace , acesse Security tab e clique em gerenciar ao lado de instance profile.

  2. Clique em Add instance profile (Adicionar perfil de instância).

  3. Cole o ARN do instance profile associado à função da AWS que você criou. Esse ARN tem o formato arn:aws:iam::<account-id>:instance-profile/<role-name> e pode ser encontrado no console da AWS:

    ARN instance profile
  4. Clique no botão Adicionar .

    Adicionar IAM role

Para obter detalhes, consulte tutorial: Configure o acesso S3 com um instance profile.

Etapa 6: iniciar um cluster com o instance profile

Veja o perfil da instância.