Saltar al contenido

¿Cómo soluciono los problemas de operaciones por lotes de Amazon S3?

9 minutos de lectura
0

Cuando creo un trabajo de operaciones por lotes de Amazon Simple Storage Service (Amazon S3) para los objetos de mi bucket, Amazon S3 devuelve un error. O bien, se produce un error en el trabajo de operaciones por lotes de Amazon S3.

Resolución

Para hacer un seguimiento de los errores del trabajo, solicita los detalles del trabajo o un informe de finalización. Después de determinar la causa y resolver el problema, vuelve a enviar el trabajo de Operaciones por lotes de S3.

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

El formato del archivo de manifiesto .csv o .json es incorrecto

Operaciones por lotes de S3 admite los archivos de manifiesto de inventario .csv y .json. Si no formateas correctamente el archivo de manifiesto, debes crear un nuevo trabajo por lotes en Amazon S3 y especificar el formato correcto.

Cuando especifiques el manifiesto, realiza las siguientes acciones:

  • Para el informe de Amazon S3 Inventory, utiliza un informe con formato .csv y especifica el archivo manifest.json asociado al informe de inventario.
  • En el caso de los archivos .csv, incluye el nombre del bucket y la clave de objeto en cada fila del archivo de manifiesto. También puedes incluir la versión del objeto. Si incluyes los ID de versión en el manifiesto, debes especificar los ID de todos los objetos.
    Nota: Debes codificar las claves de objeto mediante URL.
  • Si los objetos están en un bucket con control de versiones, debes especificar los ID de versión de los objetos. De lo contrario, el trabajo por lotes fallará. O bien, Amazon S3 podría aplicar el trabajo por lotes a la versión incorrecta del objeto.

El archivo de manifiesto especifica varios nombres de bucket o contiene varias filas de encabezado

Si todos los objetos que se enumeran en el archivo de manifiesto no existen en el mismo bucket, se muestra el siguiente mensaje de error:

«Reasons for failure: Cannot have more than 1 bucket per Job. JOB_ID»

Asegúrate de que el archivo de manifiesto especifique solo un nombre de bucket y no contenga filas de encabezados.

Ejemplo de archivo de manifiesto que contiene varias filas de encabezados:

bucket,keymy-batch-bucket,object001.txt
my-batch-bucket,object002.txt
my-batch-bucket,object003.txt
my-batch-bucket,object004.txt

El rol de IAM no tiene permiso para leer el archivo de manifiesto

Si el rol de AWS Identity and Access Management (IAM) no tiene permiso para leer el manifiesto, se muestra uno de los siguientes errores:

«Reason for failure Reading the manifest is forbidden: AccessDenied» de la AWS CLI.

Alternativa:

«Warning: Unable to get the manifest object's ETag. Specify a different object to continue» desde la consola de Amazon S3.

El rol de IAM que crea el trabajo de operaciones por lotes de S3 debe tener permiso de lectura GetObject para el archivo de manifiesto. Comprueba los metadatos del objeto para ver si el acceso no coincide con la propiedad del objeto de S3. Además, comprueba las claves de AWS Key Management Service (AWS KMS) no compatibles que cifran el archivo de manifiesto.

Nota: Las operaciones por lotes de S3 admiten informes de inventario de .csv cifrados por AWS KMS. Las operaciones por lotes de S3 no admiten archivos de manifiesto .csv cifrados por AWS KMS. Para obtener más información, consulta Configuración del inventario mediante la consola de Amazon S3.

El trabajo por lotes se encuentra en una región diferente

Los trabajos de copia de las operaciones por lotes de S3 deben estar en la misma región de AWS que el bucket de destino. Por ejemplo, si el bucket de destino se encuentra en la región us-west-2, selecciona us-west-2 como región al crear el trabajo por lotes.

Falta el bucket de destino de tu informe de inventario de S3

Debes haber un bucket de destino para el manifiesto que genera las operaciones por lotes de S3. La política de bucket de Amazon S3 también debe permitir la acción s3:PutObject. Si el trabajo envía el informe a otra cuenta de AWS, confirma que el bucket de destino permite que el rol de IAM realice la acción s3:PutObject.

Falta la política de confianza del rol de IAM

La política de confianza para un rol de IAM define las condiciones requeridas para que otras entidades principales asuman el rol. Para permitir que la entidad principal de servicio de las operaciones por lotes de S3 asuma el rol de IAM, asocia una política de confianza al rol.

Ejemplo de política:

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

Nota: Asegúrate de especificar un rol de IAM y no un usuario de IAM.

Al rol de IAM le faltan los permisos para crear un trabajo por lotes

