Creación de trabajos de operaciones por lotes de S3
Las Operaciones por lotes de Amazon S3 le permiten realizar operaciones por lotes a gran escala en una lista de objetos de Amazon S3 concretos. Esta sección contiene la información que necesita para crear un trabajo de Operaciones por lotes de S3 y los resultados de una solicitud CreateJob. También proporciona instrucciones para crear un trabajo de la herramienta de operaciones por lotes con la consola, AWS Command Line Interface (AWS CLI) y AWS SDK para Java.
Cuando crea un trabajo de operaciones por lotes de S3, puede solicitar un reporte de finalización para todas las tareas o solo para las tareas que no se realicen. Siempre que se haya invocado correctamente al menos una tarea, Operaciones por lotes de S3 genera un informe para los trabajos que se han completado, que han fallado o que se han cancelado. Para obtener más información, consulte Ejemplos: informes de finalización de las operaciones por lotes de S3.
El siguiente vídeo proporciona una breve demostración sobre cómo crear un trabajo de operaciones por lotes con la consola de Amazon S3.
Temas
Elementos de una solicitud de trabajo de Operaciones por lotes
Para crear un trabajo de Operaciones por lotes de S3 debe proporcionar la siguiente información:
- Operation
-
Especifique la operación que quiere que Operaciones por lotes de S3 ejecute en los objetos del manifiesto. Cada tipo de operación acepta parámetros específicos de dicha operación. Con Operaciones por lotes, puede realizar una operación por lotes con los mismos resultados que si realizase esa operación una por una en cada proyecto.
- Manifiesto
-
Un manifiesto es un objeto de Amazon S3 que contiene las claves de objeto sobre las que desea que actúe Amazon S3. Puede usar los siguientes métodos para especificar un manifiesto para un trabajo de Operaciones por lotes:
-
Dirija las operaciones por lotes para generar una lista de objetos basada en los metadatos que especifique. Puede guardar esta lista como un archivo de manifiesto y utilizarla al crear el trabajo. Esta opción está disponible para cualquier tipo de trabajo que cree mediante la consola de Amazon S3, la AWS CLI, los AWS SDK o la API de REST de Amazon S3.
-
Genere automáticamente una lista de objetos en función de una configuración de replicación existente. Puede guardar esta lista como un archivo de manifiesto y volver a utilizarla para futuros trabajos.
-
Crear un nuevo archivo de manifiesto manualmente.
-
Usar un manifiesto existente.
nota
-
Independientemente de cómo especifique los objetos en los que trabajar, el mismo manifiesto se debe almacenar en un bucket de uso general. Operaciones por lotes no puede importar los manifiestos existentes ni guardar las listas de objetos generadas como manifiestos en buckets de directorio. Sin embargo, los objetos descritos en el manifiesto se pueden almacenar en buckets de directorio. Para obtener más información, consulte Buckets de directorio.
-
Si los objetos del manifiesto están en un bucket versionado, especificar los ID de versión de los objetos dirige las Operaciones por lotes para realizar la operación en una versión específica. Si no se especifican los ID de versión, Operaciones por lotes realiza la operación en la versión más reciente de los objetos. Si el manifiesto incluye un campo de ID de versión, debe proporcionar un ID de versión para todos los objetos del manifiesto.
Para obtener más información, consulte Especificar un manifiesto.
-
- Prioridad
-
Utilice las prioridades de los trabajos para indicar la prioridad relativa de este trabajo con respecto a otros que se estén ejecutando en la cuenta. Cuanto más elevado sea el número, mayor será la prioridad.
Las prioridades de trabajo solo tienen significado en relación con las prioridades establecidas para otros trabajos de la misma cuenta y región. Puede elegir el sistema de numeración que mejor le convenga. Por ejemplo, es posible que desee asignar una prioridad de 1 todos los trabajos Restaurar (
RestoreObject), una prioridad de 2 a todos los trabajos Copiar (CopyObject) y una prioridad de 3 a todos los trabajos Reemplazar listas de control de acceso (ACL) (PutObjectAcl)Operaciones por lotes de S3 establece la prioridad de los trabajos en función de los números asignados, pero el orden no siempre se mantiene de forma estricta. De este modo, no utilice prioridades de trabajo para garantizar que cualquier trabajo comience o finalice antes que cualquier otro trabajo. Si debe garantizar un orden estricto, debe esperar hasta que un trabajo finalice para comenzar el siguiente.
- RoleArn
-
Especifique un rol de AWS Identity and Access Management (IAM) que ejecute el trabajo. El rol de IAM que utilice debe tener permisos suficientes para realizar la operación especificada en el trabajo. Por ejemplo, para ejecutar un trabajo
CopyObject, el rol de IAM debe tener el permisos3:GetObjecten el bucket de origen y el permisos3:PutObjecten el bucket de destino. El rol también necesita permisos para leer el manifiesto y escribir el informe de finalización.Para obtener más información acerca de los roles de IAM, consulte Roles de IAM en la Guía del usuario de IAM.
Para obtener más información sobre los permisos de Amazon S3, consulte Acciones de políticas para Amazon S3.
nota
Los trabajos de Operaciones por lotes que realizan acciones en buckets de directorio requieren permisos específicos. Para obtener más información, consulte AWS Identity and Access Management (IAM) para S3 Express One Zone.
- Informar
-
Especifique si desea que Operaciones por lotes de S3 genere un informe de finalización. Si solicita un informe de finalización, tiene que proporcionar los parámetros del informe en este elemento. Es necesaria la siguiente información:
-
el bucket donde desea almacenar el reporte,
nota
El informe debe almacenarse en un bucket de uso general. Operaciones por lotes no puede guardar los informes en los buckets de directorio. Para obtener más información, consulte Buckets de directorio.
-
el formato del reporte,
-
si desea que el reporte incluya los detalles de todas las tareas o solo las tareas con error,
-
una cadena de prefijo opcional.
Si se proporciona el campo
CreateJob.Report.ExpectedBucketOwner, es necesario que el propietario del bucket del informe de finalización coincida. Si no coincide, el trabajo no funciona.nota
Los informes de finalización siempre se cifran con cifrado de servidor con claves administradas por Amazon S3 (SSE-S3).
-
- Tags (Etiquetas) (opcionales)
-
Para etiquetar y controlar el acceso a los trabajos de Operaciones por lotes de S3, puede añadir etiquetas. Puede utilizar etiquetas para identificar quien es el responsable de un trabajo de Operaciones por lotes, o bien para controlar cuántos usuarios interactúan con los trabajos de Operaciones por lotes. La presencia de etiquetas de trabajo puede conceder o limitar la capacidad de un usuario para cancelar un trabajo, activar un trabajo en estado de confirmación o cambiar el nivel de prioridad de un trabajo. Por ejemplo, puede conceder permiso a un usuario para invocar la operación
CreateJobsiempre que el trabajo se haya creado con la etiqueta"Department=Finance".Puede crear trabajos con etiquetas asociadas a ellos y puede añadir etiquetas a los trabajos después de crearlos.
Para obtener más información, consulte Controlar el acceso y etiquetar trabajos usando etiquetas.
- Descripción (opcional)
-
Para realizar un seguimiento y monitorear su trabajo también puede proporcionar una descripción de hasta 256 caracteres. Amazon S3 incluye esta descripción siempre que devuelve información sobre un trabajo o muestra los detalles del trabajo en la consola de Amazon S3. Puede ordenar y filtrar los trabajos fácilmente en función de las descripciones asignadas. Las descripciones no tienen que ser únicas, por lo que puede usar descripciones como categorías (por ejemplo: "trabajos de copia de registros semanales") que le ayuden a hacer un seguimiento de los grupos de trabajos parecidos.
Especificar un manifiesto
Un manifiesto es un objeto de Amazon S3 que contiene las claves de objeto sobre las que desea que actúe Amazon S3. Puede usar los siguientes métodos para especificar un manifiesto para un trabajo de Operaciones por lotes:
-
Dirija las operaciones por lotes para generar una lista de objetos basada en los metadatos que especifique. Puede guardar esta lista como un manifiesto y utilizarla al crear el trabajo. Esta opción está disponible para cualquier tipo de trabajo que cree mediante la consola de Amazon S3, la AWS CLI, los AWS SDK o la API de REST de Amazon S3.
-
Genere automáticamente una lista de objetos en función de una configuración de replicación existente. Puede guardar esta lista como un manifiesto y volver a utilizarla para futuros trabajos.
-
Crear un nuevo archivo de manifiesto manualmente.
-
Usar un manifiesto existente.
nota
Operaciones por lotes de Amazon S3 no admite la generación de listas de objetos entre regiones.
Independientemente de cómo especifique los objetos en los que trabajar, el mismo manifiesto se debe almacenar en un bucket de uso general. Operaciones por lotes no puede importar los manifiestos existentes ni guardar las listas de objetos generadas como manifiestos en buckets de directorio. Sin embargo, los objetos descritos en el manifiesto se pueden almacenar en buckets de directorio. Para obtener más información, consulte Buckets de directorio.
Generación de una lista de objetos automáticamente y guardado como un archivo de manifiesto
Puede indicar a Amazon S3 que genere una lista de objetos automáticamente en función de los metadatos que especifique. Puede guardar esta lista como un manifiesto y utilizarla al crear el trabajo. Esta opción está disponible para cualquier tipo de trabajo que cree mediante la consola de Amazon S3, la AWS CLI, los AWS SDK o la API de REST de Amazon S3.
Para generar una lista de objetos automáticamente y guardarla como un archivo de manifiesto, debe especificar los siguientes elementos como parte de la solicitud de creación de trabajo:
-
Información sobre el bucket que contiene los objetos de origen, incluidos el propietario del bucket y el nombre de recurso de Amazon (ARN).
-
Información sobre la salida del manifiesto, incluida una marca para crear un archivo de manifiesto, el propietario del bucket de salida, el ARN, el prefijo, el formato de archivo y el tipo de cifrado.
-
Criterios opcionales para filtrar los objetos por su fecha de creación, nombre de clave, tamaño, tipo de cifrado, ARN de la clave de KMS, clave de bucket y clase de almacenamiento. En el caso de los trabajos de replicación, también puede utilizar etiquetas para filtrar los objetos.
Criterios de filtro de objetos
Para filtrar la lista de objetos que se van a incluir en una lista de objetos generada automáticamente, puede especificar los siguientes criterios. Para obtener más información, consulte JobManifestGeneratorFilter en la Referencia de la API de Amazon S3.
- CreatedAfter
-
Si se proporciona, el manifiesto generado incluye solo los objetos del bucket de origen que se crearon después de este tiempo.
- CreatedBefore
-
Si se proporciona, el manifiesto generado incluye solo los objetos del bucket de origen que se crearon antes de este tiempo.
- EligibleForReplication
-
Si se proporciona, el manifiesto generado incluye los objetos solo si son aptos para la replicación de acuerdo con la configuración de replicación del bucket de origen.
- KeyNameConstraint
-
Si se proporciona, el manifiesto generado incluye solo los objetos del bucket de origen cuyas claves de objeto coincidan con las restricciones de cadena especificadas para MatchAnySubstring, MatchAnyPrefix, and MatchAnySuffix
MatchAnySubstring si se proporciona, el manifiesto generado incluye objetos si la cadena especificada aparece en cualquier parte de la cadena de la clave del objeto.
MatchAnyPrefix: si se proporciona, el manifiesto generado incluye objetos si la cadena especificada aparece al principio de la cadena de la clave del objeto.
MatchAnySuffix: si se proporciona, el manifiesto generado incluye objetos si la cadena especificada aparece al final de la cadena de la clave del objeto.
- MatchAnyObjectEncryption
-
Si se proporciona, la lista de objetos generada guardada como un archivo de manifiesto incluye solo objetos de bucket de origen con el tipo de cifrado del servidor indicado (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C o NOT-SSE). Si selecciona SSE-KMS o DSSE-KMS, puede filtrar más los resultados de manera opcional especificando un ARN de clave de KMS específico. Si selecciona SSE-KMS, también puede filtrar opcionalmente los resultados según el estado de activación de la clave del bucket.
- MatchAnyStorageClass
-
Si se proporciona, el manifiesto generado incluye solo los objetos del bucket de origen que se almacenan con la clase de almacenamiento especificada.
- ObjectReplicationStatuses
-
Si se proporciona, el manifiesto generado incluye solo los objetos del bucket de origen que tengan uno de los estados de replicación especificados.
- ObjectSizeGreaterThanBytes
-
Si se proporciona, el manifiesto generado incluye solo los objetos del bucket de origen cuyo tamaño de archivo sea superior al número de bytes especificado.
- ObjectSizeLessThanBytes
-
Si se proporciona, el manifiesto generado incluye solo los objetos del bucket de origen cuyo tamaño de archivo sea inferior al número de bytes especificado.
nota
No puede clonar la mayoría de los trabajos que tienen listas de objetos generadas automáticamente como manifiestos. Los trabajos de replicación por lotes se pueden clonar, excepto cuando utilizan los criterios de filtro de manifiesto KeyNameConstraint, MatchAnyStorageClass, ObjectSizeGreaterThanBytes o ObjectSizeLessThanBytes.
La sintaxis para especificar los criterios del manifiesto varía en función del método que utilice para crear el trabajo. Para ver ejemplos, consulta Creación de una tarea.
Creación de un archivo de manifiesto
Si crea un archivo manifiesto manualmente, debe especificar la clave de objeto del manifiesto, una ETag (etiqueta de entidad) y un ID de versión opcional en una lista con formato CSV. El contenido del manifiesto debe tener codificación URL.
De forma predeterminada, Amazon S3 utiliza automáticamente el cifrado del servidor con claves administradas de Amazon S3 (SSE-S3) para cifrar un manifiesto que se carga en un bucket de Amazon S3. No se admiten los manifiestos que utilizan cifrado del lado del servidor con claves proporcionadas por el cliente (SSE-C). Solo se admiten los manifiestos que utilizan el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS) cuando se utilizan informes de inventario con formato CSV. No se admite el uso de un manifiesto creado manualmente con AWS KMS.
El manifiesto debe contener el nombre del bucket, la clave del objeto y, de manera opcional, la versión del objeto. Las operaciones por lotes de S3 no utilizan ninguno de los demás campos.
nota
Si los objetos del manifiesto están en un bucket versionado, especificar los ID de versión de los objetos dirige las Operaciones por lotes para realizar la operación en una versión específica. Si no se especifican los ID de versión, Operaciones por lotes realiza la operación en la versión más reciente de los objetos. Si el manifiesto incluye un campo de ID de versión, debe proporcionar un ID de versión para todos los objetos del manifiesto.
A continuación, se muestra un ejemplo de un manifiesto en formato CSV sin los ID de versión.
amzn-s3-demo-bucket1,objectkey1 amzn-s3-demo-bucket1,objectkey2 amzn-s3-demo-bucket1,objectkey3 amzn-s3-demo-bucket1,photos/jpgs/objectkey4 amzn-s3-demo-bucket1,photos/jpgs/newjersey/objectkey5 amzn-s3-demo-bucket1,object%20key%20with%20spaces
A continuación, se muestra un manifiesto de ejemplo en formato CSV que incluye los ID de versión.
amzn-s3-demo-bucket1,objectkey1,PZ9ibn9D5lP6p298B7S9_ceqx1n5EJ0p amzn-s3-demo-bucket1,objectkey2,YY_ouuAJByNW1LRBfFMfxMge7XQWxMBF amzn-s3-demo-bucket1,objectkey3,jbo9_jhdPEyB4RrmOxWS0kU0EoNrU_oI amzn-s3-demo-bucket1,photos/jpgs/objectkey4,6EqlikJJxLTsHsnbZbSRffn24_eh5Ny4 amzn-s3-demo-bucket1,photos/jpgs/newjersey/objectkey5,imHf3FAiRsvBW_EHB8GOu.NHunHO1gVs amzn-s3-demo-bucket1,object%20key%20with%20spaces,9HkPvDaZY5MVbMhn6TMn1YTb5ArQAo3w
Uso de un manifiesto existente
Puede especificar un manifiesto existente para crear un trabajo de operaciones por lotes mediante uno de los siguientes dos formatos:
-
Informe de Inventario de Amazon S3: debe ser un informe de Inventario de Amazon S3 con formato CSV. Debe especificar el archivo
manifest.jsonque está asociado con el informe de inventario. Para obtener más información sobre los informes de inventario, consulte Catálogo y análisis de sus datos con Inventario de S3. Si el informe de inventario incluye los identificadores de las versiones, las Operaciones por lotes de S3 se ejecutan en las versiones del objeto especificadas.nota
-
Las operaciones por lotes de S3 son compatibles con los informes de inventario que están cifrados con SSE-KMS.
-
Si envía un manifiesto de informe de inventario cifrado con SSE-KMS, su política de IAM debe incluir los permisos
"kms:GenerateDataKey"ymanifest.jsonpara el objeto"kms:Decrypt"y todos los archivos de datos CSV asociados.
-
-
Archivo CSV: cada fila del archivo debe incluir el nombre del bucket, la clave del objeto y, de manera opcional, la versión del objeto. Las claves de objeto deben estar codificadas como URL, tal y como se muestra en los siguientes ejemplos. El manifiesto debe incluir los ID de versión de todos los objetos u omitirlos. Para obtener más información acerca de el formato de manifiesto de CSV, consulte JobManifestSpec en la Referencia de la API de Amazon Simple Storage Service.
nota
Las Operaciones por lotes de S3 no admiten archivos de manifiesto CSV cifrados por SSE-KMS.
importante
Cuando utiliza un manifiesto creado manualmente y un bucket con control de versiones, le recomendamos que especifique los ID de versión de los objetos. Cuando se crea un objeto, las Operaciones por lotes de S3 analizan todo el manifiesto antes de ejecutar el trabajo. Sin embargo, no realizan una "instantánea" del estado del bucket.
Puesto que los manifiestos pueden contener miles de millones de objetos, los trabajos tardan mucho tiempo en ejecutarse, lo que puede afectar a la versión de un objeto sobre la que actúa el trabajo. Supongamos que sobrescribe un objeto con una versión nueva mientras un trabajo está en ejecución y no especificó el ID de versión de ese objeto. En este caso, Amazon S3 realiza la operación en la última versión del objeto, no en la versión que existe cuando se creó el trabajo. La única manera de evitar este comportamiento consiste en especificar los ID de versión de los objetos que aparecen en el manifiesto.
Creación de una tarea
Puede crear trabajos de operaciones por lotes de S3 mediante la consola de Amazon S3, AWS CLI, los SDK de AWS o la API de REST de Amazon S3.
Para obtener más información acerca de la creación de una solicitud de trabajo, consulte Elementos de una solicitud de trabajo de Operaciones por lotes.
Requisitos previos
Antes de crear un trabajo de operaciones por lotes, confirme que ha configurado los permisos pertinentes. Para obtener más información, consulte Concesión de permisos para Operaciones por lotes.
Creación de un trabajo de operaciones por lotes mediante la consola de S3
Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/
. -
Seleccione Batch Operations (Operaciones por lotes) en el panel de navegación izquierdo de la consola de Amazon S3.
-
Seleccione Crear tarea.
-
En Elegir región y ámbito, elija y consulte la región de AWS en la que desea crear el trabajo.
nota
Para las operaciones de copia, debe crear el trabajo en la misma región que el bucket de destino. Para las demás operaciones, debe crear el trabajo en la misma región que los objetos en el manifiesto.
-
En Ámbito, especifique la lista de objetos sobre los que actuará el trabajo de operaciones por lotes.
En Lista de objetos, puede elegir entre generar un manifiesto mediante una lista de objetos, generar un manifiesto mediante una configuración de replicación o utilizar un manifiesto existente.
-
Si elige Generar una lista de objetos, se generará automáticamente una lista de objetos en función de la ubicación de origen y de los metadatos que especifique. Puede guardar esta lista como un manifiesto y volver a utilizarla para futuros trabajos.
nota
Nota: para generar una lista de objetos, debe tener el permiso
s3:PutInventoryConfiguration. El bucket de origen debe ser un bucket de uso general. -
Si elige Usar un manifiesto existente, puede importar una lista de objetos de un manifiesto existente. Un manifiesto es un informe de inventario de S3 o un archivo CV que muestra los objetos específicos sobre los que desea que operaciones por lotes actúe.
-
Si elige Usar una configuración de replicación, puede generar una lista de objetos automáticamente en función de una configuración de replicación existente. Puede guardar esta lista como un manifiesto y volver a utilizarla para futuros trabajos.
Para este ejemplo, elija Generar una lista de objetos.
-
-
En Cuenta de origen, elija la cuenta que es propietaria de los objetos de origen.
-
En Origen, ingrese la ruta al origen, por ejemplo,
s3://amzn-s3-demo-bucket. -
En Filtros de objetos, puede usar filtros para filtrar por cualquier parte de la clave de objeto o filtrar por el final de la clave de objeto. Los Filtros de clave de objeto ayudan a ajustar la lista de objetos que se utilizarán en el manifiesto. Para Filtros de metadatos de objetos, elija filtros para definir mejor el alcance de los objetos que se van a incluir en el manifiesto.
-
En Elegir operación, elija el tipo de operación que desee realizar en todos los objetos mostrados en el manifiesto. Si el manifiesto hace referencia a objetos almacenados en un bucket de directorio, utilice solo las operaciones de copia o invocación de la función de AWS Lambda. No se admiten todas las demás operaciones
Después de seleccionar el tipo de operación, elija Siguiente.
Rellene los datos de Configurar otras opciones y haga clic en Siguiente.
En Review (Revisar), compruebe la configuración. Si necesita realizar cambios, elija Anterior. De lo contrario, puede elegir Crear trabajo.
Para crear su trabajo de Operaciones por lotes con la AWS CLI, elija uno de los siguientes ejemplos, en función de si está especificando un manifiesto existente o generando un manifiesto automáticamente.
Para crear el trabajo de operaciones por lotes con el AWS SDK para Java, puede elegir entre dos enfoques en función de si está especificando un manifiesto existente o generando un manifiesto automáticamente:
-
Especificar el manifiesto existente: cree un trabajo de operaciones por lotes de S3 (por ejemplo,
S3PutObjectTagging) que actúe en objetos mostrados en un archivo de manifiesto existente. Este enfoque requiere que proporcione la ubicación del manifiesto, la ETag y las especificaciones de formato. -
Generar el manifiesto automáticamente: cree un trabajo de operaciones por lotes de S3 (por ejemplo,
s3PutObjectCopy) que genere automáticamente un manifiesto en función de los criterios de filtro de objetos, incluida la fecha de creación, el nombre de la clave y las restricciones de tamaño.
Ambos enfoques utilizan el cliente de S3Control para configurar las operaciones de los trabajos, las especificaciones de los manifiestos, los informes de los trabajos, los roles de IAM y otros parámetros de los trabajos, incluidos los requisitos de prioridad y confirmación.
Para ver ejemplos de cómo crear trabajos de operaciones por lotes de S3 con el AWS SDK para Java, consulte Crear un trabajo por lotes para copiar objetos en la Referencia de la API de Amazon S3.
Puede utilizar la API de REST para crear un trabajo de operaciones por lotes. Para obtener más información, consulte CreateJob en la Referencia de la API de Amazon Simple Storage Service.
Respuestas del trabajo
Si la solicitud CreateJob se realiza correctamente, Amazon S3 devuelve un ID de trabajo. El ID de trabajo es un identificador único que Amazon S3 genera automáticamente para que pueda identificar el trabajo de operaciones por lotes y monitorear su estado.
Cuando cree un trabajo a través de la AWS CLI, los SDK de AWS o la API de REST, puede definir Operaciones por lotes de S3 para comenzar a procesar el trabajo automáticamente. El trabajo se ejecuta en cuanto está listo en lugar de esperar a que se ejecuten otros trabajos de mayor prioridad.
Cuando cree un trabajo a través de la consola de Amazon S3, tendrá que revisar los detalles del trabajo y confirmar que desea ejecutarlo para que la herramienta de operaciones por lotes pueda comenzar a procesarlo. Si un trabajo permanece suspendido durante más de 30 días, no se ejecutará.