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

4 minutos de lectura
0

Mi trabajo de entrenamiento de Amazon SageMaker no se ha podido completar y se ha producido un error de AccessDenied, a pesar de que la política de AmazonSageMakerFullAccess está asociada al rol de ejecución.

Descripción breve

Los errores de AccessDenied indican que su política de AWS Identity and Access Management (IAM) no permite una o más de las siguientes acciones de Amazon Simple Storage Service (Amazon S3):

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

Los permisos que necesita dependen de la API de SageMaker que está llamando. Por ejemplo, la única acción de Amazon S3 que requiere la API CreateModel es s3:GetObject. Sin embargo, la API CreateTrainingJob requiere s3:GetObject, s3:PutObject, y s3:ListObject. Para obtener más información sobre los permisos necesarios para cada API, consulte los roles de SageMaker.

Resolución

Los errores de AccessDenied suelen ocurrir en los siguientes escenarios.

Bucket de entrada cifrado

Si los datos del bucket S3 están cifrados con AWS Key Management Service (AWS KMS):

  • Asegúrese de que la política de IAM adjunta a la función de ejecución permita las acciones kms:encrypt y kms:decrypt. Para obtener más información, consulte los roles de SageMaker.
  • Asegúrese de que la política de claves de AWS KMS concede acceso al rol de IAM. Para obtener más información, consulte Utilización de políticas de claves en AWS KMS.
  • Si utiliza una clave de AWS KMS para el volumen de almacenamiento de machine learning (ML) en la configuración de recursos de su trabajo, la política de IAM debe permitir la acción kms:CreateGrant. Para obtener más información, consulte Utilización de concesiones. Para obtener más información sobre el cifrado del volumen de almacenamiento de ML, consulte Proteger los datos en reposo utilizando cifrado.
  • Al utilizar el Python SDK e implementar una abstracción de la clase estimator.EstimatorBase, debe pasar los parámetros output_kms_key y volume_kms_key a través de los argumentos de palabras clave de kwargs. Esto debe hacerse independientemente de su presencia documentada en la clase que hereda. Para obtener más información, consulte Estimadores.

Límites de permisos

Si define los límites de permisos para el rol de ejecución, SageMaker solo podrá ejecutar las acciones permitidas tanto por la política de IAM como por los límites de permisos. Asegúrese 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 buckets, asegúrese de que la política de buckets permita que el rol de ejecución realiza las acciones de Amazon S3 necesarias. Para obtener más información sobre las políticas de buckets, consulte Políticas y permisos en Amazon S3.

Este es un ejemplo de una política de buckets que deniega el acceso al rol de ejecución de SageMaker 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"
      ]
    }
  ]
}

Acceso a Amazon S3 entre cuentas

Si otra cuenta de AWS es propietaria de los datos de Amazon S3:

  • Asegúrese de que ambas cuentas tengan acceso a la clave de AWS KMS. Si no especifica una clave de AWS KMS para el trabajo de entrenamiento, entonces SageMaker utiliza por defecto una clave de cifrado del lado del servidor de Amazon S3. No se puede compartir ni utilizar una clave de cifrado predeterminada del lado del servidor de Amazon S3 con otra cuenta de AWS.
  • Asegúrese de que la política de IAM para el rol de ejecución de SageMaker y la política de buckets de S3 tengan permisos para varias cuentas.

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


Información relacionada

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

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año