Para crear un trabajo de operaciones por lotes de S3, concede el permiso s3:CreateJob al rol de IAM. La entidad que crea el trabajo también debe tener el permiso iam:PassRole para transferir el rol de IAM que especifiques para el trabajo por lotes. Para obtener más información, consulta Elementos de política JSON de IAM: recurso.

Al rol de IAM le faltan los permisos para realizar operaciones de trabajo por lotes

Asegúrate de conceder al rol de IAM los permisos correctos para realizar operaciones específicas en un trabajo por lotes.

Ejemplo de política de IAM con los permisos necesarios para la operación de copia:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectTagging"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::{{DestinationBucket}}/*"
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectTagging",
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::{{SourceBucket}}",
                "arn:aws:s3:::{{SourceBucket}}/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::{{ManifestBucket}}/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::{{ReportBucket}}/*"
            ]
        }
    ]
}

El SCP de AWS Organizations deniega el acceso

Si usas Organizations, confirma que no haya ninguna instrucción Deny en la política de control de servicio (SCP) que deniegue el acceso a Amazon S3. De lo contrario, podría aparecer un error de acceso denegado al crear un trabajo por lotes.

Ejemplo de SCP que deniega explícitamente todas las acciones de S3:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Principal": "*",
            "Effect": "Deny",
            "Action": "s3:*",
            "Resource": "*"
        }
    ]
}

Para aplicar una política restrictiva, agrega el rol de IAM asumido de Operaciones por lotes de S3 a la lista de permitidos.

Ejemplo de política restrictiva:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Principal": "*",
            "Effect": "Deny",
            "Action": "s3:*",
            "Resource": "*",
            "Condition": {
                "StringNotLike": {
                    "aws:userId": [
                        "AROAEXAMPLEID:*",
                        "AIDAEXAMPLEID",
                        "111111111111"
                    ]
                }
            }
        }
    ]
}

Falta el ID de versión de un objeto en el manifiesto

Si un trabajo de operaciones por lotes de S3 encuentra un objeto en el manifiesto que tiene un campo de identificador de versión vacío, se mostrará el siguiente error:

«Error: BUCKET_NAME,prefix/file_name,failed,400,InvalidRequest,Task failed due to missing VersionId»

Si el formato del manifiesto usa ID de versión durante la operación, el campo ID de versión no puede ser una cadena vacía. En su lugar, el campo ID de versión debe ser una cadena nula. Para resolver este problema, convierte los ID de versión vacíos en cadenas nulas.

Nota: Las operaciones por lotes de S3 solo fallan para el objeto especificado, no para todo el trabajo.

Amazon S3 no entrega el informe del trabajo porque utilizas la retención Object Lock

Si configuras la retención Object Lock de S3 en un bucket de destino en el modo de gobernanza o en el modo de cumplimiento, podría mostrarse este error:

«Error: Reasons for failure. The job report could not be written to your bucket. Check your permissions».

Amazon S3 no admite Object Lock para los buckets de destino con configuraciones de modo de retención. Cuando se configura el modo de retención, el bucket está protegido contra escritura única y lectura múltiple (WORM). Para resolver este problema, elige un bucket de destino que no tenga retención de Object Lock.

Nota: Solo falla el informe de finalización, no el trabajo. El trabajo se completa correctamente y todos los objetos se procesan.

Las versiones de la ETag no coinciden

Si el valor de la ETag de la consola de Amazon S3 o de la AWS CLI no coincide con la ETag del bucket, se mostrará el siguiente error:

«Error reading the manifest. Caused by: ETag mismatch. Expected ETag: 69f52a4e9f797e987155d9c8f5880897»

Al seleccionar el manifiesto en el trabajo de operaciones por lotes de S3, puedes especificar la clave del objeto del manifiesto, la ETag y el ID de versión opcional. Asegúrate de que el valor de la ETag coincida con la ETag de la última versión del objeto de manifiesto en el bucket de S3. En la pestaña Operaciones por lotes de la consola de Amazon S3, comprueba la ETag del objeto del manifiesto en las propiedades del archivo de manifiesto. En la AWS CLI, comprueba el valor de la ETag que supera la especificación del manifiesto.

Nota: Si creas un trabajo de operaciones por lotes de S3 como un clon de un trabajo existente, actualiza la ETag en el manifiesto clonado.

Errores HTTP 500 y 503

Cuando Amazon S3 no puede procesar la solicitud, recibes un código de estado de error interno 500. Cuando el número de solicitudes al bucket de S3 es alto, recibes el código de estado 503 Ralentización. Para resolver estos problemas, consulta ¿Cómo puedo solucionar un error HTTP 500 o 503 de Amazon S3?

Nota: Se recomienda crear una lógica de reintento en las aplicaciones que realizan solicitudes a Amazon S3.

OFICIAL DE AWSActualizada hace 3 meses