Creación de trabajos de operaciones por lotes de S3 - Amazon Simple Storage Service

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 for 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 video proporciona una breve demostración sobre cómo crear un trabajo de operaciones por lotes con la consola de Amazon S3.

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

El manifiesto es una lista de todos los objetos en los que quiere que Operaciones por lotes de S3 ejecute la operación especificada. Puede usar los siguientes métodos para especificar un manifiesto para un trabajo de Operaciones por lotes:

  • Crear manualmente su propia lista de objetos personalizada con formato CSV.

  • Elegir un informe Inventario de Amazon S3 existente con formato CSV.

  • Dirigir Operaciones por lotes para generar un manifiesto automáticamente en función de los criterios de filtro de objetos que especifique al crear su trabajo. Esta opción está disponible para trabajos de replicación por lotes que cree en la consola de Amazon S3 o para cualquier tipo de trabajo que cree mediante la AWS CLI, los SDK de AWS o la API de REST de Amazon S3.

nota
  • Independientemente de cómo especifique el manifiesto, la propia lista debe almacenarse en un bucket de uso general. Operaciones por lotes no puede importar los manifiestos existentes ni guardar los manifiestos generados 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 permiso s3:GetObject en el bucket de origen y el permiso s3:PutObject en el bucket de destino. El rol también necesita permisos para leer el manifiesto y escribir el informe de finalización del trabajo.

Para obtener más información acerca de los roles de IAM, consulte Roles de IAM en 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 del trabajo, tiene que proporcionar los parámetros del informe en este elemento. La información necesaria incluye lo siguiente:

  • 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.

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 CreateJob siempre 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 proporcionar un manifiesto de una de las siguientes formas:

  • Crear un nuevo archivo de manifiesto manualmente.

  • Usar un manifiesto existente.

  • Dirigir Operaciones por lotes para generar un manifiesto automáticamente en función de los criterios de filtro de objetos que especifique al crear su trabajo. Esta opción está disponible para trabajos de replicación por lotes que cree en la consola de Amazon S3 o para cualquier tipo de trabajo que cree mediante la AWS CLI, los SDK de AWS o la API de REST de Amazon S3.

nota

Independientemente de cómo especifique el manifiesto, la propia lista debe almacenarse en un bucket de uso general. Operaciones por lotes no puede importar los manifiestos existentes ni guardar los manifiestos generados 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.

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.

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.

Examplebucket,objectkey1 Examplebucket,objectkey2 Examplebucket,objectkey3 Examplebucket,photos/jpgs/objectkey4 Examplebucket,photos/jpgs/newjersey/objectkey5 Examplebucket,object%20key%20with%20spaces

A continuación, se muestra un manifiesto de ejemplo en formato CSV que incluye los ID de versión.

Examplebucket,objectkey1,PZ9ibn9D5lP6p298B7S9_ceqx1n5EJ0p Examplebucket,objectkey2,YY_ouuAJByNW1LRBfFMfxMge7XQWxMBF Examplebucket,objectkey3,jbo9_jhdPEyB4RrmOxWS0kU0EoNrU_oI Examplebucket,photos/jpgs/objectkey4,6EqlikJJxLTsHsnbZbSRffn24_eh5Ny4 Examplebucket,photos/jpgs/newjersey/objectkey5,imHf3FAiRsvBW_EHB8GOu.NHunHO1gVs Examplebucket,object%20key%20with%20spaces,9HkPvDaZY5MVbMhn6TMn1YTb5ArQAo3w

Especificación de un archivo de manifiesto existente

Puede especificar un archivo de manifiesto en una solicitud de creación de trabajo utilizando uno de los dos formatos siguientes.

  • Informe de Inventario de Amazon S3: debe ser un informe de Inventario de Amazon S3 con formato CSV. Debe especificar el archivo manifest.json que está asociado con el informe de inventario. Para obtener más información sobre los informes de inventario, consulte Inventario de Amazon 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" y manifest.json para 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.

Generación automática de un manifiesto

Puede indicar a Amazon S3 que genere un manifiesto automáticamente en función de los criterios de filtro de objetos que especifique al crear su trabajo. Esta opción está disponible para trabajos de replicación por lotes que cree en la consola de Amazon S3 o para cualquier tipo de trabajo que cree mediante la AWS CLI, los SDK de AWS o la API de REST de Amazon S3. Para obtener más información sobre la replicación por lotes, consulte Replicación de objetos existentes con replicación por lotes de S3.

