Saltar al contenido

¿Cómo puedo solucionar los errores de AccessDenied de Amazon S3 en los trabajos de entrenamiento de SageMaker AI?

4 minutos de lectura
0

Mi trabajo de entrenamiento de Amazon SageMaker AI no se ha podido completar y se ha producido un error de AccessDenied, a pesar de que he adjuntado la política de AmazonSageMakerFullAccess al rol de ejecución. Quiero solucionar este problema.

Descripción corta

Es posible que se produzca un error de AccessDenied si la política de AWS Identity and Access Management (IAM) no permite las siguientes acciones de Amazon Simple Storage Service (Amazon S3):

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

La llamada a la API de SageMaker AI determina los permisos necesarios. Por ejemplo, la API CreateModel solo requiere s3:GetObject, pero la API CreateTrainingJob requiere s3:GetObject, s3:PutObject y s3:ListObject.

Resolución

Para resolver un error de AccessDenied, lleva a cabo las siguientes acciones en función de tu situación.

Bucket de entrada cifrado

Si has cifrado los datos del bucket de S3 con AWS Key Management Service (AWS KMS), comprueba los permisos. Asegúrate de que la política de IAM adjunta al rol de ejecución permita las acciones kms:encrypt y kms:decrypt. Comprueba que la política de claves de AWS KMS conceda acceso al rol de ejecución.

Puedes usar una clave de AWS KMS para el volumen de almacenamiento de machine learning (ML) en la configuración de recursos de tu trabajo. Si usas una clave de AWS KMS, la política de IAM debe permitir la acción kms:CreateGrant. Para obtener más información, consulta Concesiones en AWS KMS.

Nota: Se recomienda cifrar el volumen de almacenamiento de ML.

Al utilizar Python SDK e implementar una abstracción de la clase estimator.EstimatorBase, pasa los parámetros output_kms_key y volume_kms_key a través de los argumentos de palabras clave de kwargs. Realiza esta acción independientemente de la presencia documentada de los parámetros output_kms_key y volume_kms_key en la clase que hereda. Para obtener más información, consulta Estimadores en el sitio web de Amazon SageMaker Python SDK.

Límites de permisos

Si defines los límites de permisos para el rol de ejecución, SageMaker AI solo podrá ejecutar las acciones permitidas tanto por la política de IAM como por los límites de permisos. Asegúrate de que la política de IAM y los límites de permisos permitan las acciones de Amazon S3 necesarias.

Políticas de buckets

Si el bucket de entrada usa una política de bucket, esta debe permitir que el rol de ejecución realice las acciones de Amazon S3 necesarias.

El siguiente es un ejemplo de una política de bucket que deniega el acceso al rol de ejecución de SageMaker AI y provoca un error de 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"
      ]
    }
  ]
}

Nota: Para permitir el acceso al rol de ejecución, sustituye Denegar por Allow para el valor de Efecto.

Acceso entre cuentas de AWS

Si los datos de Amazon S3 pertenecen a otra cuenta de AWS, comprueba que ambas cuentas tengan acceso a la clave de AWS KMS. Si no especificas una clave de AWS KMS para el trabajo de entrenamiento, entonces SageMaker AI utiliza por defecto una clave de cifrado del lado del servidor de Amazon S3. Otra cuenta no puede compartir ni usar una clave de cifrado predeterminada del lado del servidor de Amazon S3.

Asegúrate de que la política de IAM para el rol de ejecución de SageMaker AI y la política de bucket de S3 tengan permisos para varias cuentas.

Para obtener más información, consulta ¿Cómo puedo desplegar un modelo de Amazon SageMaker AI en otra cuenta de AWS?

Información relacionada

¿Cómo puedo solucionar los errores 403 de acceso denegado de Amazon S3?

Uso de los roles de ejecución de SageMaker AI

OFICIAL DE AWSActualizada hace 7 meses