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, digite um nome de função.

  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 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 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 workspace configurações de administração do Databricks, tab vá para a Segurança e clique em gerenciar ao lado do instance profile.

  2. Clique em Adicionar instance profile.

  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: Configurar o acesso ao S3 com um instance profile.

Etapa 6: iniciar um cluster com o instance profile

Consulte instance profile.