Para generar un manifiesto automáticamente, debe especificar los siguientes elementos como parte de su 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 fecha de creación, nombre de clave, tamaño, clase de almacenamiento y etiquetas

Criterios de filtro de objetos

Para filtrar la lista de objetos que se van a incluir en un manifiesto generado 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.

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 manifiestos generados automáticamente. 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, consulte Creación de un trabajo.

Creación de un trabajo

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 de S3.

Para crear un trabajo por lotes
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la barra de navegación de la parte superior de la página, elija el nombre de la Región de AWS que aparece. A continuación, elija en Region (Región) la región 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.

  3. Seleccione Batch Operations (Operaciones por lotes) en el panel de navegación izquierdo de la consola de Amazon S3.

  4. Seleccione Crear trabajo.

  5. Vea la Región de AWS en la que desea crear el trabajo.

  6. En Manifest format (Formato del manifiesto), seleccione el tipo de objeto del manifiesto que desee usar.

    • Si elige S3 Inventory report (Informe de inventario de S3), escriba la ruta del objeto manifest.json que Amazon S3 ha generado con el informe de inventario con formato CSV. También puede seleccionar el ID de versión del objeto del manifiesto en caso de que desee utilizar otra versión que no sea la más reciente.

    • Si selecciona CSV, escriba la ruta del objeto del manifiesto con formato CSV. El objeto del manifiesto debe tener el mismo formato que se ha especificado en la consola. Si quiere utilizar otra versión que no sea la más reciente, puede incluir el ID de versión del objeto del manifiesto.

    nota

    La consola de Amazon S3 solo admite la generación automática de manifiestos para trabajos de replicación por lotes. Para el resto de tipos de trabajo, si desea que Amazon S3 genere un manifiesto automáticamente en función de los criterios de filtro que especifique, debe configurar el trabajo mediante la AWS CLI, los SDK de AWS o la API de REST de Amazon S3.

  7. Elija Siguiente.

  8. En Operation (Operación), seleccione la operación que desee en todos los objetos que aparecen en el manifiesto. Rellene los datos de la operación seleccionada y haga clic en Siguiente.

  9. Rellene los datos de Configurar otras opciones y haga clic en Siguiente.

  10. En Review (Revisar), compruebe la configuración. Si necesita realizar cambios, seleccione Anterior. De lo contrario, seleccione Crear trabajo.

Specify manifest

En el siguiente ejemplo se muestra cómo crea un trabajo S3PutObjectTagging de Operaciones por lotes de S3 que actúa en objetos que se enumeran en un archivo de manifiesto existente.

