Como resolvo erros AccessDenied do Amazon S3 em trabalhos de treinamento do Amazon SageMaker?

4 minuto de leitura
0

Meu trabalho de treinamento do Amazon SageMaker falhou com um erro AccessDenied, mesmo que a política do AmazonSageMakerFullAccess esteja anexada à função de execução.

Breve descrição

Erros AccessDenied indicam que sua política do AWS Identity and Access Management (IAM) não permite uma ou mais das seguintes ações do Amazon Simple Storage Service (Amazon S3):

  • s3:ListBucket
  • s3:GetObject
  • s3:PutObject

As permissões necessárias dependem da API do SageMaker que você está chamando. Por exemplo, a única ação do Amazon S3 que a API CreateModel exige é s3:GetObject. No entanto, a API CreateTrainingJob requer s3:GetObject, s3:PutObject e s3:ListObject. Para obter mais informações sobre as permissões necessárias para cada API, consulte Perfis do SageMaker.

Resolução

Os erros AccessDenied geralmente ocorrem nos seguintes cenários.

Bucket de entrada criptografado

Se os dados no bucket do S3 forem criptografados com o AWS Key Management Service (AWS KMS):

  • Certifique-se de que a política do IAM anexada ao perfil de execução permita as ações kms:encrypt e kms:decrypt. Para obter mais informações, consulte do Perfis do SageMaker.
  • Certifique-se de que a política de chave do AWS KMS conceda acesso ao perfil do IAM. Para obter mais informações, consulte Uso das principais políticas no AWS KMS.
  • Se estiver usando uma chave do AWS KMS para o volume de armazenamento de machine learning (ML) na configuração de recursos do seu trabalho, a política do IAM deve permitir a ação kms:CreateGrant. Para obter mais informações, consulte Uso de concessões. Para obter mais informações sobre a criptografia do volume de armazenamento de ML, consulte Proteja dados em repouso usando criptografia.
  • Ao usar o SDK do Python e implementar uma abstração da classe estimator.EstimatorBase, você deve passar os parâmetros output_kms_key e volume_kms_key por meio dos argumentos da palavra-chave kwargs. Isso deve ser feito independentemente de sua presença documentada na classe herdeira. Para obter mais informações, consulte Estimadores.

Limites de permissões

Se você definir limites de permissões para o perfil de execução, o SageMaker poderá executar somente as ações permitidas pela política do IAM e pelos limites de permissões. Certifique-se de que a política do IAM e os limites de permissões permitam as ações necessárias do Amazon S3.

Políticas do bucket

Se o bucket de entrada usar uma política de bucket, certifique-se de que a política de bucket permita que o perfil de execução execute as ações necessárias do Amazon S3. Para obter mais informações sobre políticas de bucket, consulte Políticas e permissões no Amazon S3.

Este é um exemplo de uma política de bucket que nega o acesso ao perfil de execução do SageMaker e causa um erro AccessDenied:

{
  "Version": "2012-10-17",
  "Id": "ExamplePolicy01",
  "Statement": [
    {
      "Sid": "ExampleStatement01",
      "Effect": "Deny",
      "Principal": {
        "AWS": "arn:aws:iam::Account-ID:role/SageMakerExecutionRole"
      },
      "Action": [
        "s3:GetObject",
        "s3:GetBucketLocation",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::awsdoc-example-bucket/*",
        "arn:aws:s3:::awsdoc-example-bucket"
      ]
    }
  ]
}

Acesso entre contas do Amazon S3

Se uma conta diferente da AWS for proprietária dos dados do Amazon S3:

  • Certifique-se de que ambas as contas tenham acesso à chave do AWS KMS. Se você não especificar uma chave do AWS KMS para o trabalho de treinamento, o SageMaker assumirá como padrão uma chave de criptografia do lado do servidor do Amazon S3. Uma chave de criptografia padrão do lado do servidor do Amazon S3 não pode ser compartilhada ou usada por outra conta da AWS.
  • Certifique-se de que a política do IAM para o perfil de execução do SageMaker e a política de bucket do S3 tenham permissões entre contas.

Para obter mais informações, consulte Como posso implantar um modelo do Amazon SageMaker em uma conta diferente da AWS?


Informações relacionadas

Como solucionar os erros 403 de Acesso Negado do Amazon S3?

AWS OFICIAL
AWS OFICIALAtualizada há um ano