Para crear un trabajo S3PutObjectTagging de Operaciones por lotes, realice las siguientes acciones:
  1. Utilice los siguientes comandos para crear un rol de AWS Identity and Access Management (IAM) y, a continuación, cree una política de IAM para asignar los permisos pertinentes. El siguiente rol y política conceden permiso a Amazon S3 para añadir etiquetas de objetos, que serán necesarias al crear el trabajo en un paso posterior.

    1. Utilice el siguiente comando de ejemplo para crear un rol de IAM para que lo utilicen las Operaciones por lotes. Para usar este comando de ejemplo, reemplace S3BatchJobRole por el nombre que desea asignar a esta aplicación.

      aws iam create-role \ --role-name S3BatchJobRole \ --assume-role-policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"batchoperations.s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }'

      Registre el nombre de recurso de Amazon (ARN) del rol. Lo necesitará para poder crear los trabajos.

    2. Utilice el siguiente comando de ejemplo para crear una política de IAM con los permisos necesarios y asóciela al rol de IAM que creó en el paso anterior. Para obtener información sobre los permisos de necesarios, consulte Concesión de permisos para Operaciones por lotes de 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.

      Para usar este comando de ejemplo, sustituya user input placeholders de la siguiente manera:

      • Sustituya S3BatchJobRole por el nombre de su rol de IAM. Asegúrese de que este nombre coincide con el nombre que utilizó anteriormente.

      • Sustituya PutObjectTaggingBatchJobPolicy por el nombre que desea asignar a la política de IAM.

      • Sustituya DOC-EXAMPLE-DESTINATION-BUCKET por el nombre del bucket que contiene los objetos a los que desea aplicar etiquetas.

      • Sustituya DOC-EXAMPLE-MANIFEST-BUCKET por el nombre del bucket de que contiene el manifiesto.

      • Sustituya DOC-EXAMPLE-REPORT-BUCKET por el nombre del bucket donde desea que se entregue el informe de finalización.

      aws iam put-role-policy \ --role-name S3BatchJobRole \ --policy-name PutObjectTaggingBatchJobPolicy \ --policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-MANIFEST-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-MANIFEST-BUCKET/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject", "s3:GetBucketLocation" ], "Resource":[ "arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET/*" ] } ] }'
  2. Utilice el siguiente comando de ejemplo para crear un trabajo S3PutObjectTagging.

    El archivo manifest.csv proporciona una lista de valores de claves de objetos y buckets. El trabajo aplica las etiquetas especificadas a los objetos que se identifican en el manifiesto. ETag es la etiqueta de entidad del objeto manifest.csv, que puede obtenerse desde la consola de Amazon S3. En esta solicitud, se especifica el parámetro no-confirmation-required para que pueda ejecutar el trabajo sin tener que confirmarlo con el comando update-job-status. Para obtener más información, consulte create-job en la Referencia de los comandos de AWS CLI.

    Para utilizar este comando de ejemplo, sustituya user input placeholders por su propia información. Sustituya IAM-role por el ARN del rol de IAM que ha creado anteriormente.

    aws s3control create-job \ --region us-west-2 \ --account-id acct-id \ --operation '{"S3PutObjectTagging": { "TagSet": [{"Key":"keyOne", "Value":"ValueOne"}] }}' \ --manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":["Bucket","Key"]},"Location":{"ObjectArn":"arn:aws:s3:::my_manifests/manifest.csv","ETag":"60e460c9d1046e73f7dde5043ac3ae85"}}' \ --report '{"Bucket":"arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET","Prefix":"final-reports", "Format":"Report_CSV_20180820","Enabled":true,"ReportScope":"AllTasks"}' \ --priority 42 \ --role-arn IAM-role \ --client-request-token $(uuidgen) \ --description "job description" \ --no-confirmation-required

    Como respuesta, Amazon S3 devuelve el ID del trabajo (por ejemplo: 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c). Será necesario el ID de trabajo para identificar, supervisar y modificar el trabajo.

Generate manifest

En el siguiente ejemplo se muestra cómo crear un trabajo S3DeleteObjectTagging de Operaciones por lotes de S3 que genera automáticamente un manifiesto basado en los criterios del filtro de objeto. Este criterio incluye la fecha de creación, el nombre de la clave, el tamaño, la clase de almacenamiento y las etiquetas.

Para crear un trabajo S3DeleteObjectTagging de Operaciones por lotes, realice las siguientes acciones:
  1. Utilice los siguientes comandos para crear un rol de AWS Identity and Access Management (IAM) y, a continuación, cree una política de IAM para asignar permisos. El siguiente rol y política conceden permiso a Amazon S3 para eliminar etiquetas de objetos, que serán necesarias al crear el trabajo en un paso posterior.

    1. Utilice el siguiente comando de ejemplo para crear un rol de IAM para que lo utilicen las Operaciones por lotes. Para usar este comando de ejemplo, reemplace S3BatchJobRole por el nombre que desea asignar a esta aplicación.

      aws iam create-role \ --role-name S3BatchJobRole \ --assume-role-policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"batchoperations.s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }'

      Registre el nombre de recurso de Amazon (ARN) del rol. Lo necesitará para poder crear los trabajos.

    2. Utilice el siguiente comando de ejemplo para crear una política de IAM con los permisos necesarios y asóciela al rol de IAM que creó en el paso anterior. Para obtener información sobre los permisos de necesarios, consulte Concesión de permisos para Operaciones por lotes de 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.

      Para usar este comando de ejemplo, sustituya user input placeholders de la siguiente manera:

      • Sustituya S3BatchJobRole por el nombre de su rol de IAM. Asegúrese de que este nombre coincide con el nombre que utilizó anteriormente.

      • Sustituya DeleteObjectTaggingBatchJobPolicy por el nombre que desea asignar a la política de IAM.

      • Sustituya DOC-EXAMPLE-DESTINATION-BUCKET por el nombre del bucket que contiene los objetos a los que desea aplicar etiquetas.

      • Sustituya DOC-EXAMPLE-MANIFEST-OUTPUT-BUCKET por el nombre del bucket donde desee guardar el manifiesto.

      • Sustituya DOC-EXAMPLE-REPORT-BUCKET por el nombre del bucket donde desea que se entregue el informe de finalización.

      aws iam put-role-policy \ --role-name S3BatchJobRole \ --policy-name DeleteObjectTaggingBatchJobPolicy \ --policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:DeleteObjectTagging", "s3:DeleteObjectVersionTagging" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/*" }, { "Effect":"Allow", "Action":[ "s3:PutInventoryConfiguration" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-MANIFEST-OUTPUT-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-MANIFEST-OUTPUT-BUCKET/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET/*", "arn:aws:s3:::DOC-EXAMPLE-MANIFEST-OUTPUT-BUCKET/*" ] } ] }'

  2. Utilice el siguiente comando de ejemplo para crear el trabajo S3DeleteObjectTagging.

    En este ejemplo, los valores de la sección --report especifican el bucket, el prefijo, el formato y el alcance del informe de trabajo que se generará. La sección --manifest -generator especifica información sobre el bucket de origen que contiene los objetos sobre los que actuará el trabajo, información sobre la lista de resultados del manifiesto que se generará para el trabajo y los criterios de filtro para limitar el alcance de los objetos que se van a incluir en el manifiesto por fecha de creación, restricciones de nombre, tamaño y clase de almacenamiento. El comando también especifica la prioridad del trabajo, el rol de IAM y Región de AWS.

    Para obtener más información, consulte create-job en la Referencia de los comandos de AWS CLI.

    Para utilizar este comando de ejemplo, sustituya user input placeholders por su propia información. Sustituya IAM-role por el ARN del rol de IAM que ha creado anteriormente.

    aws s3control create-job \ --account-id 012345678901 \ --operation '{ "S3DeleteObjectTagging": {} }' \ --report '{ "Bucket":"arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET", "Prefix":"reports", "Format":"Report_CSV_20180820", "Enabled":true, "ReportScope":"AllTasks" }' \ --manifest-generator '{ "S3JobManifestGenerator": { "ExpectedBucketOwner": "012345678901", "SourceBucket": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET", "EnableManifestOutput": true, "ManifestOutputLocation": { "ExpectedManifestBucketOwner": "012345678901", "Bucket": "arn:aws:s3:::DOC-EXAMPLE-MANIFEST-OUTPUT-BUCKET", "ManifestPrefix": "prefix", "ManifestFormat": "S3InventoryReport_CSV_20211130" }, "Filter": { "CreatedAfter": "2023-09-01", "CreatedBefore": "2023-10-01", "KeyNameConstraint": { "MatchAnyPrefix": [ "prefix" ], "MatchAnySuffix": [ "suffix" ] }, "ObjectSizeGreaterThanBytes": 100, "ObjectSizeLessThanBytes": 200, "MatchAnyStorageClass": [ "STANDARD", "STANDARD_IA" ] } } }' \ --priority 2 \ --role-arn IAM-role \ --region us-east-1

    Como respuesta, Amazon S3 devuelve el ID del trabajo (por ejemplo: 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c). Será necesario el ID de este trabajo para identificar, supervisar o modificar el trabajo.

Specify manifest

En el siguiente ejemplo se muestra cómo crea un trabajo S3PutObjectTagging de Operaciones por lotes de S3 que actúa en objetos que se enumeran en un archivo de manifiesto existente. Para utilizar este ejemplo, reemplace los user input placeholders con su propia información.

package aws.example.s3control; import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3control.AWSS3Control; import com.amazonaws.services.s3control.AWSS3ControlClient; import com.amazonaws.services.s3control.model.*; import java.util.UUID; import java.util.ArrayList; import static com.amazonaws.regions.Regions.US_WEST_2; public class CreateJob { public static void main(String[] args) { String accountId = "Account ID"; String iamRoleArn = "IAM Role ARN"; String reportBucketName = "arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET"; String uuid = UUID.randomUUID().toString(); ArrayList tagSet = new ArrayList<S3Tag>(); tagSet.add(new S3Tag().withKey("keyOne").withValue("ValueOne")); try { JobOperation jobOperation = new JobOperation() .withS3PutObjectTagging(new S3SetObjectTaggingOperation() .withTagSet(tagSet) ); JobManifest manifest = new JobManifest() .withSpec(new JobManifestSpec() .withFormat("S3BatchOperations_CSV_20180820") .withFields(new String[]{ "Bucket", "Key" })) .withLocation(new JobManifestLocation() .withObjectArn("arn:aws:s3:::my_manifests/manifest.csv") .withETag("60e460c9d1046e73f7dde5043ac3ae85")); JobReport jobReport = new JobReport() .withBucket(reportBucketName) .withPrefix("reports") .withFormat("Report_CSV_20180820") .withEnabled(true) .withReportScope("AllTasks"); AWSS3Control s3ControlClient = AWSS3ControlClient.builder() .withCredentials(new ProfileCredentialsProvider()) .withRegion(US_WEST_2) .build(); s3ControlClient.createJob(new CreateJobRequest() .withAccountId(accountId) .withOperation(jobOperation) .withManifest(manifest) .withReport(jobReport) .withPriority(42) .withRoleArn(iamRoleArn) .withClientRequestToken(uuid) .withDescription("job description") .withConfirmationRequired(false) ); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
Generate manifest

En el siguiente ejemplo se muestra cómo crear un trabajo s3PutObjectCopy de Operaciones por lotes de S3 que genere automáticamente un manifiesto en función de los criterios de filtrado de objetos, incluida la fecha de creación, el nombre de la clave y el tamaño. Para utilizar este ejemplo, reemplace los user input placeholders con su propia información.

package aws.example.s3control; import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3control.AWSS3Control; import com.amazonaws.services.s3control.AWSS3ControlClient; import com.amazonaws.services.s3control.model.CreateJobRequest; import com.amazonaws.services.s3control.model.CreateJobResult; import com.amazonaws.services.s3control.model.JobManifestGenerator; import com.amazonaws.services.s3control.model.JobManifestGeneratorFilter; import com.amazonaws.services.s3control.model.JobOperation; import com.amazonaws.services.s3control.model.JobReport; import com.amazonaws.services.s3control.model.KeyNameConstraint; import com.amazonaws.services.s3control.model.S3JobManifestGenerator; import com.amazonaws.services.s3control.model.S3ManifestOutputLocation; import com.amazonaws.services.s3control.model.S3SetObjectTaggingOperation; import com.amazonaws.services.s3control.model.S3Tag; import java.time.Instant; import java.util.Date; import java.util.UUID; import java.util.ArrayList; import static com.amazonaws.regions.Regions.US_WEST_2; public class test { public static void main(String[] args) { String accountId = "012345678901"; String iamRoleArn = "arn:aws:iam::012345678901:role/ROLE"; String sourceBucketName = "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET"; String reportBucketName = "arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET"; String manifestOutputBucketName = "arn:aws:s3:::DOC-EXAMPLE-MANIFEST-OUTPUT-BUCKET"; String uuid = UUID.randomUUID().toString(); long minimumObjectSize = 100L; ArrayList<S3Tag> tagSet = new ArrayList<>(); tagSet.add(new S3Tag().withKey("keyOne").withValue("ValueOne")); ArrayList<String> prefixes = new ArrayList<>(); prefixes.add("s3KeyStartsWith"); try { JobOperation jobOperation = new JobOperation() .withS3PutObjectTagging(new S3SetObjectTaggingOperation() .withTagSet(tagSet) ); S3ManifestOutputLocation manifestOutputLocation = new S3ManifestOutputLocation() .withBucket(manifestOutputBucketName) .withManifestPrefix("manifests") .withExpectedManifestBucketOwner(accountId) .withManifestFormat("S3InventoryReport_CSV_20211130"); JobManifestGeneratorFilter jobManifestGeneratorFilter = new JobManifestGeneratorFilter() .withEligibleForReplication(true) .withKeyNameConstraint( new KeyNameConstraint() .withMatchAnyPrefix(prefixes)) .withCreatedBefore(Date.from(Instant.now())) .withObjectSizeGreaterThanBytes(minimumObjectSize); S3JobManifestGenerator s3JobManifestGenerator = new S3JobManifestGenerator() .withEnableManifestOutput(true) .withManifestOutputLocation(manifestOutputLocation) .withFilter(jobManifestGeneratorFilter) .withSourceBucket(sourceBucketName); JobManifestGenerator jobManifestGenerator = new JobManifestGenerator() .withS3JobManifestGenerator(s3JobManifestGenerator); JobReport jobReport = new JobReport() .withBucket(reportBucketName) .withPrefix("reports") .withFormat("Report_CSV_20180820") .withEnabled(true) .withReportScope("AllTasks"); AWSS3Control s3ControlClient = AWSS3ControlClient.builder() .withCredentials(new ProfileCredentialsProvider()) .withRegion(US_WEST_2) .build(); CreateJobResult createJobResult = s3ControlClient.createJob(new CreateJobRequest() .withAccountId(accountId) .withOperation(jobOperation) .withManifestGenerator(jobManifestGenerator) .withReport(jobReport) .withPriority(42) .withRoleArn(iamRoleArn) .withClientRequestToken(uuid) .withDescription("job description") .withConfirmationRequired(true) ); System.out.println("Created job " + createJobResult.getJobId()); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }

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á.