

# Realización de operaciones de objetos de forma masiva con Operaciones por lotes
<a name="batch-ops"></a>

Puede utilizar Operaciones por lotes de S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. Operaciones por lotes de S3 puede realizar una sola operación en las listas de objetos de Amazon S3 que especifique. Un solo trabajo puede realizar una operación especificada en miles de millones de objetos que contiene exabytes de datos. Amazon S3 realiza un seguimiento del avance, envía notificaciones y guarda un informe de finalización de todas las acciones, por lo que proporciona una experiencia sin servidor, auditable y completamente administrada. Puede utilizar Operaciones por lotes de S3 a través de la consola de Amazon S3, la AWS Command Line Interface (AWS CLI), los AWS SDK o la API de REST de Amazon S3.

Utilice Operaciones por lotes de S3 para copiar objetos, actualizar el cifrado del servidor de objetos y establecer etiquetas de objetos o listas de control de acceso (ACL). También puede iniciar restauraciones de objetos desde S3 Glacier Flexible Retrieval o invocar una función de AWS Lambda que realice acciones personalizadas con los objetos. Puede realizar estas operaciones en una lista personalizada de objetos o puede utilizar un informe de Amazon S3 Inventory para generar listas de objetos fácilmente. Operaciones por lotes de Amazon S3 utiliza las mismas operaciones de la API de Amazon S3 que ya utiliza con Amazon S3. 

**nota**  
Para obtener más información sobre el uso de la clase de almacenamiento Amazon S3 Express One Zone con buckets de directorio, consulte [S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone) y [Trabajar con buckets de de directorio](directory-buckets-overview.md). Para obtener más información sobre el uso de Operaciones por lotes con S3 Express One Zone y buckets de directorio, consulte [Uso de operaciones por lotes con buckets de directorio](directory-buckets-objects-Batch-Ops.md).

## Conceptos básicos de Operaciones por lotes de S3
<a name="batch-ops-basics"></a>

Puede utilizar Operaciones por lotes de S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. Las operaciones por lotes de S3 pueden ejecutar una sola operación en las listas de objetos de Amazon S3 que especifique. 

### Terminología
<a name="batch-ops-terminology"></a>

En esta sección, se utilizan los términos *manifiestos*, *trabajos*, *operaciones* y *tareas*, cuyas definiciones son las siguientes:

**Manifiesto**  
Un manifiesto es un objeto de Amazon S3 que contiene las claves de objeto sobre las que desea que actúe Amazon S3. Si desea crear un trabajo de Operaciones por lotes, debe proporcionar un manifiesto. El manifiesto generado por el usuario debe contener el nombre del bucket, la clave del objeto y, de manera opcional, la versión del objeto. Si proporciona un manifiesto generado por el usuario, debe ser en forma de informe de inventario de Amazon S3 o un archivo CSV.   
También puede hacer que 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 operaciones por lotes que cree mediante la consola de Amazon S3 o para cualquier tipo de trabajo que cree mediante la AWS Command Line Interface (AWS CLI), los AWS SDK o la API de REST de Amazon S3. 

**Trabajo**  
Un trabajo es la unidad básica de trabajo para las operaciones por lotes de S3. Un trabajo contiene toda la información necesaria para ejecutar la operación especificada en los objetos enumerados en el manifiesto. Una vez que se proporciona esta información y se solicita que el trabajo comience, el trabajo realiza la operación en cada objeto del manifiesto. 

**Operation**  
La operación es el tipo de [acción](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations.html) de API, como copiar objetos, que desea que ejecute el trabajo de Operaciones por lotes. Cada trabajo realiza un único tipo de operación en todos los objetos especificados en el manifiesto.

**Tarea**  
Una tarea es la unidad de ejecución de un trabajo. Una tarea representa una llamada única a una operación de API de Amazon S3 o AWS Lambda para realizar la operación del trabajo en un único objeto. En el transcurso de la vida útil de un trabajo, Operaciones por lotes de S3 crea una tarea para cada objeto especificado en el manifiesto.

### Cómo funciona un trabajo de operaciones por lotes de S3
<a name="batch-ops-basics-how-it-works"></a>

Un trabajo es la unidad básica de trabajo para las operaciones por lotes de S3. Un trabajo contiene toda la información necesaria para ejecutar la operación especificada en una lista de objetos. Para crear un trabajo, debe proporcionar a las operaciones por lotes de S3 una lista de objetos y especificar la acción que se debe realizar con dichos objetos. Para obtener información acerca de las operaciones que admiten las operaciones por lotes de S3, consulte [Operaciones compatibles con las operaciones por lotes de S3](batch-ops-operations.md).

Los trabajos por lotes realizan la operación especificada en cada uno de los objetos incluidos en su *manifiesto*. Un manifiesto enumera los objetos que desea que procese un trabajo por lotes y se almacena como un objeto en un bucket. Puede utilizar un informe de [Catálogo y análisis de sus datos con Inventario de S3](storage-inventory.md) con formato CSV (valores separados por comas) como manifiesto, lo que facilita la creación de grandes listas de objetos ubicados en un bucket. También puede especificar un manifiesto en un formato CSV sencillo que le permite realizar operaciones por lotes en una lista personalizada de objetos incluidos en un solo bucket. 

Después de crear un trabajo, Amazon S3 procesa la lista de objetos del manifiesto y ejecuta la operación especificada en cada objeto. Mientras el trabajo se ejecuta, puede monitorear su avance desde un programa o a través de la consola de Amazon S3. También puede configurar un trabajo para generar un informe de finalización cuando haya terminado. En el informe de finalización, se describen los resultados de cada una de las tareas realizadas por el trabajo. Para obtener más información sobre el monitoreo de trabajos, consulte [Administración de trabajos de operaciones por lotes de S3](batch-ops-managing-jobs.md). 

Hay costos asociados con las operaciones por lotes de S3. Se le facturará por la creación de trabajos de operaciones por lotes, incluidos los trabajos que se cancelen antes de su finalización. Para obtener más información, consulte [Precios de Amazon S3](https://aws.amazon.com/s3/pricing/).

Los trabajos de Operaciones por lotes de S3 pueden procesar de forma predeterminada hasta 4000 millones de objetos para todas las operaciones. En concreto, los trabajos de copia, etiquetado de objetos, bloqueo de objetos, invocación de una función de AWS Lambda y replicación por lotes pueden admitir hasta 20 000 millones de objetos. Existe un límite de seis trabajos de replicación por lotes activos por cuenta de AWS. Para comenzar a crear un trabajo de Operaciones por lotes, consulte [Creación de un trabajo de Operaciones por lotes de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-create-job.html).

## Tutorial operaciones por lotes de S3
<a name="batch-ops-basics-tutorial"></a>

En el siguiente tutorial se presentan procedimientos integrales completos para algunas tareas de operaciones por lotes.
+ [Tutorial: vídeos de transcodificación por lotes con Operaciones por lotes de S3](tutorial-s3-batchops-lambda-mediaconvert-video.md)

# Concesión de permisos para Operaciones por lotes
<a name="batch-ops-iam-role-policies"></a>

Antes de crear y ejecutar trabajos de operaciones por lotes de S3, debe conceder los permisos necesarios. Para crear un trabajo de operaciones por lotes de Amazon S3 se requiere el permiso del usuario `s3:CreateJob`. La misma entidad que crea el trabajo también debe tener el permiso `iam:PassRole` para transferir el rol de AWS Identity and Access Management (IAM) especificado para el trabajo a Operaciones por lotes.

En las siguientes secciones se proporciona información sobre cómo crear un rol de IAM y cómo adjuntar las políticas. Para obtener información general acerca de cómo especificar recursos de IAM, consulte [Elementos de la política de JSON de IAM: Recurso](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html) en la *Guía del usuario de IAM*.

**Topics**
+ [Creación de un rol de IAM de Operaciones por lotes de S3](#batch-ops-iam-role-policies-create)
+ [Adjunción de políticas de permisos](#batch-ops-iam-role-policies-perm)

## Creación de un rol de IAM de Operaciones por lotes de S3
<a name="batch-ops-iam-role-policies-create"></a>

Amazon S3 debe tener permisos para poder realizar operaciones por lotes de S3 en su nombre. Estos permisos se conceden a través de un rol de AWS Identity and Access Management (IAM). Al crear un trabajo de operaciones por lotes de S3, se especifica el rol de IAM que desea que el trabajo utilice. Puede ser un rol de IAM existente. O, si utiliza la consola de Amazon S3 para crear el trabajo, puede ser un rol de IAM que Amazon S3 cree para usted.

Si decide dejar que Amazon S3 cree el rol de IAM de manera automática, este creará y asociará políticas de confianza y permisos al rol de manera automática. La política de confianza permite que la entidad principal del servicio de las operaciones por lotes de S3 (`batchoperations.s3.amazonaws.com`) pueda asumir el rol. La política de permisos permite realizar todas las acciones necesarias para ejecutar el trabajo, en función de la configuración que especifique para el trabajo. Por ejemplo, si configura un trabajo para copiar objetos de un bucket a otro de la Cuenta de AWS, la política de permisos permite acciones como `s3:GetObject` y `s3:PutObject`. Puede revisar las políticas de confianza y permisos del rol antes de enviar el trabajo. Esta opción solo está disponible si utiliza la consola de Amazon S3 para crear un trabajo y configura el trabajo para que utilice una lista de objetos generada por S3 que utilice filtros o se base en una configuración de replicación. Tras enviar el trabajo, el rol de IAM permanecerá en la cuenta. A continuación, puede volver a utilizarla para trabajos posteriores que realicen la misma operación o eliminarla cuando la tarea termine de ejecutarse.

Si prefiere crear el rol de IAM manualmente, los ejemplos de políticas de esta sección pueden ayudarlo a crear el rol. Para obtener más información acerca de la creación y la configuración de roles, consulte [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) en la *Guía del usuario de IAM*. Para obtener información sobre los permisos para las operaciones de la API de S3 por tipo de recurso de S3, consulte [Permisos necesarios para las operaciones de la API de Amazon S3](using-with-s3-policy-actions.md). Para ver otros ejemplos, consulte [Control de permisos para Operaciones por lotes mediante etiquetas de trabajo](batch-ops-job-tags-examples.md) y [Copia de objetos mediante operaciones por lotes de S3](batch-ops-examples-copy.md).

En las políticas de IAM también puede utilizar claves de condición para filtrar permisos de acceso para trabajos de Operaciones por lotes de S3. Para obtener más información y una lista completa de las claves de condición específicas de Amazon S3, consulte [Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) en la *Referencia de autorización de servicios*.

Para obtener más información sobre los permisos para las operaciones de la API de S3 por tipos de recursos de S3, consulte [Permisos necesarios para las operaciones de la API de Amazon S3](using-with-s3-policy-actions.md).

En el siguiente vídeo, se muestra cómo configurar permisos de IAM para trabajos de operaciones por lotes con la consola de Amazon S3.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/qpwHUrwAiUI//0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/qpwHUrwAiUI/)


### Política de confianza
<a name="batch-ops-iam-role-policies-trust"></a>

Para que la entidad principal del servicio Operaciones por lotes de S3 pueda asumir el rol de IAM debe asociar al rol la siguiente política de confianza.

------
#### [ JSON ]

****  

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

------

## Adjunción de políticas de permisos
<a name="batch-ops-iam-role-policies-perm"></a>

En función del tipo de operaciones, puede asociar una de estas políticas.

Antes de configurar los permisos, tenga en cuenta lo siguiente:
+ Con independencia de la operación que realice, Amazon S3 necesita permisos para leer el objeto del manifiesto del bucket de S3 y, de forma opcional, escribir un informe en el bucket. Por lo tanto, todas las políticas que se indican a continuación contienen estos permisos.
+ Para los manifiestos de informes de Amazon S3 Inventory, S3 Batch Operations requiere permiso para leer el objeto manifest.json y todos los archivos de datos CSV asociados.
+ Los permisos específicos de las versiones como `s3:GetObjectVersion` solo son obligatorios cuando especifica el ID de la versión de los objetos.
+ Si ejecuta la herramienta de operaciones por lotes de S3 en objetos cifrados, el rol de IAM también debe tener acceso a las claves de AWS KMS utilizadas para cifrarlos.
+ Si envía un manifiesto de informe de inventario cifrado con AWS KMS, la política de IAM debe incluir los permisos `"kms:Decrypt"` y `"kms:GenerateDataKey"` para el objeto manifest.json y todos los archivos de datos CSV asociados.
+ Si el trabajo de Operaciones por lotes genera un manifiesto en un bucket que tiene las listas de control de acceso (ACL) habilitadas y se encuentra en una Cuenta de AWS diferente, debe conceder el permiso `s3:PutObjectAcl` en la política de IAM del rol de IAM configurado para el trabajo por lotes. Si no incluye este permiso, el trabajo por lotes no se realiza y genera el error `Error occurred when preparing manifest: Failed to write manifest`.

### Copia de objetos: PutObject
<a name="batch-ops-put-copy-object-policy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectTagging"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectTagging",
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-source-bucket",
                "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### Sustitución del etiquetado de objetos: PutObjectTagging
<a name="batch-ops-put-object-tagging-policy"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect":"Allow",
      "Action":[
        "s3:PutObjectTagging",
        "s3:PutObjectVersionTagging"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
      ]
    },
    {
      "Effect":"Allow",
      "Action":[
        "s3:PutObject"
      ],
      "Resource":[
        "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
      ]
    }
  ]
}
```

------

### Eliminación del etiquetado de objetos: DeleteObjectTagging
<a name="batch-ops-delete-object-tagging-policy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
              "s3:DeleteObjectTagging",
              "s3:DeleteObjectVersionTagging"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### Sustitución de la lista de control de acceso: PutObjectAcl
<a name="batch-ops-put-object-acl-policy"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObjectAcl",
        "s3:PutObjectVersionAcl"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
      ]
    }
  ]
}
```

------

### Restauración de objetos: RestoreObject
<a name="batch-ops-initiate-restore-policy"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect":"Allow",
      "Action":[
          "s3:RestoreObject"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
      ]
    },
    {
      "Effect":"Allow",
      "Action":[
        "s3:PutObject"
      ],
      "Resource":[
        "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
      ]
    }
  ]
}
```

------

### Aplicación de retención de Bloqueo de objetos: PutObjectRetention
<a name="batch-ops-put-object-lock-policy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetBucketObjectLockConfiguration",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObjectRetention",
                "s3:BypassGovernanceRetention"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### Aplicación de retención legal de Bloqueo de objetos: PutObjectLegalHold
<a name="batch-ops-put-object-legal-hold-policy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetBucketObjectLockConfiguration",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:PutObjectLegalHold",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### Replicación de objetos existentes: InitiateReplication con un manifiesto generado por S3
<a name="batch-ops-batch-replication-policy"></a>

Utilice esta política si utiliza y almacena un manifiesto generado por S3. Para obtener más información sobre cómo utilizar Operaciones por lotes para replicar objetos existentes, consulte [Replicación de objetos existentes con Replicación por lotes](s3-batch-replication-batch.md).

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Action":[
            "s3:InitiateReplication"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
         ]
      },
      {
         "Action":[
            "s3:GetReplicationConfiguration",
            "s3:PutInventoryConfiguration"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket"
         ]
      },
      {
         "Action":[
            "s3:GetObject",
            "s3:GetObjectVersion"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*",
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"    
         ]
      }
   ]
}
```

------

### Replicación de objetos existentes: InitiateReplication con un manifiesto del usuario
<a name="batch-ops-batch-replication-policy-user"></a>

Utilice esta política si utiliza un manifiesto proporcionado por el usuario. Para obtener más información sobre cómo utilizar Operaciones por lotes para replicar objetos existentes, consulte [Replicación de objetos existentes con Replicación por lotes](s3-batch-replication-batch.md).

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Action":[
            "s3:InitiateReplication"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
         ]
      },
      {
         "Action":[
            "s3:GetObject",
            "s3:GetObjectVersion"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"    
         ]
      }
   ]
}
```

------

### Calcule la suma de comprobación: permita `GetObject`, `GetObjectVersion`, `RestoreObject` y `PutObject`
<a name="batch-ops-compute-object-checksum-policies"></a>

Utilice esta política si intenta utilizar la operación **Calcular la suma de comprobación** con operaciones por lotes de S3. Los permisos para `GetObject`, `GetObjectVersion` y `RestoreObject` son necesarios para obtener y leer los bytes de los datos almacenados. Reemplace los marcadores de posición de entrada del usuario por información propia. Para obtener más información acerca de **Calcular la suma de comprobación**, consulte [Comprobación de la integridad de objetos para datos en reposo en Amazon S3](checking-object-integrity-at-rest.md).

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:RestoreObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket2/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket3/*"
      ]
    }
  ]
}
```

### Actualización de cifrado de objetos
<a name="batch-ops-update-encryption-policies"></a>

Debe adjuntar la siguiente política de permisos para permitir que operaciones por lotes lea un manifiesto, actualice el tipo de cifrado de los objetos y redacte un informe de finalización. Para utilizar esta política de permisos, sustituya *`user input placeholders`* por su propia información. Para obtener más información sobre el uso de esta operación y los permisos que debe asignar al rol utilizado por la entidad principal de IAM, consulte[Actualización de cifrado de objetos](batch-ops-update-encryption.md).

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "S3BatchOperationsUpdateEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "s3:UpdateObjectEncryption"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-target"
                "arn:aws:s3:::amzn-s3-demo-bucket-target/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForManifestFile",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-manifest/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForCompletionReport",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-completion-report/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyManifestGeneration",
            "Effect": "Allow",
            "Action": [
                "s3:PutInventoryConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-target"
            ]
        }
        {
            "Sid": "AllowKMSOperationsForS3BatchOperations",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:Encrypt",
                "kms:ReEncrypt*"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
            ]
        }
    ]
}
```

# Creación de trabajos de operaciones por lotes de S3
<a name="batch-ops-create-job"></a>

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 informe de finalización para todas las tareas o solo para las tareas erróneas. 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](batch-ops-examples-reports.md).

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.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/qpwHUrwAiUI//0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/qpwHUrwAiUI/)


**Topics**
+ [Elementos de una solicitud de trabajo de Operaciones por lotes](#batch-ops-create-job-request-elements)
+ [Especificar un manifiesto](#specify-batchjob-manifest)
+ [Generación de una lista de objetos automáticamente y guardado como un archivo de manifiesto](#automatically-generate-manifest-file)
+ [Creación de un archivo de manifiesto](#create-manifest-file)
+ [Uso de un manifiesto existente](#specify-existing-manifest-file)
+ [Creación de una tarea](#to-create-batch-ops-job)
+ [Respuestas del trabajo](#batch-ops-create-job-response-elements)

## Elementos de una solicitud de trabajo de Operaciones por lotes
<a name="batch-ops-create-job-request-elements"></a>

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. 
+ 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](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html).
+ 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](#specify-batchjob-manifest).

**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 a 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.  
El rol de IAM puede ser un rol existente. O, si utiliza la consola de Amazon S3 para crear el trabajo, puede ser un rol de IAM que Amazon S3 cree para usted. Para obtener más información, consulte [Concesión de permisos para Operaciones por lotes](batch-ops-iam-role-policies.md).  
Para obtener más información acerca de los roles de IAM, consulte [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) 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](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions).  
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](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-security-iam.html).

**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](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html).
+ 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.  
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 `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](batch-ops-job-tags.md).

**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
<a name="specify-batchjob-manifest"></a>

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](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html).

## Generación de una lista de objetos automáticamente y guardado como un archivo de manifiesto
<a name="automatically-generate-manifest-file"></a>

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
<a name="manifest-generator-filter-criteria"></a>

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 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestGeneratorFilter.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestGeneratorFilter.html) 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, consulte [Creación de una tarea](#to-create-batch-ops-job).

## Creación de un archivo de manifiesto
<a name="create-manifest-file"></a>

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
<a name="specify-existing-manifest-file"></a>

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.json` que 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](storage-inventory.md). 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 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestSpec.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestSpec.html) 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
<a name="to-create-batch-ops-job"></a>

 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](#batch-ops-create-job-request-elements). 

**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](batch-ops-iam-role-policies.md).

### Uso de la consola de S3
<a name="batch-ops-create-job-console"></a>

**Creación de un trabajo de operaciones por lotes mediante la consola de S3**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

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

1. Seleccione **Crear tarea**.

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

1. 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**  
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**.

1. En **Cuenta de origen**, elija la cuenta que es propietaria de los objetos de origen.

1. En **Origen**, ingrese la ruta al origen, por ejemplo, `s3://` *amzn-s3-demo-bucket*.

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

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

1. Después de seleccionar el tipo de operación, elija **Siguiente**.

1. Rellene los datos de **Configurar opciones adicionales**.

   Para **Permisos**, especifique el rol de AWS Identity and Access Management (IAM) que desea que utilice el trabajo. Puede ser un rol existente o un rol que Amazon S3 cree automáticamente para usted. Para obtener más información, consulte [Concesión de permisos para Operaciones por lotes](batch-ops-iam-role-policies.md). Amazon S3 puede crear el rol automáticamente si configuró el trabajo para usar una lista de objetos generada por S3 con filtros o una lista de objetos basada en una configuración de replicación.

1. Cuando termine de configurar las opciones adicionales, elija **Siguiente**.

1. En **Review (Revisar)**, compruebe la configuración. Si necesita realizar cambios, seleccione **Anterior**. De lo contrario, puede elegir **Enviar trabajo**.

### Uso de AWS CLI
<a name="batch-ops-example-cli-job-create"></a>

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. 

------
#### [ Specify manifest ]

En el siguiente ejemplo se muestra cómo usar la AWS CLI para crear un trabajo `S3PutObjectTagging` de Operaciones por lotes de S3 que actúa en objetos que se enumeran en un archivo de manifiesto existente.

**Creación de un trabajo `S3PutObjectTagging` de Operaciones por lotes especificando un manifiesto**

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.

   1. 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](batch-ops-iam-role-policies.md).
**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](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-security-iam.html).

      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 `amzn-s3-demo-destination-bucket` por el nombre del bucket que contiene los objetos a los que desea aplicar etiquetas.
      + Sustituya *`amzn-s3-demo-manifest-bucket`* por el nombre del bucket que contiene el manifiesto.
      + Sustituya *`amzn-s3-demo-completion-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"		 	 	 ,		 	 	 TCX5-2025-waiver;,
        "Statement":[
          {
            "Effect":"Allow",
            "Action":[
              "s3:PutObjectTagging",
              "s3:PutObjectVersionTagging"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
          },
          {
            "Effect": "Allow",
            "Action": [
              "s3:GetObject",
              "s3:GetObjectVersion",
              "s3:GetBucketLocation"
            ],
            "Resource": [
              "arn:aws:s3:::amzn-s3-demo-manifest-bucket",
              "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
          },
          {
            "Effect":"Allow",
            "Action":[
              "s3:PutObject",
              "s3:GetBucketLocation"
            ],
            "Resource":[
              "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
              "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
          }
        ]
      }'
      ```

1. 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 [https://docs.aws.amazon.com/cli/latest/reference/s3control/create-job.html](https://docs.aws.amazon.com/cli/latest/reference/s3control/create-job.html) en la *Referencia de comandos de la 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:::amzn-s3-demo-manifest-bucket/manifest.csv","ETag":"60e460c9d1046e73f7dde5043ac3ae85"}}' \
       --report '{"Bucket":"arn:aws:s3:::amzn-s3-demo-completion-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.

**Creación de un trabajo `S3DeleteObjectTagging` de Operaciones por lotes especificando un manifiesto**

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"		 	 	 ,		 	 	 TCX5-2025-waiver;,
         "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.

   1. 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](batch-ops-iam-role-policies.md).
**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](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-security-iam.html).

      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 `amzn-s3-demo-destination-bucket` por el nombre del bucket que contiene los objetos a los que desea aplicar etiquetas.
      + Sustituya `amzn-s3-demo-manifest-bucket` por el nombre del bucket donde desee guardar el manifiesto.
      + Sustituya `amzn-s3-demo-completion-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"		 	 	 ,		 	 	 TCX5-2025-waiver;,
        "Statement":[
          {
            "Effect":"Allow",
            "Action":[
              "s3:DeleteObjectTagging",
              "s3:DeleteObjectVersionTagging"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
          },
          {
            "Effect":"Allow",
            "Action":[
              "s3:PutInventoryConfiguration"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
          },
          {
            "Effect": "Allow",
            "Action": [
              "s3:GetObject",
              "s3:GetObjectVersion",
              "s3:ListBucket"
            ],
            "Resource": [
              "arn:aws:s3:::amzn-s3-demo-manifest-bucket",
              "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
          },
          {
            "Effect":"Allow",
            "Action":[
              "s3:PutObject",
              "s3:ListBucket"
            ],
            "Resource":[
              "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
              "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*",
              "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
          }
        ]
      }'
      ```

      

1. 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 [https://docs.aws.amazon.com/cli/latest/reference/s3control/create-job.html](https://docs.aws.amazon.com/cli/latest/reference/s3control/create-job.html) en la *Referencia de comandos de la 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:::amzn-s3-demo-completion-report-bucket",
           "Prefix":"reports", 
           "Format":"Report_CSV_20180820",
           "Enabled":true,
           "ReportScope":"AllTasks"
       }' \
       --manifest-generator '{
           "S3JobManifestGenerator": {
             "ExpectedBucketOwner": "012345678901",
             "SourceBucket": "arn:aws:s3:::amzn-s3-demo-source-bucket",
             "EnableManifestOutput": true,
             "ManifestOutputLocation": {
               "ExpectedManifestBucketOwner": "012345678901",
               "Bucket": "arn:aws:s3:::amzn-s3-demo-manifest-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.

------

### Mediante AWS SDK para Java
<a name="batch-ops-examples-java-create-job"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) en la *Referencia de la API de Amazon S3*.

### Uso de la API de REST
<a name="batch-ops-examples-rest-create-job"></a>

Puede utilizar la API de REST para crear un trabajo de operaciones por lotes. Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html) en la *Referencia de la API de Amazon Simple Storage Service*. 

## Respuestas del trabajo
<a name="batch-ops-create-job-response-elements"></a>

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

# Operaciones compatibles con las operaciones por lotes de S3
<a name="batch-ops-operations"></a>

Puede utilizar Operaciones por lotes de S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. Operaciones por lotes de S3 puede realizar una sola operación en las listas de objetos de Amazon S3 que especifique. Un solo trabajo puede realizar una operación especificada en miles de millones de objetos que contiene exabytes de datos. Amazon S3 realiza un seguimiento del avance, envía notificaciones y guarda un informe de finalización de todas las acciones, por lo que proporciona una experiencia sin servidor, auditable y completamente administrada. Puede utilizar Operaciones por lotes de S3 a través de la consola de Amazon S3, la AWS CLI, los AWS SDK o la API de REST de Amazon S3.

Las operaciones por lotes de S3 admiten las siguientes operaciones:

# Copia de objetos
<a name="batch-ops-copy-object"></a>

Puede utilizar Operaciones por lotes de Amazon S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. Mediante la operación **Copia** de Operaciones por lotes, se copia cada objeto especificado en el manifiesto. Puede copiar objetos en un bucket en la misma Región de AWS o en un bucket de una región diferente. Operaciones por lotes de S3 admite la mayoría de las opciones disponibles a través de Amazon S3 para copiar objetos. Estas opciones incluyen la configuración de metadatos de objetos, la configuración de permisos y el cambio de la clase de almacenamiento de los objetos. 

Puede utilizar también la operación **Copiar** para copiar objetos existentes sin cifrar y escribirlos como objetos cifrados en el mismo bucket. Para obtener más información, consulte [Cifrado de objetos con la herramienta de operaciones por lotes de Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/).

Al copiar objetos, puede cambiar el algoritmo de suma de comprobación utilizado para calcular la suma de comprobación del objeto. Si los objetos no tienen calculada una suma de comprobación adicional, también puede agregarla especificando el algoritmo de suma de comprobación que utilizará Amazon S3. Para obtener más información, consulte [Comprobación de la integridad de objetos en Amazon S3](checking-object-integrity.md).

Para obtener más información acerca de cómo copiar objetos en Amazon S3, así como los parámetros obligatorios y opcionales, consulte [Copia, traslado y cambio de nombre de objetos](copy-object.md) en esta guía y [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) en la *Amazon Simple Storage Service API Reference*.

## Restricciones y limitaciones
<a name="batch-ops-copy-object-restrictions"></a>

Al utilizar la operación **Copiar** de Operaciones por lotes, se aplican las siguientes restricciones y limitaciones:
+ Todos los objetos de origen deben estar en el mismo bucket.
+ Todos los objetos de destino deben estar en el mismo bucket.
+ Debe tener permisos de lectura en el bucket de origen y permisos de escritura en el bucket de destino.
+ Los objetos que se van a copiar pueden tener un tamaño máximo de 5 GB.
+ Si intenta copiar objetos de las clases S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive a la clase de almacenamiento S3 Standard, primero debe restaurar estos objetos. Para obtener más información, consulte [Restauración de un objeto archivado](restoring-objects.md).
+ Debe crear los trabajos **Copiar** de Operaciones por lotes en la región de destino, que es la región a la que pretende copiar los objetos.
+ Se admiten todas las opciones de `CopyObject`, excepto para las comprobaciones condicionales de las etiquetas de entidades (ETag) y el cifrado del servidor con claves de cifrado proporcionadas por el cliente (SSE-C).
+ Si los buckets de destino no tienen control de versiones, se sobrescribirán los objetos con los mismos nombres de clave.
+ Los objetos no se copian necesariamente en el mismo orden en el que aparecen en el manifiesto. Para los buckets con control de versiones, si es importante conservar el orden de versiones actual o no actual, copie primero todas las versiones no actuales. Luego, una vez finalizado el primer trabajo, copie las versiones actuales en un trabajo posterior. 
+ No se admite la copia de objetos en la clase de almacenamiento de redundancia reducida (RRS).
+ Un solo trabajo de copia de operaciones por lotes puede admitir un manifiesto con hasta 20 000 millones de objetos.

# Copia de objetos mediante operaciones por lotes de S3
<a name="batch-ops-examples-copy"></a>

Puede utilizar Operaciones por lotes de Amazon S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. Puede utilizar Operaciones por lotes de S3 para crear un trabajo **Copiar** (`CopyObject`) para copiar objetos dentro de la misma cuenta o en otra cuenta de destino. 

Los siguientes ejemplos muestran cómo almacenar y utilizar un manifiesto que se encuentra en otra cuenta. El primer ejemplo muestra cómo puede usar el inventario de Amazon S3 para entregar el informe de inventario a la cuenta de destino para utilizarlo durante la creación de trabajos. En el segundo ejemplo se muestra cómo utilizar un manifiesto de valores separados por comas (CSV) en la cuenta de origen o destino. El tercer ejemplo muestra cómo utilizar la operación **Copiar** para habilitar claves de bucket de S3 para objetos existentes que se cifraron mediante el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS).

**Topics**
+ [Uso de un informe de inventario para copiar objetos entre Cuentas de AWS](specify-batchjob-manifest-xaccount-inventory.md)
+ [Uso de un manifiesto CSV para copiar objetos entre Cuentas de AWS](specify-batchjob-manifest-xaccount-csv.md)
+ [Uso de Operaciones por lotes para habilitar claves de bucket de S3 para SSE-KMS](batch-ops-copy-example-bucket-key.md)

# Uso de un informe de inventario para copiar objetos entre Cuentas de AWS
<a name="specify-batchjob-manifest-xaccount-inventory"></a>

Puede utilizar Operaciones por lotes de Amazon S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. Puede utilizar Operaciones por lotes de S3 para crear un trabajo **Copiar** (`CopyObject`) para copiar objetos dentro de la misma cuenta o en otra cuenta de destino.

Puede utilizar el Inventario de Amazon S3 para crear un informe de inventario y utilizar este informe para crear una lista de objetos (manifiesto) para copiar con Operaciones por lotes de S3. Para obtener más información sobre cómo utilizar un manifiesto CSV en la cuenta de origen o destino, consulte [Uso de un manifiesto CSV para copiar objetos entre Cuentas de AWS](specify-batchjob-manifest-xaccount-csv.md).

El inventario de Amazon S3 genera inventarios de los objetos de un bucket. La lista resultante se publica en un archivo saliente. El bucket cuyo inventario se crea se denomina bucket de origen y el bucket donde se almacena el archivo de informe de inventario se denomina bucket de destino. 

Es posible configurar el informe de Amazon S3 Inventory para que se entregue a otra Cuenta de AWS. Esto permite a Operaciones por lotes de S3 leer el informe de inventario cuando se crea el trabajo en la cuenta de destino.

Para obtener más información sobre los buckets de origen y destino de inventario de Amazon S3, consulte [Buckets de origen y destino](storage-inventory.md#storage-inventory-buckets).

La forma más sencilla de configurar un inventario es a través de la consola de Amazon S3, pero también puede utilizar la API de REST de Amazon S3, la AWS Command Line Interface (AWS CLI) o los SDK de AWS.

El siguiente procedimiento de la consola contiene los pasos de alto nivel para establecer permisos para un trabajo de Operaciones por lotes de S3. En este procedimiento se copian objetos de una cuenta de origen a una cuenta de destino, y el informe de inventario se almacena en la cuenta de destino.

**Para configurar Amazon S3 Inventory para buckets de origen y destino pertenecientes a distintas cuentas**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets**.

1. Elija (o cree) un bucket de manifiesto de destino en el que almacenar el informe de inventario. En este procedimiento, la *cuenta de destino* es la cuenta a la que pertenecen tanto el bucket de manifiestos de destino como el bucket en el que se copian los objetos.

1. Configure un informe de inventario para un bucket de origen. Para obtener información acerca de cómo utilizar la consola para configurar un inventario o cómo cifrar un archivo de lista de inventario, consulte [Configuración de Inventario de Amazon S3](configure-inventory.md). 

   Cuando configure el informe de inventario, especifique el bucket de destino donde quiera que se almacene la lista. El informe de inventario para el bucket de origen se publica en el bucket de destino. En este procedimiento, la *cuenta de origen* es la cuenta propietaria del bucket de origen.

   Elija **CSV** para el formato de salida.

   Cuando introduzca la información del bucket de destino, elija **Buckets in another account (Los buckets de otra cuenta)**. A continuación, introduzca el nombre del bucket de manifiestos de destino. Si lo desea, puede introducir el ID de la cuenta de destino.

   Cuando se guarda la configuración de inventario, la consola muestra un mensaje similar al siguiente: 

   Amazon S3 could not create a bucket policy on the destination bucket. Ask the destination bucket owner to add the following bucket policy to allow Amazon S3 to place data in that bucket (Amazon S3 no pudo crear una política de bucket en el bucket de destino. Pida al propietario del bucket de destino que añada la siguiente política de bucket para permitir que Amazon S3 coloque datos en ese bucket.

   A continuación, la consola muestra una política de bucket que se puede utilizar para el bucket de destino.

1. Copie la política de bucket de destino que aparece en la consola.

1. En la cuenta de destino, añada la política de bucket que ha copiado al bucket de manifiestos de destino donde se almacena el informe de inventario.

1. En la cuenta de destino, cree un rol basado en la política de confianza de Operaciones por lotes de S3. Para obtener más información acerca de esta política de confianza, consulte [Política de confianza](batch-ops-iam-role-policies.md#batch-ops-iam-role-policies-trust).

   Para obtener más información sobre cómo crear un rol, consulte [Crear un rol para delegar permisos a un Servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la *Guía del usuario de IAM*.

   Introduzca un nombre para el rol (el rol de ejemplo siguiente utiliza el nombre *`BatchOperationsDestinationRoleCOPY`*). Elija el servicio **S3** y, a continuación, elija el caso de uso **Operaciones por lotes de S3**, que aplica la política de confianza al rol. 

   A continuación, elija **Create policy (Crear política)** para asociar la política siguiente al rol. Para utilizar esta política, sustituya *`user input placeholders`* por su propia información. 

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsDestinationObjectCOPY",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:PutObjectVersionAcl",
           "s3:PutObjectAcl",
           "s3:PutObjectVersionTagging",
           "s3:PutObjectTagging",
           "s3:GetObject",
           "s3:GetObjectVersion",
           "s3:GetObjectAcl",
           "s3:GetObjectTagging",
           "s3:GetObjectVersionAcl",
           "s3:GetObjectVersionTagging"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-destination-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
       }
     ]
   }
   ```

------

   El rol utiliza la política para conceder permiso a `batchoperations.s3.amazonaws.com` para leer el manifiesto en el bucket de destino. También concede permisos para objetos `GET`, listas de control de acceso (ACL), etiquetas y versiones en el bucket de objetos de origen. Y concede permisos para objetos `PUT`, ACL, etiquetas y versiones en el bucket de objetos de destino.

1. En la cuenta de origen, cree una política de bucket para el bucket de origen que otorgue al rol que creó en el paso anterior permisos a objetos `GET`, ACL, etiquetas y versiones en el bucket de origen. Este paso permite a Operaciones por lotes de S3 obtener objetos del bucket de origen a través del rol de confianza.

   A continuación, se muestra un ejemplo de política de bucket para la cuenta de origen. Para utilizar esta política, sustituya *`user input placeholders`* por su propia información.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowBatchOperationsSourceObjectCOPY",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/BatchOperationsDestinationRoleCOPY"
               },
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion",
                   "s3:GetObjectAcl",
                   "s3:GetObjectTagging",
                   "s3:GetObjectVersionAcl",
                   "s3:GetObjectVersionTagging"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
           }
       ]
   }
   ```

------

1. Una vez que el informe de inventario esté disponible, cree un trabajo **Copiar** (`CopyObject`) de Operaciones por lotes de S3 en la cuenta de destino y seleccione el informe de inventario en el bucket de manifiestos de destino. Necesita el ARN del rol de IAM que creó en la cuenta de destino.

   Para obtener información general acerca de cómo crear un trabajo, consulte [Creación de trabajos de operaciones por lotes de S3](batch-ops-create-job.md).

   Para obtener información sobre cómo crear un trabajo mediante la consola, consulte [Creación de trabajos de operaciones por lotes de S3](batch-ops-create-job.md).

# Uso de un manifiesto CSV para copiar objetos entre Cuentas de AWS
<a name="specify-batchjob-manifest-xaccount-csv"></a>

Puede utilizar Operaciones por lotes de Amazon S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. Puede utilizar Operaciones por lotes de S3 para crear un trabajo **Copiar** (`CopyObject`) para copiar objetos dentro de la misma cuenta o en otra cuenta de destino.

Puede utilizar un manifiesto CSV almacenado en la cuenta de origen para copiar objetos entre Cuentas de AWS con Operaciones por lotes de Amazon S3. Para usar un informe de inventario de S3 como manifiesto, consulte [Uso de un informe de inventario para copiar objetos entre Cuentas de AWS](specify-batchjob-manifest-xaccount-inventory.md).

Para ver un ejemplo del formato CSV de los archivos de manifiesto, consulte [Creación de un archivo de manifiesto](batch-ops-create-job.md#create-manifest-file).

En el siguiente procedimiento, se muestra cómo configurar los permisos cuando se utiliza un trabajo de Operaciones por lotes de Amazon S3 para copiar objetos desde una cuenta de origen a una cuenta de destino con el archivo de manifiesto CSV almacenado en la cuenta de origen.

**Uso de un manifiesto CSV para copiar objetos entre Cuentas de AWS**

1. Cree un rol de AWS Identity and Access Management (IAM) en la cuenta de destino que se base en la política de confianza de Operaciones por lotes de S3. En este procedimiento, la *cuenta de destino* es la cuenta en la que se copian los objetos.

   Para obtener más información acerca de la política de confianza, consulte [Política de confianza](batch-ops-iam-role-policies.md#batch-ops-iam-role-policies-trust).

   Para obtener más información sobre cómo crear un rol, consulte [Crear un rol para delegar permisos a un Servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la *Guía del usuario de IAM*.

   Si crea el rol utilizando la consola, introduzca un nombre para el rol (el rol de ejemplo utiliza el nombre `BatchOperationsDestinationRoleCOPY`). Elija el servicio **S3** y, a continuación, elija el caso de uso **Operaciones por lotes de S3**, que aplica la política de confianza al rol.

   A continuación, elija **Create policy (Crear política)** para asociar la política siguiente al rol. Para utilizar esta política, sustituya *`user input placeholders`* por su propia información.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsDestinationObjectCOPY",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:PutObjectVersionAcl",
           "s3:PutObjectAcl",
           "s3:PutObjectVersionTagging",
           "s3:PutObjectTagging",
           "s3:GetObject",
           "s3:GetObjectVersion",
           "s3:GetObjectAcl",
           "s3:GetObjectTagging",
           "s3:GetObjectVersionAcl",
           "s3:GetObjectVersionTagging"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-destination-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
       }
     ]
   }
   ```

------

   Mediante la política, el rol concede permiso a `batchoperations.s3.amazonaws.com` para leer el manifiesto en el bucket de manifiestos de origen. Concede permisos para objetos `GET`, listas de control de acceso (ACL), etiquetas y versiones en el bucket de objetos de origen. También concede permisos para objetos `PUT`, ACL, etiquetas y versiones en el bucket de objetos de destino.

1. En la cuenta de origen, cree una política de bucket para el bucket que contenga el manifiesto para conceder el rol que creó en el paso anterior para objetos `GET` y versiones en el bucket de manifiesto de origen.

   Este paso permite a Operaciones por lotes de Amazon S3 leer el manifiesto utilizando el rol de confianza. Aplique la política de bucket al bucket que contiene el manifiesto.

   A continuación, se muestra un ejemplo de política de bucket que puede aplicarse al bucket de manifiestos de origen. Para utilizar esta política, sustituya *`user input placeholders`* por su propia información.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsSourceManifestRead",
         "Effect": "Allow",
         "Principal": {
           "AWS": [
             "arn:aws:iam::111122223333:user/ConsoleUserCreatingJob",
             "arn:aws:iam::111122223333:role/BatchOperationsDestinationRoleCOPY"
           ]
         },
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
       }
     ]
   }
   ```

------

   Esta política también concede permisos para permitir a un usuario de la consola que esté creando un trabajo en la cuenta de destino los mismos permisos en el bucket de manifiestos de origen a través de la misma política de bucket.

1. En la cuenta de origen, cree una política de bucket para el bucket de origen que conceda al rol que creó permisos para objetos `GET`, ACL, etiquetas y versiones en el bucket de objetos de origen. Operaciones por lotes de S3 puede, entonces, obtener objetos del bucket de origen a través del rol de confianza.

   A continuación, se muestra un ejemplo de política de bucket para el bucket que contiene los objetos de origen. Para utilizar esta política, sustituya *`user input placeholders`* por su propia información.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsSourceObjectCOPY",
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::111122223333:role/BatchOperationsDestinationRoleCOPY"
         },
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion",
           "s3:GetObjectAcl",
           "s3:GetObjectTagging",
           "s3:GetObjectVersionAcl",
           "s3:GetObjectVersionTagging"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
       }
     ]
   }
   ```

------

1. Cree un trabajo de Operaciones por lotes de S3 en la cuenta de destino. Necesita el nombre de recurso de Amazon (ARN) para el rol que ha creado en la cuenta de destino. Para obtener más información acerca de la creación de un trabajo, consulte [Creación de trabajos de operaciones por lotes de S3](batch-ops-create-job.md).

# Uso de Operaciones por lotes para habilitar claves de bucket de S3 para SSE-KMS
<a name="batch-ops-copy-example-bucket-key"></a>

Las claves de bucket de S3 reducen el costo de cifrado del servidor mediante AWS Key Management Service (AWS KMS) (SSE-KMS) al disminuir el tráfico de solicitudes de Amazon S3 a AWS KMS. Para obtener más información, consulte [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](bucket-key.md) y [Configuración del bucket para utilizar una clave de bucket de S3 con SSE-KMS para objetos nuevos](configuring-bucket-key.md). Cuando realiza una operación `CopyObject` mediante la API de REST, los AWS SDK o la AWS CLI, puede habilitar o deshabilitar una clave de bucket de S3 en el nivel de objeto agregando el encabezado de la solicitud `x-amz-server-side-encryption-bucket-key-enabled` con un valor `true` o `false`. 

Cuando se configura una clave de bucket de S3 para un objeto mediante una operación `CopyObject`, Amazon S3 solo actualiza la configuración de ese objeto. La configuración de la clave de bucket de S3 para el bucket de destino no cambia. Si envía una solicitud `CopyObject` para un objeto cifrado con AWS KMS a un bucket con las claves de bucket de S3 habilitadas, la operación en el nivel de objeto utilizará automáticamente las claves de bucket de S3, a menos que deshabilite las claves del encabezado de la solicitud. Si no especifica una clave de bucket de S3 para el objeto, Amazon S3 aplica el ajuste de la clave de bucket de S3 para el bucket de destino al objeto.

Para cifrar los objetos de Amazon S3 existentes, puede utilizar Operaciones por lotes de Amazon S3. Puede utilizar la **operación de copia de la herramienta de operaciones por lotes** para copiar objetos existentes sin cifrar y escribirlos como objetos cifrados en el mismo bucket. Para obtener más información, consulte [Encrypting objects with Amazon S3 Batch Operations](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/) en el AWS Storage Blog.

En el siguiente ejemplo, utiliza la operación **Copiar** de Operaciones por lotes para habilitar claves de bucket de S3 en objetos existentes. Para obtener más información, consulte [Configuración de una clave de bucket de S3 en el nivel de objeto](configuring-bucket-key-object.md).

**Topics**
+ [Consideraciones sobre el uso de Operaciones por lotes de S3 para cifrar objetos con claves de bucket de S3 habilitadas](#bucket-key-ex-things-to-note)
+ [Requisitos previos](#bucket-key-ex-prerequisites)
+ [Paso 1: obtener la lista de objetos mediante Amazon S3 Inventory](#bucket-key-ex-get-list-of-objects)
+ [Paso 2: filtrar la lista de objetos con S3 Select](#bucket-key-ex-filter-object-list-with-s3-select)
+ [Paso 3: configurar y ejecutar el trabajo de la herramienta de operaciones por lotes de S3](#bucket-key-ex-setup-and-run-job)

## Consideraciones sobre el uso de Operaciones por lotes de S3 para cifrar objetos con claves de bucket de S3 habilitadas
<a name="bucket-key-ex-things-to-note"></a>

Tenga en cuenta los siguientes problemas cuando utilice Operaciones por lotes de S3 para cifrar objetos con claves de bucket de S3:
+ Se le cobrarán los trabajos, los objetos y las solicitudes de Operaciones por lotes de S3, además de los cargos asociados a la operación que Operaciones por lotes de S3 realiza en su nombre, incluidas las transferencias de datos, las solicitudes y otros cargos. Para obtener más información, consulte [Precios de Amazon S3](https://aws.amazon.com/s3/pricing).
+ Si utiliza un bucket con control de versiones, cada trabajo de la herramienta de operaciones por lotes de S3 realizado crea nuevas versiones cifradas de los objetos. También mantiene las versiones anteriores sin una clave de bucket de S3 configurada. Para eliminar las versiones anteriores, configure una política de vencimiento del ciclo de vida de S3 para las versiones no actuales como se describe en [Elementos de configuración del ciclo de vida](intro-lifecycle-rules.md).
+ La operación de copia crea nuevos objetos con nuevas fechas de creación, lo que puede afectar a las acciones del ciclo de vida, como el archivado. Si copia todos los objetos del bucket, todas las copias nuevas tendrán fechas de creación idénticas o similares. Para identificar aún más estos objetos y crear reglas de ciclo de vida diferentes para varios subconjuntos de datos, considere la posibilidad de utilizar etiquetas de objeto. 

## Requisitos previos
<a name="bucket-key-ex-prerequisites"></a>

Antes de configurar los objetos para usar una clave de bucket de S3, consulte [Cambios para tener en cuenta antes de habilitar una clave de bucket de S3](bucket-key.md#bucket-key-changes). 

Para utilizar este ejemplo, debe tener una Cuenta de AWS y, al menos, un bucket de S3 para almacenar los archivos de trabajo y los resultados cifrados. También le puede resultar útil gran parte de la documentación existente de la herramienta de operaciones por lotes de S3, incluidos los siguientes temas:
+ [Conceptos básicos de Operaciones por lotes de S3](batch-ops.md#batch-ops-basics)
+ [Creación de trabajos de operaciones por lotes de S3](batch-ops-create-job.md)
+ [Operaciones compatibles con las operaciones por lotes de S3](batch-ops-operations.md)
+ [Administración de trabajos de operaciones por lotes de S3](batch-ops-managing-jobs.md)

## Paso 1: obtener la lista de objetos mediante Amazon S3 Inventory
<a name="bucket-key-ex-get-list-of-objects"></a>

Para empezar, identifique el bucket de S3 que contiene los objetos que desea cifrar y obtenga una lista del contenido. Un informe de inventario de Amazon S3 es la forma más conveniente y asequible de hacerlo. En el informe se proporciona la lista de los objetos de un bucket junto con los metadatos asociados. En este paso, el bucket de origen es el bucket cuyo inventario se crea y el bucket de destino es el bucket donde se almacena el archivo de informe de inventario. Para obtener más información sobre los buckets de origen y destino de inventario de Amazon S3, consulte [Catálogo y análisis de sus datos con Inventario de S3](storage-inventory.md).

La forma más sencilla de configurar un inventario es usar la Consola de administración de AWS. Sin embargo, puede también usar la API REST, la AWS Command Line Interface (AWS CLI) o los SDK de AWS. Antes de seguir estos pasos, inicie sesión en la consola y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/). Si encuentra errores de permiso denegado, agregue una política de bucket al bucket de destino. Para obtener más información, consulte [Concesión de permisos para el inventario de S3 y el análisis de S3](example-bucket-policies.md#example-bucket-policies-s3-inventory-1).

**Para obtener la lista de objetos mediante el inventario de S3**

1. Abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets** y, a continuación, elija un bucket que contenga objetos para cifrar.

1. En la pestaña **Management (Administración)**, diríjase a la sección **Inventory configurations (Configuraciones de inventario)** y elija **Create inventory configuration (Crear una configuración de inventario)**.

1. Asigne un nombre a su nuevo inventario, introduzca el nombre del bucket de S3 de destino y, opcionalmente, cree un prefijo de destino para que Amazon S3 asigne objetos en ese bucket.

1. Elija **CSV** para **Output format (Formato de salida)**.

1. (Opcional) En la sección **Campos adicionales: *opcional***, elija **Cifrado** y cualquier otro campo de informe que le interese. Establezca la frecuencia de entregas de informes en **Daily (Diaria)** para que el primer informe se entregue a su bucket más pronto.

1. Elija **Guardar** para guardar la configuración.

Amazon S3 puede tardar hasta 48 horas en entregar el primer informe, por lo que debe verificar cuando este llegue. Después de recibir el primer informe, diríjase al siguiente paso para filtrar el contenido del informe de Inventario de S3. Si ya no quiere recibir informes de inventario para este bucket, elimine la configuración de inventario de S3. De lo contrario, Amazon S3 sigue entregando informes de manera diaria o semanal.

Una lista de inventario no es una vista estática de todos los objetos. Las listas de inventario son una instantánea continua de los elementos de un bucket, que son coherentes en última instancia (por ejemplo: la lista podría no incluir los objetos agregados o eliminados más recientemente). La combinación de la herramienta de operaciones por lotes de S3 y del inventario de S3 funciona mejor cuando se trabaja con objetos estáticos o con un conjunto de objetos creado hace dos o más días. Con el fin de trabajar con datos más recientes, utilice la operación de la API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) (bucket `GET`) para crear la lista de objetos de forma manual. Si es necesario, repita el proceso durante los próximos días o hasta que el informe de inventario muestre el estado deseado para todos los objetos.

## Paso 2: filtrar la lista de objetos con S3 Select
<a name="bucket-key-ex-filter-object-list-with-s3-select"></a>

Después de recibir el informe de inventario de S3, puede filtrar el contenido para mostrar solo los objetos que no estén cifrados con claves de bucket de S3 habilitadas. Si desea que todos los objetos del bucket se cifren con claves de bucket de S3 habilitadas, puede omitir este paso. Sin embargo, al filtrar el informe de inventario de S3 en esta fase, se ahorra el tiempo y los gastos que supone volver a cifrar objetos que ya había cifrado con las claves de bucket de S3 habilitadas.

Aunque en los siguientes pasos se muestra cómo filtrar mediante [Amazon S3 Select](https://aws.amazon.com/blogs/aws/s3-glacier-select/), también puede utilizar [Amazon Athena](https://aws.amazon.com/athena). Para decidir qué herramienta usar, consulte el archivo `manifest.json` del informe de inventario de S3. En este archivo se muestra el número de archivos de datos asociados a ese informe. Si el número es grande, utilice Amazon Athena, ya que se ejecuta en varios objetos de S3, mientras que S3 Select funciona solo en un objeto a la vez. Para obtener más información sobre cómo usar Amazon S3 y Athena juntos, consulte [Consulta de Amazon S3 Inventory con Amazon Athena](storage-inventory-athena-query.md) y “Using Athena” en la publicación [Encrypting objects with Amazon S3 Batch Operations](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations) de AWS Storage Blog.

**Filtro del informe de inventario de S3 mediante S3 Select**

1. Abra el archivo `manifest.json` del informe de inventario y consulte la sección `fileSchema` del JSON. Esta es información para la consulta que se ejecuta en los datos. 

   El siguiente JSON es un ejemplo del archivo `manifest.json` para un inventario con formato CSV en un bucket con el control de versiones habilitado. Dependiendo de cómo haya configurado el informe de inventario, el manifiesto podría tener un aspecto diferente.

   ```
     {
       "sourceBucket": "batchoperationsdemo",
       "destinationBucket": "arn:aws:s3:::amzn-s3-demo-destination-bucket",
       "version": "2021-05-22",
       "creationTimestamp": "1558656000000",
       "fileFormat": "CSV",
       "fileSchema": "Bucket, Key, VersionId, IsLatest, IsDeleteMarker, BucketKeyStatus",
       "files": [
         {
           "key": "demoinv/batchoperationsdemo/DemoInventory/data/009a40e4-f053-4c16-8c75-6100f8892202.csv.gz",
           "size": 72691,
           "MD5checksum": "c24c831717a099f0ebe4a9d1c5d3935c"
         }
       ]
     }
   ```

   Si el control de versiones no está activado en el bucket, o si decide ejecutar el informe para las versiones más recientes, el `fileSchema` es `Bucket`, `Key`, y `BucketKeyStatus`. 

   Si el control de versiones *está* activado, dependiendo de cómo configure el informe de inventario, el `fileSchema` podría incluir lo siguiente: `Bucket`, `Key`, `VersionId`, `IsLatest`, `IsDeleteMarker`, `BucketKeyStatus`. Por lo tanto, preste atención a las columnas 1, 2, 3 y 6 cuando ejecute su consulta. 

   Operaciones por lotes de S3 necesita el bucket, la clave y el ID de versión como entradas para realizar el trabajo, además del campo por el que se debe buscar, que es `BucketKeyStatus`. No necesita el campo `VersionID`, pero especificar el campo `VersionID` es útil cuando opera en un bucket con control de versiones. Para obtener más información, consulte [Trabajar con objetos en un bucket con control de versiones habilitado](manage-objects-versioned-bucket.md).

1. Ubique los archivos de datos para el informe de inventario. El objeto `manifest.json` muestra los archivos de datos en **files (archivos)**.

1. Después de ubicar y seleccionar el archivo de datos en la consola de S3, elija **Actions (Acciones)** y, luego, **Query with S3 Select (Consultar con S3 Select)**.

1. Mantenga los campos preseleccionados **CSV**, **Comma (Coma)**, y **GZIP** dentro de la selección y elija **Next (Siguiente)**.

1. Para revisar el formato del informe de inventario antes de continuar, seleccione **Show file preview (Mostrar previsualización del archivo)**.

1. Introduzca las columnas a las que se debe hacer referencia en el campo de expresión SQL. Luego, elija **Run SQL (Ejecutar SQL)**. La siguiente expresión muestra las columnas 1 a 3 para todos los objetos sin una clave de bucket de S3 configurada.

   `select s._1, s._2, s._3 from s3object s where s._6 = 'DISABLED'`

   A continuación se incluyen resultados de ejemplo.

   ```
         batchoperationsdemo,0100059%7Ethumb.jpg,lsrtIxksLu0R0ZkYPL.LhgD5caTYn6vu
         batchoperationsdemo,0100074%7Ethumb.jpg,sd2M60g6Fdazoi6D5kNARIE7KzUibmHR
         batchoperationsdemo,0100075%7Ethumb.jpg,TLYESLnl1mXD5c4BwiOIinqFrktddkoL
         batchoperationsdemo,0200147%7Ethumb.jpg,amufzfMi_fEw0Rs99rxR_HrDFlE.l3Y0
         batchoperationsdemo,0301420%7Ethumb.jpg,9qGU2SEscL.C.c_sK89trmXYIwooABSh
         batchoperationsdemo,0401524%7Ethumb.jpg,ORnEWNuB1QhHrrYAGFsZhbyvEYJ3DUor
         batchoperationsdemo,200907200065HQ%7Ethumb.jpg,d8LgvIVjbDR5mUVwW6pu9ahTfReyn5V4
         batchoperationsdemo,200907200076HQ%7Ethumb.jpg,XUT25d7.gK40u_GmnupdaZg3BVx2jN40
         batchoperationsdemo,201103190002HQ%7Ethumb.jpg,z.2sVRh0myqVi0BuIrngWlsRPQdb7qOS
   ```

1. Descargue los resultados, guárdelos en un formato CSV y cárguelos en Amazon S3 como la lista de objetos para el trabajo de la herramienta de operaciones por lotes de S3.

1. Si tiene varios archivos de manifiesto, ejecute **Query with S3 Select (Consultar con S3 Select)** en esos también. Dependiendo del tamaño de los resultados, puede combinar las listas y ejecutar un único trabajo de la herramienta de operaciones por lotes de S3 o ejecutar cada lista como un trabajo independiente. Para decidir el número de trabajos que se van a ejecutar, tenga en cuenta el [precio](https://aws.amazon.com/s3/pricing/) de ejecutar cada trabajo de Operaciones por lotes de S3.

## Paso 3: configurar y ejecutar el trabajo de la herramienta de operaciones por lotes de S3
<a name="bucket-key-ex-setup-and-run-job"></a>

Ahora que tiene sus listas CSV filtradas de objetos de S3, puede comenzar el trabajo de Operaciones por lotes de S3 para cifrar los objetos con claves de bucket de S3 habilitadas.

Un *trabajo* hace referencia colectivamente a la lista (manifiesto) de objetos proporcionados, la operación realizada y los parámetros especificados. La forma más sencilla de cifrar este conjunto de objetos con claves de bucket de S3 habilitadas es usar la operación **Copiar** y especificar el mismo prefijo de destino que los objetos que aparecen en el manifiesto. En un bucket sin control de versiones, esta operación sobrescribe los objetos existentes. En un bucket con control de versiones activado, esta operación crea una versión más reciente y cifrada de los objetos.

Como parte de la copia de los objetos, especifique que Amazon S3 debe cifrar los objetos con cifrado SSE-KMS. Este trabajo copia los objetos, por lo que todos los objetos mostrarán una fecha de creación actualizada al finalizar, independientemente de cuándo los agregó originalmente a Amazon S3. Especifique también las otras propiedades del conjunto de objetos como parte del trabajo de la herramienta de operaciones por lotes de S3, incluidas las etiquetas de objeto y la clase de almacenamiento.

**Topics**
+ [Configuración de la política de IAM](#bucket-key-ex-set-up-iam-policy)
+ [Configuración del rol de IAM de la herramienta de operaciones por lotes](#bucket-key-ex-set-up-iam-role)
+ [Habilitación de claves de bucket de S3 para un bucket existente](#bucket-key-ex-enable-s3-bucket-key-on-a-bucket)
+ [Creación de un trabajo de la herramienta de operaciones por lotes](#bucket-key-ex-create-job)
+ [Ejecución del trabajo de la herramienta de operaciones por lotes](#bucket-key-ex-run-job)

### Configuración de la política de IAM
<a name="bucket-key-ex-set-up-iam-policy"></a>

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la izquierda, seleccione **Política** y, a continuación, elija **Crear política**.

1. Seleccione la pestaña **JSON**. Seleccione **Edit policy (Editar política)** y agregue la política de IAM de ejemplo que aparece en el siguiente bloque de código. 

   Después de copiar el ejemplo de política en la [consola de IAM](https://console.aws.amazon.com/iam/), reemplace lo siguiente:

   1. Sustituya `amzn-s3-demo-source-bucket` con el nombre del bucket de origen desde el que copiar los objetos.

   1. Sustituya `amzn-s3-demo-destination-bucket` con el nombre del bucket de destino en el que copiar los objetos.

   1. Reemplace `amzn-s3-demo-manifest-bucket/manifest-key` con el nombre del objeto de manifiesto.

   1. Sustituya `amzn-s3-demo-completion-report-bucket` con el nombre del bucket donde desee guardar los informes de finalización.

------
#### [ JSON ]

****  

   ```
     {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Sid": "CopyObjectsToEncrypt",
           "Effect": "Allow",
           "Action": [
             "s3:PutObject",
             "s3:PutObjectTagging",
             "s3:PutObjectAcl",
             "s3:PutObjectVersionTagging",
             "s3:PutObjectVersionAcl",
             "s3:GetObject",
             "s3:GetObjectAcl",
             "s3:GetObjectTagging",
             "s3:GetObjectVersion",
             "s3:GetObjectVersionAcl",
             "s3:GetObjectVersionTagging"
           ],
           "Resource": [
             "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
             "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
           ]
         },
         {
           "Sid": "ReadManifest",
           "Effect": "Allow",
           "Action": [
             "s3:GetObject",
             "s3:GetObjectVersion"
           ],
           "Resource": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/manifest-key"
         },
         {
           "Sid": "WriteReport",
           "Effect": "Allow",
           "Action": [
             "s3:PutObject"
           ],
           "Resource": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
         }
       ]
     }
   ```

------

1. Elija **Next: Tags (Siguiente: etiquetas)**.

1. Agregue las etiquetas que desee (opcional) y elija **Siguiente: Revisar**.

1. Proporcione un nombre para la política y, opcionalmente, una descripción; a continuación, elija **Crear política**.

1. Elija **Revisar política** y, a continuación, **Guardar cambios**.

1. Con su política de la herramienta de operaciones por lotes de S3 ya completada, la consola lo lleva nuevamente a la página **Políticas** de IAM. Filtre por el nombre de la política, elija el botón situado a la izquierda del nombre de la política, elija **Acciones de política** y, a continuación, **Adjuntar**. 

   Para adjuntar la política recién creada a un rol de IAM, seleccione los usuarios, grupos o roles apropiados en la cuenta y elija **Adjuntar política**. Esto lo lleva de vuelta a la consola de IAM.

### Configuración del rol de IAM de la herramienta de operaciones por lotes
<a name="bucket-key-ex-set-up-iam-role"></a>

1. En el panel de navegación de la [consola de IAM](https://console.aws.amazon.com/iam/), seleccione **Roles** y, a continuación, seleccione **Crear rol**.

1. Elija **Servicio de AWS**, **S3** y **Operaciones por lotes de S3**. A continuación, elija **Siguiente: Permisos)**.

1. Comience a escribir el nombre de la **política** de IAM que acaba de crear. Seleccione la casilla de verificación junto al nombre de la política cuando aparezca y elija **Siguiente: Etiquetas**.

1. (Opcional) Agregue etiquetas o mantenga los campos de clave y valor en blanco para este ejercicio. Elija **Next: Review (Siguiente: revisar)**.

1. Introduzca un nombre de rol y acepte la descripción predeterminada o agregue la suya. Elija **Create role (Crear rol)**.

1. Asegúrese de que el usuario que crea el trabajo tenga los permisos del siguiente ejemplo. 

   Reemplace `account-id` con su ID de Cuenta de AWS y `IAM-role-name` con el nombre que tiene previsto aplicar al rol de IAM que creará más adelante en el paso de creación de trabajo de Operaciones por lotes. Para obtener más información, consulte [Concesión de permisos para Operaciones por lotes](batch-ops-iam-role-policies.md).

   ```
               {
               "Sid": "AddIamPermissions",
               "Effect": "Allow",
               "Action": [
               "iam:GetRole",
               "iam:PassRole"
               ],
               "Resource": "arn:aws:iam::account-id:role/IAM-role-name"
               }
   ```

### Habilitación de claves de bucket de S3 para un bucket existente
<a name="bucket-key-ex-enable-s3-bucket-key-on-a-bucket"></a>

1. Abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3](https://console.aws.amazon.com/s3/).

1. En la lista **Buckets**, elija el bucket para el que desea habilitar una clave de bucket de S3.

1. Seleccione **Properties (Propiedades)**.

1. En **Cifrado predeterminado**, elija **Editar**.

1. En **Tipo de cifrado**, elija **Claves administradas de Amazon S3 (SSE-S3)** o **Clave de AWS Key Management Service (SSE-KMS)**. 

1. Si elige la **Clave de AWS Key Management Service (SSE-KMS)**, en **AWS KMS key**, puede especificar la clave de AWS KMS mediante una de las siguientes opciones.
   + Para elegir de una lista de claves de KMS disponibles, marque **Elija entre sus claves de AWS KMS**. En la lista de claves disponibles, elija una clave de KMS de cifrado simétrica de la misma región que el bucket. En esta lista aparecen tanto la clave administrada de AWS (`aws/s3`) como las claves administradas por el cliente.
   + Para introducir el ARN de la clave de KMS, elija **Introducir el ARN de la clave de AWS KMS** e introduzca el ARN de la clave de KMS en el campo que aparece.
   + Para crear una nueva clave administrada por el cliente en la consola de AWS KMS, elija **Crear una clave de KMS**.

1. En **Clave de bucket)**, elija **Habilitar** y luego **Guardar cambios**.

Ahora que se ha habilitado una clave de bucket de S3 en el bucket, los objetos que se carguen, modifiquen o copien en este bucket heredarán esta configuración de cifrado de forma predeterminada. Aquí también se incluyen los objetos copiados con Operaciones por lotes de Amazon S3.

### Creación de un trabajo de la herramienta de operaciones por lotes
<a name="bucket-key-ex-create-job"></a>

1. Abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3](https://console.aws.amazon.com/s3/).

1. En el panel de navegación, elija **Operaciones por lotes** y luego **Crear trabajo**.

1. Elija la **Región** donde almacena los objetos y, a continuación, **CSV** como el tipo de manifiesto.

1. Introduzca la ruta o desplácese hasta el archivo de manifiesto CSV que creó antes a partir de los resultados de S3 Select (o Athena). Si el manifiesto contiene ID de versiones, seleccione esa casilla de verificación. Elija **Next (Siguiente)**.

1. Elija la operación **Copiar** y elija el bucket de destino de copia. Puede mantener el cifrado del lado del servidor desactivado. Siempre y cuando el bucket de destino tenga habilitadas las claves de bucket de S3, la operación de copia aplica claves de bucket de S3 en el bucket de destino.

1. (Opcional) Elija una clase de almacenamiento y los demás parámetros que desee. Los parámetros que especifique en este paso se aplican a todas las operaciones realizadas en los objetos que aparecen en el manifiesto. Elija **Siguiente**.

1. Para configurar el cifrado del servidor, siga los siguientes pasos: 

   1. En **Cifrado del lado del servidor**, elija una de las siguientes opciones:
      + Para mantener la configuración del bucket para el cifrado predeterminado del servidor de los objetos al almacenarlos en Amazon S3, elija **No especifique una clave de cifrado**. Siempre y cuando el bucket de destino tenga habilitadas las claves de bucket de S3, la operación de copia aplicará una clave de bucket de S3 al bucket de destino.
**nota**  
Si la política de bucket para el destino especificado exige que los objetos estén cifrados antes de almacenarlos en Amazon S3, debe especificar una clave de cifrado. De lo contrario, se producirá un error al copiar los objetos en el destino.
      + Para cifrar objetos antes de almacenarlos en Amazon S3, elija **Especificar una clave de cifrado**.

   1. En **Configuración del cifrado**, si selecciona **Especificar una clave de cifrado**, debe elegir entre **Usar la configuración del bucket de destino para el cifrado predeterminado** o **Anular la configuración del bucket de destino para el cifrado predeterminado**.

   1. Si elige **Anular la configuración del bucket de destino para el cifrado predeterminado**, debe configurar los siguientes ajustes de cifrado.

      1. En **Tipo de cifrado**, elija **Claves administradas de Amazon S3 (SSE-S3)** o **Clave de AWS Key Management Service (SSE-KMS)**. SSE-S3 utiliza uno de los cifrados de bloques más seguros, Advanced Encryption Standard de 256 bits (AES-256), para cifrar cada objeto. SSE-KMS le proporciona más control sobre su clave. Para obtener más información, consulte [Uso del cifrado del servidor con claves administradas por Amazon S3 (SSE-S3)](UsingServerSideEncryption.md) y [Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS)](UsingKMSEncryption.md).

      1. Si elige **Clave de AWS Key Management Service (SSE-KMS)**, en **AWS KMS key**, puede especificar su AWS KMS key mediante una de las siguientes opciones.
         + Para elegir de entre una lista de claves de KMS disponibles, marque **Elija entre sus claves de AWS KMS keys** y seleccione una clave de KMS de cifrado simétrica de la misma región que el bucket. En esta lista aparecen tanto la clave administrada de AWS (`aws/s3`) como las claves administradas por el cliente.
         + Para introducir el ARN de la clave de KMS, elija **Introducir el ARN de la clave de AWS KMS** e introduzca el ARN de la clave de KMS en el campo que aparece.
         + Para crear una nueva clave administrada por el cliente en la consola de AWS KMS, elija **Crear una clave de KMS**.

      1. En **Bucket Key** (Clave de bucket), seleccione **Enable** (Habilitar). La operación de copia aplica una clave de bucket de S3 al bucket de destino.

1. Proporcione a su trabajo una descripción (o mantenga el valor predeterminado), establezca su nivel de prioridad, elija un tipo de informe y especifique la **ruta al destino del informe de finalización**.

1. En la sección **Permissions (Permisos)**, asegúrese de elegir el rol de IAM de la herramienta de operaciones por lotes que definió antes. Elija **Next (Siguiente)**.

1. En **Review (Revisar)**, compruebe la configuración. Si desea realizar cambios, seleccione **Previous (Anterior)**. Después de confirmar la configuración de la herramienta de operaciones por lotes, elija **Create job (Crear trabajo)**. 

   Para obtener más información, consulte [Creación de trabajos de operaciones por lotes de S3](batch-ops-create-job.md).

### Ejecución del trabajo de la herramienta de operaciones por lotes
<a name="bucket-key-ex-run-job"></a>

El asistente de configuración lo redirecciona automáticamente a la sección Operaciones por lotes de S3 de la consola de Amazon S3. El trabajo nuevo pasa del estado **New (Nuevo)** al estado **Preparing (En preparación)** cuando S3 comienza el proceso. Cuando el estado es “Preparing” (En preparación), S3 lee el manifiesto del trabajo, comprueba si hay errores y calcula el número de objetos.

1. Elija el botón de actualización en la consola de Amazon S3 para comprobar el progreso. Dependiendo del tamaño del manifiesto, la lectura puede tardar minutos u horas.

1. Después de que S3 termina de leer el manifiesto del trabajo, este pasa al estado **Awaiting your confirmation (A la espera de confirmación)**. Elija el botón de opción a la izquierda del ID de trabajo y elija **Run job (Ejecutar trabajo)**.

1. Verifique la configuración del trabajo y elija **Run job (Ejecutar trabajo)** en la esquina inferior derecha.

   Una vez que el trabajo comience a ejecutarse, puede seleccionar el botón de actualización para verificar el progreso a través de la vista del panel de consola o mediante la selección de un trabajo específico.

1. Una vez completado el trabajo, podrá ver el recuento de objetos **Successful (Correctos)** y **Failed (Con errores)** para confirmar que todo se realizó como se esperaba. Si ha habilitado los informes de trabajos, verifique en estos la causa exacta de las operaciones con errores.

   También puede llevar a cabo estos pasos mediante la AWS CLI, los SDK de AWS o la API de REST de Amazon S3. Para obtener más información acerca del seguimiento del estado del trabajo y los informes de finalización, consulte [Seguimiento del estado del trabajo e informes de finalización](batch-ops-job-status.md).

Para obtener ejemplos en los que se muestra la operación de copia con etiquetas mediante la AWS CLI y AWS SDK para Java, consulte [Creación de un trabajo de Operaciones por lotes con etiquetas de trabajo como etiquetado](batch-ops-tags-create.md).

# Calcular las sumas de comprobación
<a name="batch-ops-compute-checksums"></a>

Puede usar las operaciones por lotes de S3 con la operación **Calcular la suma de comprobación** para realizar cálculos de suma de comprobación para objetos almacenados en Amazon S3 en reposo. La operación **Calcular la suma de comprobación** calcula las sumas de comprobación de los objetos que puede utilizar para validar la integridad de los datos sin necesidad de descargar ni restaurar objetos para los datos almacenados. Puede utilizar la operación **Calcular la suma de comprobación** para calcular las sumas de comprobación de los tipos de suma de comprobación de objetos compuestos y completos, para todos los algoritmos de suma de comprobación compatibles.

Con la operación **Calcular la suma de comprobación**, puede procesar miles de millones de objetos con una sola solicitud de trabajo. Esta operación por lotes es compatible con todas las clases de almacenamiento de S3, independientemente del tamaño del objeto. Para crear un trabajo **Calcular la suma de comprobación**, utilice la consola de Amazon S3, la AWS Command Line Interface (AWS CLI), los AWS SDK o la API de REST de Amazon S3.

Al [habilitar el registro de acceso al servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html), también puede recibir entradas de registro sobre el trabajo **Calcular la suma de comprobación**. La operación del trabajo **Calcular la suma de comprobación** emite eventos de registro de acceso al servidor independientes después de completar los cálculos de la suma de comprobación. Estas entradas de registro siguen el [formato de registro de acceso al servidor S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html) estándar e incluyen campos como el tipo de operación, la marca temporal, los [códigos de error](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList) y el ID del trabajo **Calcular la suma de comprobación** asociado. Este registro proporciona un registro de auditoría de las actividades de verificación de la suma de comprobación realizadas en los objetos, lo que le ayuda a rastrear y verificar las operaciones de integridad de los datos. 

**nota**  
La operación **Calcular la suma de comprobación** no admite el cifrado del servidor con objetos cifrados con claves de cifrado proporcionadas por el cliente (SSE-C). Sin embargo, puede utilizar la operación **Calcular la suma de comprobación** con objetos cifrados mediante el [cifrado del servidor con claves administradas por S3 (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) y el cifrado del servidor con AWS Key Management Service (DSSE-KMS). Asegúrese de haber [otorgado los permisos de AWS KMS adecuados](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#require-sse-kms) para realizar la operación **Calcular la suma de comprobación**.

Para empezar con la operación **Calcular la suma de comprobación** mediante operaciones por lotes, puede hacer lo siguiente:
+ Cree un nuevo archivo de manifiesto manualmente.
+ Usar un manifiesto existente.
+ Dirija 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-create-job.html#specify-batchjob-manifest).

A continuación, envíe la solicitud del trabajo **Calcular la suma de comprobación** y supervise su estado. Cuando finalice el trabajo **Calcular la suma de comprobación**, recibirá automáticamente un informe de finalización en el bucket de destino especificado. Este informe de finalización contiene información sobre la suma de comprobación de cada objeto en el bucket, lo que le permite comprobar la coherencia de datos. Para obtener más información acerca de cómo usar este informe para examinar el trabajo, consulte [Seguimiento del estado del trabajo e informes de finalización](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-job-status.html).

Para obtener más información sobre las capacidades de **Calcular la suma de comprobación** y cómo utilizar **Calcular la suma de comprobación** en la consola, consulte [Comprobación de la integridad de objetos para datos en reposo en Amazon S3](checking-object-integrity-at-rest.md). Para obtener información sobre cómo enviar solicitudes REST a **Calcular la suma de comprobación**, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeJob.html) y [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html) en la *Referencia de la API de Amazon S3*.

En las secciones siguientes, se explica cómo puede comenzar a usar la operación **Calcular la suma de comprobación** con operaciones por lotes de S3.

**Topics**
+ [Consideraciones sobre **Calcular la suma de comprobación** de operaciones por lotes de S3](#batch-ops-compute-checksum-considerations)
+ [Informe de finalización de operaciones por lotes de S3](#batch-ops-compute-checksum-completion-report)

## Consideraciones sobre **Calcular la suma de comprobación** de operaciones por lotes de S3
<a name="batch-ops-compute-checksum-considerations"></a>

Antes de utilizar la operación **Calcular la suma de comprobación**, consulte la siguiente lista de consideraciones:
+ Si el manifiesto incluye un campo de ID de versión, debe proporcionar un ID de versión para todos los objetos del manifiesto. Si no se especifica el ID de versión, la solicitud de **Calcular la suma de comprobación** realiza la operación en la versión más reciente del objeto.
+ Para recibir los detalles de la operación **Calcular la suma de comprobación** en los [registros de acceso al servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html), primero debe [habilitar el registro de acceso al servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html) en el bucket de origen y especificar un bucket de destino para almacenar los registros. El bucket de destino debe estar también en la misma Región de AWS y Cuenta de AWS que el bucket de origen. Tras configurar el registro de acceso al servidor, la operación **Calcular la suma de comprobación** genera [registros](https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html#log-record-fields) que incluyen campos estándar, como el tipo de operación, el código de estado HTTP, los [códigos de error de S3](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList), las marcas de tiempo y el ID de trabajo de **Calcular la suma de comprobación** asociado. La operación **Calcular la suma de comprobación** se ejecuta de forma asíncrona. Como resultado, las [entradas de registro](https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html#log-record-fields) utilizan un ID de trabajo de **Calcular la suma de comprobación**, en lugar de un ID de solicitud, en sus entradas de registro.
+ La generación de informes puede tardar varias horas en el caso de objetos almacenados.
+ Para las siguientes clases de almacenamiento de S3 Glacier, el trabajo **Calcular la suma de comprobación** puede tardar hasta una semana en completarse:
  + S3 Glacier Flexible Retrieval
  + S3 Glacier Deep Archive
+ Para los buckets en los que se redactará el informe de finalización, debe utilizar la [condición de propietario del bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-owner-condition.html#bucket-owner-condition-when-to-use) al ejecutar la operación **Calcular la suma de comprobación**. Si el propietario real del bucket no coincide con el propietario del bucket esperado para la solicitud de trabajo enviada, se produce un error en el trabajo. Para obtener una lista de las operaciones de S3 que no admiten la condición de propietario del bucket, consulte [Restricciones y limitaciones](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-owner-condition.html#bucket-owner-condition-restrictions-limitations).

## Informe de finalización de operaciones por lotes de S3
<a name="batch-ops-compute-checksum-completion-report"></a>

Al crear un trabajo **Calcular la suma de comprobación**, puede solicitar un informe de finalización de operaciones por lotes de S3. Este archivo CSV muestra los objetos, los códigos de éxito o error, las salidas y las descripciones. Para obtener más información sobre el seguimiento del trabajo y los informes de finalización, consulte [Informes de finalización](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-job-status.html#batch-ops-completion-report).

# Eliminar todas las etiquetas de objeto
<a name="batch-ops-delete-object-tagging"></a>

Puede utilizar Operaciones por lotes de Amazon S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. La operación **Delete all object tags (Eliminar todas las etiquetas de objeto)** elimina todos los conjuntos de etiquetas de objeto de Amazon S3 asociados actualmente a los objetos enumerados en el manifiesto. Operaciones por lotes de S3 no admite la eliminación de etiquetas de objetos mientras mantiene otras etiquetas en su lugar. 

Si los objetos del manifiesto están en un bucket versionado, puede eliminar los conjuntos de etiquetas de una versión específica de un objeto. Para hacerlo, debe especificar un ID de versión para cada objeto del manifiesto. Si no incluye un ID de versión para un objeto, la herramienta de operaciones por lotes de S3 elimina el conjunto de etiquetas de la última versión de cada objeto. Para obtener más información sobre los manifiestos de Operaciones por lotes, consulte [Especificar un manifiesto](batch-ops-create-job.md#specify-batchjob-manifest). 

Para obtener más detalles sobre el etiquetado de objetos, consulte [Categorización de los objetos mediante etiquetas](object-tagging.md) en esta guía y [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html) y [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) en la *Amazon Simple Storage Service API Reference*.

**aviso**  
Al ejecutar este trabajo, se eliminan todos los conjuntos de etiquetas de objeto en todos los objetos enumerados en el manifiesto. 

Para usar la consola para crear un trabajo **Eliminar todas las etiquetas de objetos**, consulte [Creación de trabajos de operaciones por lotes de S3](batch-ops-create-job.md).

## Restricciones y limitaciones
<a name="batch-ops-delete-object-tagging-restrictions"></a>

Al utilizar Operaciones por lotes para eliminar etiquetas de objetos, se aplican las siguientes restricciones y limitaciones:
+ El rol de AWS Identity and Access Management (IAM) que especifique para ejecutar el trabajo debe tener permisos para realizar la operación `DeleteObjectTagging` subyacente de Amazon S3. Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) en la *Referencia de la API de Amazon Simple Storage Service*.
+ Operaciones por lotes de S3 utiliza la operación [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) de Amazon S3 para eliminar los conjuntos de etiquetas de todos los objetos del manifiesto. Todas las restricciones y limitaciones que se aplican a la operación subyacente también se aplican a los trabajos de operaciones por lotes de S3. 
+ Un solo trabajo de eliminación de etiquetado de objetos puede admitir un manifiesto con hasta 20 000 millones de objetos.

# Invocar a la función AWS Lambda
<a name="batch-ops-invoke-lambda"></a>

Puede utilizar Operaciones por lotes de Amazon S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. Las operación **Invocar función de AWS Lambda** de Operaciones por lotes inicia las funciones de AWS Lambda para que realicen acciones personalizadas en objetos que aparecen en un manifiesto. En esta sección, se describe cómo crear una función Lambda para usarla con Operaciones por lotes de S3 y cómo crear un trabajo para invocar la función. El trabajo de Operaciones por lotes de S3 utiliza la operación `LambdaInvoke` para ejecutar una función Lambda en cada objeto que aparece en un manifiesto.

Puede trabajar con Operaciones por lotes de S3 mediante la consola de Amazon S3, la AWS Command Line Interface (AWS CLI), los AWS SDK o la API de REST de Amazon S3. Para obtener más información acerca del uso de Lambda, consulte [Introducción a AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) en la *Guía para desarrolladores de AWS Lambda*. 

En las siguientes secciones, se explica cómo puede comenzar a usar Operaciones por lotes de S3 con Lambda.

**Topics**
+ [Uso de Lambda con Operaciones por lotes](#batch-ops-invoke-lambda-using)
+ [Creación de una función Lambda para utilizarla con Operaciones por lotes de S3](#batch-ops-invoke-lambda-custom-functions)
+ [Creación de un trabajo de Operaciones por lotes de S3 que invoca a una función Lambda](#batch-ops-invoke-lambda-create-job)
+ [Proporcionar información de tareas en manifiestos de Lambda](#storing-task-level-information-in-lambda)
+ [Tutorial operaciones por lotes de S3](#batch-ops-tutorials-lambda)

## Uso de Lambda con Operaciones por lotes
<a name="batch-ops-invoke-lambda-using"></a>

Cuando utilice la herramienta de operaciones por lotes de S3 con AWS Lambda, debe crear nuevas funciones de Lambda específicamente para utilizarlas con la herramienta de operaciones por lotes de S3. No puede reutilizar funciones basadas en eventos de Amazon S3 existentes con Operaciones por lotes de S3. Las funciones de eventos solo pueden recibir mensajes; no devuelven mensajes. Las funciones Lambda que se utilizan con Operaciones por lotes de S3 deben aceptar y devolver mensajes. Para obtener más información acerca del uso de Lambda con los eventos de Amazon S3, consulte [Uso de AWS Lambda con Amazon S3](https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html) en la *Guía para desarrolladores de AWS Lambda*.

Debe crear un trabajo de Operaciones por lotes de S3 que invoque a su función Lambda. El trabajo ejecuta la misma función Lambda en todos los objetos que aparecen en el manifiesto. Puede controlar qué versiones de su función Lambda se deben usar mientras procesa los objetos de su manifiesto. Operaciones por lotes de S3 admite nombres de recursos de Amazon (ARN) no calificados, alias y versiones específicas. Para obtener más información, consulte [Introducción al control de versiones de AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/versioning-intro.html) en la *Guía para desarrolladores de AWS Lambda*.

Si proporciona el trabajo de Operaciones por lotes de S3 con un ARN de función que utiliza un alias o el calificador `$LATEST`, y actualiza la versión a la que apunta cualquiera de ellos, Operaciones por lotes de S3 comenzará a llamar a la nueva versión de su función Lambda. Esto puede resultar útil cuando se desea actualizar la funcionalidad en medio de un trabajo grande. Si no quiere que Operaciones por lotes de S3 cambie la versión que se utiliza, facilite la versión específica en el parámetro `FunctionARN` al crear el trabajo.

Un solo trabajo de copia de AWS Lambda con Operaciones por lotes de S3 puede admitir un manifiesto con hasta 20 000 millones de objetos.

### Uso de Lambda y Operaciones por lotes con buckets de directorio
<a name="batch-ops-invoke-lambda-directory-buckets"></a>

Los buckets de directorio son un tipo de bucket de Amazon S3 que está diseñado para cargas de trabajo o aplicaciones de rendimiento crítico que requieren una latencia constante de milisegundos de un solo dígito. Para obtener más información, consulte [Buckets de directorio](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html).

Existen requisitos especiales para utilizar las operaciones por lotes para invocar funciones de Lambda que actúan en los buckets de directorio. Por ejemplo, debe estructurar la solicitud de Lambda mediante un esquema JSON actualizado y especificar [https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_LambdaInvokeOperation.html#AmazonS3-Type-control_LambdaInvokeOperation-InvocationSchemaVersion](https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_LambdaInvokeOperation.html#AmazonS3-Type-control_LambdaInvokeOperation-InvocationSchemaVersion) 2.0 (no 1.0) cuando se crea el trabajo. Este esquema actualizado le permite especificar pares clave-valor opcionales para [https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_LambdaInvokeOperation.html#AmazonS3-Type-control_LambdaInvokeOperation-UserArguments](https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_LambdaInvokeOperation.html#AmazonS3-Type-control_LambdaInvokeOperation-UserArguments), lo que puede usar para modificar determinados parámetros de las funciones de Lambda existentes. Para obtener más información, consulte [Automate object processing in Amazon S3 directory buckets with S3 Batch Operations and AWS Lambda](https://aws.amazon.com/blogs/storage/automate-object-processing-in-amazon-s3-directory-buckets-with-s3-batch-operations-and-aws-lambda/) en AWS Storage Blog.

### Códigos de respuesta y de resultados
<a name="batch-ops-invoke-lambda-response-codes"></a>

Operaciones por lotes de S3 invoca la función de Lambda con una o más claves, cada una de las cuales tiene un `TaskID` asociado. Operaciones por lotes de S3 espera un código de resultados por clave de las funciones de Lambda. Cualquier ID de tarea enviado en la solicitud que no se devuelva con un código de resultado por clave recibirá el código de resultado del campo `treatMissingKeysAs`. `treatMissingKeysAs` es un campo de solicitud opcional y su valor predeterminado es `TemporaryFailure`. La siguiente tabla contiene los demás códigos de resultado y valores posibles para el campo `treatMissingKeysAs`. 


| Código de respuesta | Descripción | 
| --- | --- | 
| Succeeded | La tarea se completó normalmente. Si solicitó un informe de finalización de trabajos, la cadena de resultados de la tarea se incluye en el informe. | 
| TemporaryFailure | Se detectó un error temporal en la tarea y esta se redirigirá antes de que se complete el trabajo. La cadena de resultados se pasa por alto. Si este es el último redireccionamiento, el mensaje de error se incluye en el informe final. | 
| PermanentFailure | Se detectó un error permanente en la tarea. Si solicitó un informe de finalización de trabajos, la tarea se marca como Failed e incluye la cadena del mensaje de error. Las cadenas de resultados de tareas con error se pasan por alto. | 

## Creación de una función Lambda para utilizarla con Operaciones por lotes de S3
<a name="batch-ops-invoke-lambda-custom-functions"></a>

En esta sección, se proporcionan ejemplos de permisos de AWS Identity and Access Management (IAM) que debe utilizar con su función de Lambda. También contiene una función Lambda de ejemplo que se puede utilizar con Operaciones por lotes de S3. Si nunca ha creado una función de Lambda, consulte el [Tutorial: uso de AWS Lambda con Amazon S3](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) en la *Guía para desarrolladores de AWS Lambda*.

Debe crear funciones Lambda para utilizarlas específicamente con Operaciones por lotes de S3. No puede reutilizar funciones de Lambda basadas en eventos de Amazon S3 existentes porque las funciones de Lambda que se utilizan para Operaciones por lotes de S3 deben aceptar y devolver campos de datos especiales. 

**importante**  
Las funciones de AWS Lambda escritas en Java aceptan interfaces de controlador [https://github.com/aws/aws-lambda-java-libs/blob/master/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/RequestHandler.java](https://github.com/aws/aws-lambda-java-libs/blob/master/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/RequestHandler.java) o [https://github.com/aws/aws-lambda-java-libs/blob/master/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/RequestStreamHandler.java](https://github.com/aws/aws-lambda-java-libs/blob/master/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/RequestStreamHandler.java). Sin embargo, con el fin de admitir el formato de solicitud y respuesta de la herramienta de operaciones por lotes de S3, AWS Lambda necesita la interfaz `RequestStreamHandler` para la serialización y la deserialización personalizadas de una solicitud y su respuesta. Esta interfaz permite a Lambda pasar un InputStream y OutputStream al método `handleRequest` de Java.   
Asegúrese de usar la interfaz `RequestStreamHandler` cuando utilice funciones Lambda con Operaciones por lotes de S3. Si utiliza una interfaz `RequestHandler`, el trabajo por lotes producirá un error y, en el informe de finalización, aparecerá un mensaje que indica que se ha devuelto un JSON no válido en la carga útil de Lambda.   
Para obtener más información, consulte [Interfaces de controlador](https://docs.aws.amazon.com//lambda/latest/dg/java-handler.html#java-handler-interfaces) en la *Guía del usuario de AWS Lambda*.

### Permisos de IAM de ejemplo
<a name="batch-ops-invoke-lambda-custom-functions-iam"></a>

A continuación, se muestran ejemplos de los permisos de IAM necesarios para utilizar una función Lambda con Operaciones por lotes de S3. 

**Example - Política de confianza de Operaciones por lotes de S3**  
Este es un ejemplo de la política de confianza que puede usar para el rol de IAM de Operaciones por lotes. Este rol de IAM se especifica al crear el trabajo y ofrece a Operaciones por lotes permiso para asumirlo.    
****  

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

**Example - Política de IAM de Lambda**  
A continuación, se muestra un ejemplo de una política de IAM que da permiso a Operaciones por lotes de S3 para invocar a la función Lambda y leer el manifiesto de entrada.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "BatchOperationsLambdaPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "lambda:InvokeFunction"
            ],
            "Resource": "*"
        }
    ]
}
```

### Solicitud y respuesta de ejemplo
<a name="batch-ops-invoke-lambda-custom-functions-request"></a>

Esta sección contiene ejemplos de solicitudes y respuestas para la función Lambda.

**Example Solicitud**  
A continuación, se muestra un ejemplo de JSON de una solicitud para la función Lambda.  

```
{
    "invocationSchemaVersion": "1.0",
    "invocationId": "YXNkbGZqYWRmaiBhc2RmdW9hZHNmZGpmaGFzbGtkaGZza2RmaAo",
    "job": {
        "id": "f3cc4f60-61f6-4a2b-8a21-d07600c373ce"
    },
    "tasks": [
        {
            "taskId": "dGFza2lkZ29lc2hlcmUK",
            "s3Key": "customerImage1.jpg",
            "s3VersionId": "1",
            "s3BucketArn": "arn:aws:s3:us-east-1:0123456788:amzn-s3-demo-bucket1"
        }
    ]
}
```

**Example Respuesta**  
A continuación, se muestra un ejemplo de JSON de una respuesta para la función Lambda.  

```
{
  "invocationSchemaVersion": "1.0",
  "treatMissingKeysAs" : "PermanentFailure",
  "invocationId" : "YXNkbGZqYWRmaiBhc2RmdW9hZHNmZGpmaGFzbGtkaGZza2RmaAo",
  "results": [
    {
      "taskId": "dGFza2lkZ29lc2hlcmUK",
      "resultCode": "Succeeded",
      "resultString": "[\"Mary Major", \"John Stiles\"]"
    }
  ]
}
```

### Ejemplo de una función Lambda para Operaciones por lotes de S3
<a name="batch-ops-invoke-lambda-custom-functions-example"></a>

El siguiente ejemplo Python Lambda elimina un marcador de eliminación de un objeto versionado.

Como se muestra en el ejemplo, las claves de Operaciones por lotes de S3 están codificadas por URL. Para utilizar Amazon S3 con otros servicios de AWS, es importante que decodifique mediante la URL la clave que se pasa desde la herramienta de operaciones por lotes de S3.

```
import logging
from urllib import parse
import boto3
from botocore.exceptions import ClientError

logger = logging.getLogger(__name__)
logger.setLevel("INFO")

s3 = boto3.client("s3")


def lambda_handler(event, context):
    """
    Removes a delete marker from the specified versioned object.

    :param event: The S3 batch event that contains the ID of the delete marker
                  to remove.
    :param context: Context about the event.
    :return: A result structure that Amazon S3 uses to interpret the result of the
             operation. When the result code is TemporaryFailure, S3 retries the
             operation.
    """
    # Parse job parameters from Amazon S3 batch operations
    invocation_id = event["invocationId"]
    invocation_schema_version = event["invocationSchemaVersion"]

    results = []
    result_code = None
    result_string = None

    task = event["tasks"][0]
    task_id = task["taskId"]

    try:
        obj_key = parse.unquote_plus(task["s3Key"], encoding="utf-8")
        obj_version_id = task["s3VersionId"]
        bucket_name = task["s3BucketArn"].split(":")[-1]

        logger.info(
            "Got task: remove delete marker %s from object %s.", obj_version_id, obj_key
        )

        try:
            # If this call does not raise an error, the object version is not a delete
            # marker and should not be deleted.
            response = s3.head_object(
                Bucket=bucket_name, Key=obj_key, VersionId=obj_version_id
            )
            result_code = "PermanentFailure"
            result_string = (
                f"Object {obj_key}, ID {obj_version_id} is not " f"a delete marker."
            )

            logger.debug(response)
            logger.warning(result_string)
        except ClientError as error:
            delete_marker = error.response["ResponseMetadata"]["HTTPHeaders"].get(
                "x-amz-delete-marker", "false"
            )
            if delete_marker == "true":
                logger.info(
                    "Object %s, version %s is a delete marker.", obj_key, obj_version_id
                )
                try:
                    s3.delete_object(
                        Bucket=bucket_name, Key=obj_key, VersionId=obj_version_id
                    )
                    result_code = "Succeeded"
                    result_string = (
                        f"Successfully removed delete marker "
                        f"{obj_version_id} from object {obj_key}."
                    )
                    logger.info(result_string)
                except ClientError as error:
                    # Mark request timeout as a temporary failure so it will be retried.
                    if error.response["Error"]["Code"] == "RequestTimeout":
                        result_code = "TemporaryFailure"
                        result_string = (
                            f"Attempt to remove delete marker from  "
                            f"object {obj_key} timed out."
                        )
                        logger.info(result_string)
                    else:
                        raise
            else:
                raise ValueError(
                    f"The x-amz-delete-marker header is either not "
                    f"present or is not 'true'."
                )
    except Exception as error:
        # Mark all other exceptions as permanent failures.
        result_code = "PermanentFailure"
        result_string = str(error)
        logger.exception(error)
    finally:
        results.append(
            {
                "taskId": task_id,
                "resultCode": result_code,
                "resultString": result_string,
            }
        )
    return {
        "invocationSchemaVersion": invocation_schema_version,
        "treatMissingKeysAs": "PermanentFailure",
        "invocationId": invocation_id,
        "results": results,
    }
```

## Creación de un trabajo de Operaciones por lotes de S3 que invoca a una función Lambda
<a name="batch-ops-invoke-lambda-create-job"></a>

Al crear un trabajo de Operaciones por lotes de S3 para invocar a una función Lambda, debe proporcionar lo siguiente:
+ El ARN de la función Lambda (que puede incluir el alias de la función o un número de versión específico)
+ Un rol de IAM con permiso para invocar la función
+ El parámetro de acción `LambdaInvokeFunction`

Para obtener más información acerca de cómo crear un trabajo de Operaciones por lotes de S3, consulte [Creación de trabajos de operaciones por lotes de S3](batch-ops-create-job.md) y [Operaciones compatibles con las operaciones por lotes de S3](batch-ops-operations.md).

En el siguiente ejemplo, se crea un trabajo de Operaciones por lotes de S3 que invoca una función de Lambda mediante la AWS CLI. Para utilizar este ejemplo, sustituya *`user input placeholders`* por su propia información.

```
aws s3control create-job
    --account-id account-id
    --operation  '{"LambdaInvoke": { "FunctionArn": "arn:aws:lambda:region:account-id:function:LambdaFunctionName" } }'
    --manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":["Bucket","Key"]},"Location":{"ObjectArn":"arn:aws:s3:::amzn-s3-demo-manifest-bucket","ETag":"ManifestETag"}}'
    --report '{"Bucket":"arn:aws:s3:::amzn-s3-demo-bucket","Format":"Report_CSV_20180820","Enabled":true,"Prefix":"ReportPrefix","ReportScope":"AllTasks"}'
    --priority 2
    --role-arn arn:aws:iam::account-id:role/BatchOperationsRole
    --region region
    --description "Lambda Function"
```

## Proporcionar información de tareas en manifiestos de Lambda
<a name="storing-task-level-information-in-lambda"></a>

Cuando utiliza funciones de AWS Lambda con Operaciones por lotes de S3, es posible que desee que se adjunten datos adicionales a cada tarea o clave en la que se opera. Por ejemplo, es posible que desee tener una clave de objeto de origen y una nueva clave de objeto. Su función Lambda podría copiar la clave de origen en un nuevo bucket de S3 con un nuevo nombre. De forma predeterminada, Operaciones por lotes le permite especificar solo el bucket de destino y una lista de claves de origen en el manifiesto de entrada para su trabajo. En los siguientes ejemplos, se describe cómo puede incluir datos adicionales en su manifiesto para ejecutar funciones de Lambda más complejas.

Para especificar parámetros por clave en el manifiesto de Operaciones por lotes de S3 para utilizarlos en el código de la función Lambda, use el siguiente formato JSON codificado mediante URL. El campo `key` se pasa a su función Lambda como si fuera una clave de objeto de Amazon S3. Pero la función de Lambda puede interpretar que contiene otros valores o claves múltiples, como se muestra en los siguientes ejemplos. 

**nota**  
El número máximo de caracteres para el campo `key` del manifiesto es 1024.

**Example - Manifiesto que sustituye las “claves de Amazon S3” por cadenas JSON**  
La versión codificada mediante URL debe facilitarse a Operaciones por lotes de S3.  

```
amzn-s3-demo-bucket,{"origKey": "object1key", "newKey": "newObject1Key"}
amzn-s3-demo-bucket,{"origKey": "object2key", "newKey": "newObject2Key"}
amzn-s3-demo-bucket,{"origKey": "object3key", "newKey": "newObject3Key"}
```

**Example - Manifiesto codificado mediante URL**  
Esta versión codificada mediante URL debe facilitarse a Operaciones por lotes de S3. La versión no codificada en URL no funciona.  

```
amzn-s3-demo-bucket,%7B%22origKey%22%3A%20%22object1key%22%2C%20%22newKey%22%3A%20%22newObject1Key%22%7D
amzn-s3-demo-bucket,%7B%22origKey%22%3A%20%22object2key%22%2C%20%22newKey%22%3A%20%22newObject2Key%22%7D
amzn-s3-demo-bucket,%7B%22origKey%22%3A%20%22object3key%22%2C%20%22newKey%22%3A%20%22newObject3Key%22%7D
```

**Example - Función Lambda con formato de manifiesto que escribe resultados en el informe del trabajo**  
Este ejemplo de manifiesto codificado en URL contiene claves de objeto delimitadas por barra vertical para que las analice la siguiente función de Lambda.  

```
amzn-s3-demo-bucket,object1key%7Clower
amzn-s3-demo-bucket,object2key%7Cupper
amzn-s3-demo-bucket,object3key%7Creverse
amzn-s3-demo-bucket,object4key%7Cdelete
```
Esta función de Lambda muestra cómo analizar una tarea delimitada por barra vertical que está codificada en el manifiesto de Operaciones por lotes de S3. La tarea indica qué operación de revisión se aplica al objeto especificado.  

```
import logging
from urllib import parse
import boto3
from botocore.exceptions import ClientError

logger = logging.getLogger(__name__)
logger.setLevel("INFO")

s3 = boto3.resource("s3")


def lambda_handler(event, context):
    """
    Applies the specified revision to the specified object.

    :param event: The Amazon S3 batch event that contains the ID of the object to
                  revise and the revision type to apply.
    :param context: Context about the event.
    :return: A result structure that Amazon S3 uses to interpret the result of the
             operation.
    """
    # Parse job parameters from Amazon S3 batch operations
    invocation_id = event["invocationId"]
    invocation_schema_version = event["invocationSchemaVersion"]

    results = []
    result_code = None
    result_string = None

    task = event["tasks"][0]
    task_id = task["taskId"]
    # The revision type is packed with the object key as a pipe-delimited string.
    obj_key, revision = parse.unquote_plus(task["s3Key"], encoding="utf-8").split("|")
    bucket_name = task["s3BucketArn"].split(":")[-1]

    logger.info("Got task: apply revision %s to %s.", revision, obj_key)

    try:
        stanza_obj = s3.Bucket(bucket_name).Object(obj_key)
        stanza = stanza_obj.get()["Body"].read().decode("utf-8")
        if revision == "lower":
            stanza = stanza.lower()
        elif revision == "upper":
            stanza = stanza.upper()
        elif revision == "reverse":
            stanza = stanza[::-1]
        elif revision == "delete":
            pass
        else:
            raise TypeError(f"Can't handle revision type '{revision}'.")

        if revision == "delete":
            stanza_obj.delete()
            result_string = f"Deleted stanza {stanza_obj.key}."
        else:
            stanza_obj.put(Body=bytes(stanza, "utf-8"))
            result_string = (
                f"Applied revision type '{revision}' to " f"stanza {stanza_obj.key}."
            )

        logger.info(result_string)
        result_code = "Succeeded"
    except ClientError as error:
        if error.response["Error"]["Code"] == "NoSuchKey":
            result_code = "Succeeded"
            result_string = (
                f"Stanza {obj_key} not found, assuming it was deleted "
                f"in an earlier revision."
            )
            logger.info(result_string)
        else:
            result_code = "PermanentFailure"
            result_string = (
                f"Got exception when applying revision type '{revision}' "
                f"to {obj_key}: {error}."
            )
            logger.exception(result_string)
    finally:
        results.append(
            {
                "taskId": task_id,
                "resultCode": result_code,
                "resultString": result_string,
            }
        )
    return {
        "invocationSchemaVersion": invocation_schema_version,
        "treatMissingKeysAs": "PermanentFailure",
        "invocationId": invocation_id,
        "results": results,
    }
```

## Tutorial operaciones por lotes de S3
<a name="batch-ops-tutorials-lambda"></a>

En el siguiente tutorial se presentan procedimientos integrales completos para algunas tareas de operaciones por lotes con Lambda. En este tutorial, aprenderá a configurar Operaciones por lotes para invocar una función de Lambda para la transcodificación por lotes de vídeos almacenados en un bucket de origen de S3. La función de Lambda llama a AWS Elemental MediaConvert para transcodificar los vídeos. 
+ [Tutorial: vídeos de transcodificación por lotes con Operaciones por lotes de S3](tutorial-s3-batchops-lambda-mediaconvert-video.md)

# Reemplazar todas las etiquetas de objeto
<a name="batch-ops-put-object-tagging"></a>

Puede utilizar Operaciones por lotes de Amazon S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. La operación **Sustituir todas las etiquetas de objetos** sustituye las etiquetas de objeto en todos los objetos enumerados en el manifiesto. Las etiquetas de objetos de son pares de cadenas clave-valor que se pueden utilizar para guardar metadatos de un objeto.

Para crear un trabajo **Sustituir todas las etiquetas de objetos**, debe proporcionar un conjunto de etiquetas que desea aplicar. Operaciones por lotes de S3 aplica el mismo conjunto de etiquetas a cada objeto. El conjunto de etiquetas que proporcione reemplaza a los conjuntos de etiquetas que ya estén asociados con los objetos del manifiesto. Operaciones por lotes de S3 no permite agregar etiquetas a los objetos sin quitar las etiquetas existentes.

Si los objetos del manifiesto están en un bucket con control de versiones, puede aplicar un conjunto de etiquetas a versiones específicas de cada objeto. Para hacerlo, especifique un ID de versión para cada objeto del manifiesto. Si no incluye un ID de versión de un objeto, Operaciones por lotes de S3 aplicará el conjunto de etiquetas a la versión más reciente del objeto. Para obtener más información sobre los manifiestos de Operaciones por lotes, consulte [Especificar un manifiesto](batch-ops-create-job.md#specify-batchjob-manifest). 

Para obtener más información sobre el etiquetado de objetos, consulte [Categorización de los objetos mediante etiquetas](object-tagging.md) en esta guía y consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html) y [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) en la *Amazon Simple Storage Service API Reference*.

Para usar la consola para crear un trabajo **Sustituir todas las etiquetas de objetos**, consulte [Creación de trabajos de operaciones por lotes de S3](batch-ops-create-job.md).

## Restricciones y limitaciones
<a name="batch-ops-set-tagging-restrictions"></a>

Al utilizar Operaciones por lotes para sustituir etiquetas de objetos, se aplican las siguientes restricciones y limitaciones:
+ El rol de AWS Identity and Access Management (IAM) que especifique para ejecutar el trabajo de Operaciones por lotes debe tener permisos para realizar la operación subyacente de `PutObjectTagging`. Para obtener más información sobre los permisos necesarios, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html) en la *Amazon Simple Storage Service API Reference*.
+ Operaciones por lotes de S3 utiliza la operación [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html) de Amazon S3 para aplicar etiquetas a cada objeto del manifiesto. Todas las restricciones y limitaciones que se aplican a la operación subyacente también se aplican a los trabajos de operaciones por lotes de S3.
+ Un solo trabajo de reemplazo de todas las etiquetas de objeto puede admitir un manifiesto con hasta 20 000 millones de objetos.

# Sustitución de la lista de control de acceso (ACL)
<a name="batch-ops-put-object-acl"></a>

Puede utilizar Operaciones por lotes de Amazon S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. La operación **Sustituir la lista de control de acceso (ACL)** sustituye las listas de control de acceso (ACL) para cada objeto que se muestra en el manifiesto. Con las ACL, se puede definir quién puede tener acceso a un objeto y qué acciones puede realizar.

**nota**  
La mayoría de los casos de uso modernos de Amazon S3 ya no requieren el uso de ACL. Le recomendamos desactivar las ACL, excepto en circunstancias en las que necesite controlar el acceso a cada objeto de manera individual. Si las ACL están desactivadas, puede usar políticas para controlar el acceso a todos los objetos del bucket, independientemente de quién haya subido los objetos al bucket. Para obtener más información, consulte [Control de la propiedad de los objetos y desactivación de las ACL del bucket](about-object-ownership.md).

Operaciones por lotes de S3 permite utilizar ACL personalizadas que se definen y ACL predefinidas que están incluidas en Amazon S3 con un conjunto de permisos de acceso preestablecidos.

Si los objetos del manifiesto están en un bucket con control de versiones, puede aplicar las ACL a versiones específicas de cada objeto. Para hacerlo, especifique un ID de versión para cada objeto del manifiesto. Si no incluye el ID de versión de un objeto, Operaciones por lotes de S3 aplicará la ACL a la versión más reciente del objeto.

Para obtener más información acerca de las ACL en Amazon S3, consulte [Información general de las Listas de control de acceso (ACL)](acl-overview.md).

**S3 Block Public Access**  
Si desea limitar el acceso público en todos los objetos de un bucket, recomendamos utilizar Bloqueo de acceso público de Amazon S3 en lugar de Operaciones por lotes de S3 para aplicar ACL. Con el bloqueo de acceso público, se puede limitar el acceso público en cada bucket o en toda la cuenta mediante una única y sencilla operación que surte efecto rápidamente. Este comportamiento hace que Bloqueo de acceso público de Amazon S3 sea una mejor opción cuando el objetivo es controlar el acceso público a todos los objetos de un bucket o una cuenta. Utilice Operaciones por lotes de S3 solo cuando necesite aplicar una ACL personalizada a cada uno de los objetos del manifiesto. Para obtener más información acerca del bloqueo de acceso público de S3, consulte [Bloquear el acceso público a su almacenamiento de Amazon S3](access-control-block-public-access.md).

**S3 Object Ownership**  
Si los objetos del manifiesto se encuentran en un bucket que utiliza la configuración **Aplicada al propietario del bucket** de Propiedad de objetos, la operación **Sustituir la lista de control de acceso (ACL)** solo puede especificar las ACL de objetos que conceden control total al propietario del bucket. En este caso, la operación **Sustituir la lista de control de acceso (ACL)** no puede conceder permisos de ACL de objeto a otras Cuentas de AWS o grupos. Para obtener más información, consulte [Control de la propiedad de los objetos y desactivación de las ACL del bucket](about-object-ownership.md).

## Restricciones y limitaciones
<a name="batch-ops-put-object-acl-restrictions"></a>

Al utilizar Operaciones por lotes para sustituir ACL, se aplican las siguientes restricciones y limitaciones: 
+ El rol de AWS Identity and Access Management (IAM) que especifique para ejecutar el trabajo **Sustituir la lista de control de acceso (ACL)** debe tener permisos para realizar la operación `PutObjectAcl` subyacente de Amazon S3. Para obtener más información sobre los permisos necesarios, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html) en la *Amazon Simple Storage Service API Reference*.
+ Las operaciones por lotes de S3 utilizan la operación `PutObjectAcl` de Amazon S3 para aplicar la ACL especificada a cada objeto del manifiesto. Por lo tanto, todas las restricciones y limitaciones que se aplican a la operación `PutObjectAcl` subyacente también se aplican a los trabajos **Sustituir la lista de control de acceso (ACL)** de Operaciones por lotes de S3.
+ Un solo trabajo de reemplazo de lista de control de acceso puede admitir un manifiesto con hasta 20 000 millones de objetos.

# Restaurara objetos con Operaciones por lotes
<a name="batch-ops-initiate-restore-object"></a>

Puede utilizar Operaciones por lotes de Amazon S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. La operación **Restaurar** inicia solicitudes de restauración para los objetos de Amazon S3 archivados que se enumeran en el manifiesto. Los siguientes objetos archivados deben restaurarse para poder acceder a ellos en tiempo real:
+ Objetos archivados en las clases de almacenamiento S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive
+ Objetos archivados a través de la clase de almacenamiento S3 Intelligent-Tiering en los niveles de acceso a archivos o acceso profundo a archivos

El uso de una operación **Restaurar** ([https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html)) en el trabajo de Operaciones por lotes de S3 da como resultado una solicitud `RestoreObject` para cada objeto especificado en el manifiesto.

**importante**  
El trabajo **Restaurar** solo *inicia* la solicitud para restaurar objetos. Operaciones por lotes de S3 notifica que el trabajo está completado para cada objeto después de que se haya iniciado la solicitud para ese objeto. Amazon S3 no actualiza el trabajo ni le notifica cuando se han restaurado los objetos. No obstante, puede utilizar las notificaciones de eventos de S3 para recibir notificaciones cuando los objetos estén disponibles en Amazon S3. Para obtener más información, consulte [Notificaciones de eventos de Amazon S3](EventNotifications.md).

Al crear un trabajo **Restaurar**, están disponibles los siguientes argumentos:

**ExpirationInDays**  
Este argumento especifica cuánto tiempo el objeto S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive permanece disponible en Amazon S3. Los trabajos **Restaurar** que se dirigen a objetos de S3 Glacier Flexible Retrieval y S3 Glacier Deep Archive requieren que establezca `ExpirationInDays` en `1` o más.  
No establezca `ExpirationInDays` al crear trabajos de operaciones **Restaurar** que se dirijan a objetos de nivel acceso de archivos de S3 Intelligent-Tiering y acceso a archivo profundo. Los objetos de los niveles de acceso a archivos de S3 Intelligent-Tiering no están sujetos al vencimiento de la restauración, por lo que especificar `ExpirationInDays` da como resultado un error en la solicitud de `RestoreObject`.

**GlacierJobTier**  
Amazon S3 puede restaurar objetos mediante uno de tres niveles de recuperación: `EXPEDITED`, `STANDARD` y `BULK`. Sin embargo, la característica de operaciones por lotes de S3 solo admite los niveles de recuperación `STANDARD` y `BULK`. Para obtener más información sobre las diferencias entre los niveles de recuperación, consulte [Descripción de las opciones de recuperación de archivos](restoring-objects-retrieval-options.md).   
Para obtener más información sobre los precios de cada nivel, consulte la sección **Solicitudes y recuperaciones de datos** en la página [Precios de Amazon S3](https://aws.amazon.com/s3/pricing/).

## Diferencias al restaurar desde S3 Glacier y S3 Intelligent-Tiering
<a name="batch-ops-initiate-restore-diff"></a>

La restauración de archivos guardados desde las clases de almacenamiento S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive difiere de la restauración de archivos de la clase de almacenamiento de S3 Intelligent-Tiering en los niveles Archive Access o Deep Archive Access.
+ Cuando se restaura desde S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive, se crea una *copia* temporal del objeto. Amazon S3 elimina esta copia una vez transcurrido el valor especificado en el argumento `ExpirationInDays`. Después de eliminar esta copia temporal, debe enviar una solicitud de restauración adicional para tener acceso al objeto.
+ *No* especifique el argumento `ExpirationInDays` al restaurar objetos archivados de S3 Intelligent-Tiering. Cuando se restaura un objeto desde los niveles Acceso a archivos o Acceso a archivos profundo de S3 Intelligent-Tiering, el objeto vuelve al nivel Acceso frecuente de S3 Intelligent-Tiering. Tras un mínimo de 90 días consecutivos sin acceso, el objeto pasa automáticamente al nivel Acceso a archivos. Tras un mínimo de 180 días consecutivos sin acceso, el objeto pasa automáticamente al nivel de Acceso a archivos profundo. 
+ Los trabajos de Operaciones por lotes pueden operar en objetos de clase de almacenamiento de S3 Glacier Flexible Retrieval y S3 Glacier Deep Archive *o* en objetos de nivel de almacenamiento Acceso a archivos o Acceso a archivos profundo de S3 Intelligent-Tiering. Operaciones por lotes no pueden funcionar con ambos tipos de objetos archivados en el mismo trabajo. Para restaurar objetos de ambos tipos, *debe* crear trabajos de operaciones por lotes independientes. 

## Solapar restauraciones
<a name="batch-ops-initiate-restore-object-in-progress"></a>

Si el trabajo [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html) intenta restaurar un objeto que ya se está restaurando, Operaciones por lotes de S3 se comportará del modo indicado a continuación.

La operación de restauración se realizará correctamente en el objeto si se da alguna de las siguientes condiciones:
+ En comparación con la solicitud de restauración ya en curso, el valor `ExpirationInDays` de este trabajo es el mismo y su valor `GlacierJobTier` es más rápido.
+ La solicitud de restauración anterior ya se ha completado y el objeto está disponible en este momento. En este caso, Operaciones por lotes actualiza la fecha de caducidad del objeto restaurado para que coincida con el valor `ExpirationInDays` especificado en la solicitud de restauración en curso.

La operación de restauración del objeto no se realizará correctamente si se da alguna de las siguientes condiciones:
+ La solicitud de restauración ya está en curso pero aún no se ha completado y la duración de restauración de este trabajo (especificada mediante el valor de `ExpirationInDays`) es diferente de la duración de la restauración especificada en la solicitud de restauración en curso.
+ El nivel de restauración de este trabajo (especificado mediante el valor de `GlacierJobTier`) es igual o más lento que el que se especificó en la solicitud de restauración en curso.

## Limitaciones
<a name="batch-ops-initiate-restore-object-limitations"></a>

Los trabajos `S3InitiateRestoreObjectOperation` presentan las siguientes limitaciones:
+ Debe crear el trabajo en la misma región que los objetos archivados.
+ Operaciones por lotes de S3 no admite el nivel de recuperación `EXPEDITED`.
+ Un solo trabajo de restauración de operaciones por lotes puede admitir un manifiesto con hasta 4000 millones de objetos.

Para obtener más información acerca de la restauración de objetos, consulte [Restauración de un objeto archivado](restoring-objects.md).

# Actualización de cifrado de objetos
<a name="batch-ops-update-encryption"></a>

Puede utilizar Operaciones por lotes de Amazon S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. La operación [https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_UpdateObjectEncryptionOperation.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_UpdateObjectEncryptionOperation.html) de operaciones por lotes actualiza el tipo de cifrado del servidor de más de un objeto de Amazon S3 con una sola solicitud. Un solo trabajo de operación `UpdateObjectEncryption` puede admitir un manifiesto con hasta 20 000 millones de objetos.

La operación `UpdateObjectEncryption` es compatible con todas las clases de almacenamiento de Amazon S3 compatibles con los buckets de uso general. Puede usar la operación `UpdateObjectEncryption` para cambiar los objetos cifrados de [cifrado del servidor con claves administradas por Amazon S3 (SSE-S3)](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingServerSideEncryption.html) a [claves de AWS Key Management Service (AWS KMS) (SSE-KMS)](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingKMSEncryption.html) o aplicar las claves de bucket de S3. También puede usar la operación `UpdateObjectEncryption` para cambiar la clave de KMS administrada por el cliente que se usa para cifrar los datos, de modo que pueda cumplir con los estándares personalizados de rotación de claves.

 Cuando cree un trabajo de operaciones por lotes, puede generar una lista de objetos en función de la ubicación de origen y filtrar los criterios que especifique. Puede usar el filtro `MatchAnyObjectEncryption` para generar una lista de objetos del bucket que desee actualizar e incluir en el manifiesto. La lista de objetos generada incluye solo los objetos del bucket de origen con el tipo de cifrado del servidor indicado. Si selecciona SSE-KMS, también puede filtrar opcionalmente los resultados especificando el ARN de una clave de KMS específica y el estado habilitado de la clave del bucket. Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestGeneratorFilter.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestGeneratorFilter.html) y [`SSEKMSFilter` en la *Referencia de la API de Amazon S3*](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_SSEKMSFilter.html).

## Restricciones y consideraciones
<a name="batch-ops-encrypt-object-restrictions"></a>

Al utilizar la operación `UpdateObjectEncryption` de operaciones por lotes, se aplican las siguientes restricciones y consideraciones:
+ La operación `UpdateObjectEncryption` no admite objetos que no estén cifrados u objetos que estén cifrados con cifrado del servidor de doble capa con AWS KMS keys (DSSE-KMS) o claves de cifrado proporcionadas por el cliente (SSE-C). Además, no puede especificar la solicitud de `UpdateObjectEncryption` de tipo de cifrado de SSE-S3.
+ Puede usar la operación `UpdateObjectEncryption` para actualizar objetos en buckets que tienen habilitado el control de versiones de S3. Para actualizar el tipo de cifrado de una versión concreta, debe especificar un ID de versión en la solicitud de `UpdateObjectEncryption`. Si no especifica el ID de versión, la solicitud de `UpdateObjectEncryption` actúa en la versión actual del objeto. Para obtener más información sobre el control de versiones de S3, consulte [Retención de varias versiones de objetos con Control de versiones de S3](Versioning.md).
+ La operación `UpdateObjectEncryption` produce un error en cualquier objeto al que se le aplique un modo de retención de Bloqueo de objetos de S3 o una retención legal. Si un objeto tiene un periodo de retención en modo de gobernanza o una retención legal, primero debe eliminar el estado de Bloqueo de objetos del objeto antes de emitir la solicitud de `UpdateObjectEncryption`. No puede usar la operación `UpdateObjectEncryption` con objetos a los que se les haya aplicado un periodo de retención del modo de cumplimiento de Bloqueo de objetos. Para obtener más información acerca de S3 Object Lock, consulte [Bloqueo de objetos mediante Bloqueo de objetos](object-lock.md).
+ Las solicitudes de `UpdateObjectEncryption` en los buckets de origen con la replicación en directo habilitada no iniciarán los eventos de réplica en el bucket de destino. Si desea cambiar el tipo de cifrado de los objetos en los buckets de origen y destino, debe iniciar solicitudes de `UpdateObjectEncryption` independientes en los objetos de los buckets de origen y destino.
+ De forma predeterminada, todas las solicitudes de `UpdateObjectEncryption` que especifican una clave de KMS administrada por el cliente están restringidas a las claves de KMS que son propiedad de la Cuenta de AWS del propietario del bucket. Si utiliza AWS Organizations, puede solicitar la posibilidad de utilizar AWS KMS keys si son propiedad de otras cuentas de miembros de la organización contactando con AWS Support.
+ Si usa la replicación por lotes de S3 para replicar conjuntos de datos entre regiones y los objetos anteriormente actualizaron el tipo de cifrado del servidor de SSE-S3 a SSE-KMS, es posible que necesite permisos adicionales. En el bucket de la región de origen, debe tener permisos `kms:decrypt`. A continuación, necesitará los permisos `kms:decrypt` y `kms:encrypt` para el bucket en la región de destino.
+ Proporcione un ARN de clave de KMS completo en la solicitud de `UpdateObjectEncryption`. No puede usar un nombre de alias o ARN de alias. Puede determinar el ARN de clave de KMS completo en la consola de AWS KMS o mediante la API de AWS KMS `DescribeKey`.

Para obtener más información acerca de `UpdateObjectEncryption`, consulte [Actualización de cifrado del servidor para los datos existentes](update-sse-encryption.md).

## Permisos necesarios
<a name="batch-ops-required-permissions"></a>

Para realizar la operación `UpdateObjectEncryption`, agregue la siguiente política de AWS Identity and Access Management (IAM) a la entidad principal de IAM (usuario, rol o grupo). Para usar esta política, sustituya *`amzn-s3-demo-bucket`* por el nombre del bucket que contiene los objetos para los que desea actualizar el cifrado. Sustituya `amzn-s3-demo-manifest-bucket` por el nombre del bucket que contiene el manifiesto y sustituya `amzn-s3-demo-completion-report-bucket` por el nombre del bucket en el que desea almacenar el informe de finalización.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3BatchOperationsUpdateEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "s3:UpdateObjectEncryption"
            ],
            "Resource": [
                 "arn:aws:s3:::amzn-s3-demo-bucket-target"
                "arn:aws:s3:::amzn-s3-demo-bucket-target-target/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForManifestFile",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-manifest/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForCompletionReport",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-completion-report/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyManifestGeneration",
            "Effect": "Allow",
            "Action": [
                "s3:PutInventoryConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-target"
            ]
        },
        {
            "Sid": "AllowKMSOperationsForS3BatchOperations",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:Encrypt",
                "kms:ReEncrypt*"
            ],
            "Resource": [                "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
            ]
        }
    ]
}
```

Para ver la política de confianza y la política de permisos que debe adjuntar al rol de IAM que la entidad principal del servicio de operaciones por lotes de S3 asume para ejecutar los trabajos de operaciones por lotes en su nombre, consulte [Concesión de permisos para Operaciones por lotes](batch-ops-iam-role-policies.md) y [Actualización de cifrado de objetos](batch-ops-iam-role-policies.md#batch-ops-update-encryption-policies).

# Creación de un trabajo de operaciones por lotes para actualizar el cifrado de objetos
<a name="batch-ops-update"></a>

Para actualizar el tipo de cifrado del servidor de más de un objeto de Amazon S3 con una sola solicitud, puede usar operaciones por lotes de S3. Puede utilizar operaciones por lotes de S3 a través de la consola de Amazon S3, la AWS Command Line Interface (AWS CLI), los AWS SDK o la API de REST de Amazon S3.

## Uso de AWS CLI
<a name="batch-ops-example-cli-update-job"></a>

Para ejecutar los siguientes comandos, debe tener instalado y configurado la AWS CLI. Si aún no ha instalado la AWS CLI, consulte [Instalación o actualización de la última versión de la AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html) en la *Guía del usuario de la AWS Command Line Interface*.

De forma alternativa, puede ejecutar comandos de la AWS CLI desde la consola mediante AWS CloudShell. AWS CloudShell es un intérprete de comandos previamente autenticado y basado en el navegador que se puede lanzar directamente desde la Consola de administración de AWS. Para obtener más información, consulte [¿Qué es CloudShell?](https://docs.aws.amazon.com//cloudshell/latest/userguide/welcome.html) e [Introducción a AWS CloudShell](https://docs.aws.amazon.com//cloudshell/latest/userguide/getting-started.html) en la *Guía el usuario de AWS CloudShell*.

**Example 1: Crear un trabajo de operaciones por lotes que actualice los objetos cifrados de una AWS KMS key a otra clave de KMS**  
En el siguiente ejemplo, se muestra cómo crear un trabajo de operaciones por lotes de S3 que actualiza la configuración de cifrado para varios objetos en el bucket de uso general. Este comando crea un trabajo que cambia los objetos cifrados con una clave AWS Key Management Service (AWS KMS) para usar una clave de KMS diferente. Este trabajo también genera y guarda un manifiesto de los objetos afectados y crea un informe de los resultados. Para usar este comando, sustituya `user input placeholders` por su propia información.  

```
aws s3control create-job --account-id account-id \
--no-confirmation-required \
--operation '{"S3UpdateObjectEncryption": {  "ObjectEncryption": { "SSEKMS": { "KMSKeyArn": "KMS-key-ARN-to-apply", "BucketKeyEnabled": false  }  }  } }' \
--report '{ "Enabled": true, "Bucket": "report-bucket-ARN",  "Format": "Report_CSV_20180820", "Prefix": "report", "ReportScope": "AllTasks" }' \
--manifest-generator '{ "S3JobManifestGenerator": { "ExpectedBucketOwner": "account-id", "SourceBucket": "source-bucket-ARN", "EnableManifestOutput": true, "ManifestOutputLocation": { "Bucket": "manifest-bucket-ARN", "ManifestFormat": "S3InventoryReport_CSV_20211130", "ManifestPrefix": "manifest-prefix" }, "Filter": {   "MatchAnyObjectEncryption": [{ "SSEKMS": { "KmsKeyArn": "kms-key-ARN-to-match" } }] } } }' \
--priority 1 \
--role-arn batch-operations-role-ARN
```
Para obtener el mejor rendimiento, se recomienda utilizar el filtro `KmsKeyArn` junto con otros filtros de metadatos de objetos, como `MatchAnyPrefix`, `CreatedAfter` o `MatchAnyStorageClass`.

**Example 2: Crear un trabajo de operaciones por lotes que actualice los objetos cifrados de SSE-S3 a SSE-KMS**  
En el siguiente ejemplo, se muestra cómo crear un trabajo de operaciones por lotes de S3 que actualiza la configuración de cifrado para varios objetos en el bucket de uso general. Este comando crea un trabajo que cambia objetos cifrados mediante el uso del cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) para usar el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS) en su lugar. Este trabajo también genera y guarda un manifiesto de los objetos afectados y crea un informe de los resultados. Para usar este comando, sustituya `user input placeholders` por su propia información.  

```
aws s3control create-job --account-id account-id \
--no-confirmation-required \
--operation '{"S3UpdateObjectEncryption": {  "ObjectEncryption": { "SSEKMS": { "KMSKeyArn": "KMS-key-ARN-to-apply", "BucketKeyEnabled": false  }  }  } }' \
--report '{ "Enabled": true, "Bucket": "report-bucket-ARN",  "Format": "Report_CSV_20180820", "Prefix": "report", "ReportScope": "AllTasks" }' \
--manifest-generator '{ "S3JobManifestGenerator": { "ExpectedBucketOwner": "account-id", "SourceBucket": "source-bucket-ARN", "EnableManifestOutput": true, "ManifestOutputLocation": { "Bucket": "manifest-bucket-ARN", "ManifestFormat": "S3InventoryReport_CSV_20211130", "ManifestPrefix": "manifest-prefix" }, "Filter": {   "MatchAnyObjectEncryption": [{ "SSES3": {} }] } } }' \
--priority 1 \
--role-arn batch-operations-role-ARN
```
Para obtener el mejor rendimiento, se recomienda utilizar el filtro `KmsKeyArn` junto con otros filtros de metadatos de objetos, como `MatchAnyPrefix`, `CreatedAfter` o `MatchAnyStorageClass`.

# Retención de bloqueo de objetos S3
<a name="batch-ops-retention-date"></a>

Puede utilizar Operaciones por lotes de Amazon S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. Puede utilizar la operación **Retención de Bloqueo de objetos** para aplicar fechas de retención para los objetos mediante el modo de *gobernanza* o el modo de *conformidad*. Estos modos de retención aplican diferentes niveles de protección. Puede aplicar cualquiera de los modos de retención a cualquier versión de objeto. Las fechas de retención, al igual que las retenciones legales, impiden que un objeto se sobrescriba o elimine. Amazon S3 almacena la *fecha límite de retención* que se especifica en los metadatos del objeto y protege la versión especificada de la versión del objeto hasta que venza el periodo de retención.

Puede utilizar Operaciones por lotes de S3 con Bloqueo de objetos para administrar las fechas de retención de muchos objetos de Amazon S3 al mismo tiempo. Especifique la lista de objetos de destino en el manifiesto y envíela a Operaciones por lotes para su finalización. Para obtener más información, consulte de Bloqueo de objetos de S [Periodos de retención](object-lock.md#object-lock-retention-periods). 

El trabajo de Operaciones por lotes de S3 con las fechas de retención se ejecuta hasta que termina, se cancela o llega a un estado de error. Recomendamos utilizar Operaciones por lotes de S3 y la retención de Bloqueo de objetos de S3 cuando desee añadir, cambiar o quitar la fecha de retención de muchos objetos con una sola solicitud. 

Operaciones por lotes comprueba que el Bloqueo de objetos está activado en el bucket antes de procesar cualquier clave en el manifiesto. Para realizar las operaciones y la validación, Operaciones por lotes necesita los permisos `s3:GetBucketObjectLockConfiguration` y AWS Identity and Access Management en un rol de `s3:PutObjectRetention` (IAM) para que Operaciones por lotes pueda llamar a Bloqueo de objetos en su nombre. Para obtener más información, consulte [Consideraciones sobre el bloqueo de objetos](object-lock-managing.md).

Para obtener información sobre el uso de esta operación con la API de REST, consulte `S3PutObjectRetention` en la operación [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html) en la *Amazon Simple Storage Service API Reference*. 

Para obtener un ejemplo AWS Command Line Interface (AWS CLI) del uso de esta operación, consulte [Mediante AWS CLI](batch-ops-object-lock-retention.md#batch-ops-cli-object-lock-retention-example). Para ver un ejemplo de AWS SDK para Java, consulte [Uso de AWS SDK para Java](batch-ops-object-lock-retention.md#batch-ops-examples-java-object-lock-retention). 

## Restricciones y limitaciones
<a name="batch-ops-retention-date-restrictions"></a>

Al utilizar Operaciones por lotes para aplicar periodos de retención de Bloqueo de objetos, se aplican las siguientes restricciones y limitaciones: 
+ Operaciones por lotes de S3 no realiza ningún cambio en el bucket.
+ El control de versiones y el Bloqueo de objetos de S3 deben configurarse en el bucket donde se realiza el trabajo.
+ Todos los objetos enumerados en el manifiesto deben estar en el mismo bucket.
+ La operación funciona en la versión más reciente del objeto a menos que se especifique explícitamente una versión en el manifiesto.
+ Necesita un permiso `s3:PutObjectRetention` en su rol de IAM para utilizar un trabajo de **retención de Bloqueo de objetos**.
+ Se necesita el permiso de `s3:GetBucketObjectLockConfiguration` IAM para confirmar que Bloqueo de objetos está habilitado para el bucket de S3 en el que está realizando el trabajo. 
+ Solo se puede ampliar el periodo de retención de objetos con fechas de retención de modo `COMPLIANCE` aplicadas y dicho periodo no se puede reducir.
+ Un solo trabajo de Bloqueo de objetos de S3 puede admitir un manifiesto con hasta 20 000 millones de objetos.

# Bloqueo de objetos de retención legal en S3
<a name="batch-ops-legal-hold"></a>

Puede utilizar Operaciones por lotes de Amazon S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. Puede utilizar la operación **Retención legal de Bloqueo de objetos** para aplicar una retención legal en una versión de objeto. Al igual que un periodo de retención, la retención legal impide que se sobrescriba o elimine una versión de un objeto. Sin embargo, una retención legal no tiene asociado un periodo de retención y sigue vigente hasta que se elimine. 

Puede utilizar Operaciones por lotes de S3 con Bloqueo de objetos para agregar retenciones legales a muchos objetos de Amazon S3 al mismo tiempo. Para hacerlo, especifique una lista de los objetos de destino en su manifiesto y envíela a Operaciones por lotes. El trabajo **Retención legal de Bloqueo de objetos** de Operaciones por lotes de S3 se ejecuta hasta que termina, se cancela o llega a un estado de error.

Operaciones por lotes de S3 comprueba que Bloqueo de objetos está habilitado en el bucket de S3 antes de procesar cualquier objeto en el manifiesto. Para realizar operaciones en el objeto y la validación en el bucket, Operaciones por lotes de S3 necesita `s3:PutObjectLegalHold` y `s3:GetBucketObjectLockConfiguration` en un rol de AWS Identity and Access Management (IAM). Estos permisos permiten a Operaciones por lotes de S3 llamar a Bloqueo de objetos de S3 en su nombre. 

Al crear un trabajo de Operaciones por lotes de S3 para eliminar una retención legal, solo tiene que especificar `Off` como estado de retención legal. Para obtener más información, consulte [Consideraciones sobre el bloqueo de objetos](object-lock-managing.md).

Para obtener información sobre el uso de esta operación con la API de REST de Amazon S3, consulte `S3PutObjectLegalHold` en la operación [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html) de la *Amazon Simple Storage Service API Reference*. 

Para obtener un ejemplo del uso de esta operación, consulte [Uso de AWS SDK para Java](batch-ops-legal-hold-off.md#batch-ops-examples-java-object-lock-legalhold). 

## Restricciones y limitaciones
<a name="batch-ops-legal-hold-restrictions"></a>

Al utilizar Operaciones por lotes para aplicar o eliminar una retención legal de Bloqueo de objetos, se aplican las siguientes restricciones y limitaciones: 
+ Operaciones por lotes de S3 no realiza ningún cambio en el bucket.
+ Todos los objetos enumerados en el manifiesto deben estar en el mismo bucket.
+ El control de versiones y el Bloqueo de objetos de S3 deben configurarse en el bucket donde se realiza el trabajo.
+ La operación **Retención legal de Bloqueo de objetos** funciona en la versión más reciente del objeto, a menos que se especifique explícitamente una versión en el manifiesto.
+ Se necesita el permiso `s3:PutObjectLegalHold` en el rol de IAM para añadir o eliminar la retención legal de los objetos.
+ Se necesita el permiso `s3:GetBucketObjectLockConfiguration` de IAM para confirmar que Bloqueo de objetos de S3 está habilitado para el bucket de S3 en el que se realiza el trabajo. 
+ Un solo trabajo de retención legal de Bloqueo de objetos de S3 puede admitir un manifiesto con hasta 20 000 millones de objetos.
+ [Copia de objetos](batch-ops-copy-object.md)
+ [Calcular las sumas de comprobación](batch-ops-compute-checksums.md)
+ [Eliminar todas las etiquetas de objeto](batch-ops-delete-object-tagging.md)
+ [Invocar a la función AWS Lambda](batch-ops-invoke-lambda.md)
+ [Reemplazar todas las etiquetas de objeto](batch-ops-put-object-tagging.md)
+ [Sustitución de la lista de control de acceso (ACL)](batch-ops-put-object-acl.md)
+ [Restaurara objetos con Operaciones por lotes](batch-ops-initiate-restore-object.md)
+ [Actualización de cifrado de objetos](batch-ops-update-encryption.md)
+ [Replicación de objetos existentes con Replicación por lotes](s3-batch-replication-batch.md)
+ [Retención de bloqueo de objetos S3](batch-ops-retention-date.md)
+ [Bloqueo de objetos de retención legal en S3](batch-ops-legal-hold.md)

# Administración de trabajos de operaciones por lotes de S3
<a name="batch-ops-managing-jobs"></a>

Amazon S3 proporciona un conjunto de herramientas sólido que lo ayudarán a administrar los trabajos de las operaciones por lotes de S3 una vez que los haya creado. En esta sección, se describen las operaciones que puede utilizar para administrar sus trabajos y realizar un seguimiento de ellos con la consola de Amazon S3, la AWS Command Line Interface (AWS CLI), los AWS SDK, o la API de REST de Amazon S3.

**Topics**
+ [Uso de la consola de Simple Storage Service (Amazon S3) para administrar sus trabajos de operaciones por lotes de S3](#batch-ops-manage-console)
+ [Mostrar trabajos](batch-ops-list-jobs.md)
+ [Consultar detalles del trabajo](batch-ops-job-details.md)
+ [Asignar prioridad a los trabajos](batch-ops-job-priority.md)

## Uso de la consola de Simple Storage Service (Amazon S3) para administrar sus trabajos de operaciones por lotes de S3
<a name="batch-ops-manage-console"></a>

Puede administrar sus trabajos de operaciones por lotes de S3 con la consola. Por ejemplo, puede hacer lo siguiente:
+ Visualización de trabajos activos y en cola
+ Comprobación del estado de un trabajo
+ Cambio de la prioridad de un trabajo
+ Confirmación y ejecución de un trabajo
+ Clonación de un trabajo
+ Cancelación de un trabajo

**Pasos para administrar las operaciones por lotes con la consola**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Operaciones por lotes**.

1. Elija el trabajo que desea administrar.

# Mostrar trabajos
<a name="batch-ops-list-jobs"></a>

Puede recuperar una lista de los trabajos de Operaciones por lotes de S3. Esta lista proporciona información sobre los trabajos que aún no han finalizado y los que finalizaron en los últimos 90 días. Para cada trabajo, la lista contiene información como el ID del trabajo, la descripción, la prioridad, el estado actual y el número de trabajos realizados con éxito y que han dado error.

Puede filtrar la lista de trabajos por estado. Si recupera la lista a través de la consola, también podrá buscar los trabajos por descripción o ID y filtrarlos por Región de AWS.

## Obtención de una lista de trabajos `Active` y `Complete`
<a name="batch-ops-example-cli-active-jobs"></a>

En el ejemplo siguiente de AWS CLI se obtiene una lista de los trabajos `Active` y `Complete`. Para utilizar este ejemplo, sustituya *`user input placeholders`* por su propia información.

```
aws s3control list-jobs \
    --region us-west-2 \
    --account-id account-id \
    --job-statuses '["Active","Complete"]' \
    --max-results 20
```

Para obtener más información y ejemplos, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/list-jobs.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/list-jobs.html) en la *referencia de comandos de AWS CLI*.

# Consultar detalles del trabajo
<a name="batch-ops-job-details"></a>

Si desea obtener más información sobre un trabajo de Operaciones por lotes de Amazon S3 que puede recuperar creando una lista de trabajos, puede ver todos los detalles de un solo trabajo. Puede ver los detalles de los trabajos que aún no han finalizado y los que finalizaron en los últimos 90 días. Además de la información que aparece en la lista de trabajos, los detalles de los trabajos contienen información como: 
+ Los parámetros de la operación.
+ Los detalles sobre el manifiesto.
+ Información sobre el informe de finalización, si configuró uno cuando creó el trabajo.
+ El nombre de recurso de Amazon (ARN) del rol de AWS Identity and Access Management (IAM) que asignó para ejecutar el trabajo.

Al ver los detalles de un trabajo individual, puede acceder a la configuración completa del trabajo. Para ver los detalles de un trabajo, puede utilizar la consola de Amazon S3 o la AWS Command Line Interface (AWS CLI).

## Obtención de la descripción de un trabajo de Operaciones por lotes de S3 en la consola de Amazon S3
<a name="batch-ops-console-job-description"></a>

**Para ver la descripción de un trabajo de Operaciones por lotes mediante la consola**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Operaciones por lotes**.

1. Seleccione el ID del trabajo en cuestión para ver sus detalles.

## Obtención de la descripción de un trabajo de Operaciones por lotes de S3 en la AWS CLI
<a name="batch-ops-example-cli-job-description"></a>

En el siguiente ejemplo, se obtiene la descripción de un trabajo de Operaciones por lotes de S3 mediante la AWS CLI. Para utilizar el comando de ejemplo siguiente, sustituya *`user input placeholders`* con su información.

```
aws s3control describe-job \
--region us-west-2 \
--account-id account-id \
--job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c
```

Para obtener más información y ejemplos, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/describe-job.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/describe-job.html) en la *referencia de comandos de AWS CLI*.

# Asignar prioridad a los trabajos
<a name="batch-ops-job-priority"></a>

Puede asignar a cada trabajo de Operaciones por lotes de Amazon S3 una prioridad numérica, que puede ser cualquier entero positivo. Operaciones por lotes de S3 prioriza los trabajos de acuerdo con la prioridad asignada. Los trabajos con una prioridad mayor (o un valor numérico más elevado en el parámetro priority) se evalúan en primer lugar. La prioridad se determina en orden descendente. Por ejemplo, una cola de trabajos con una prioridad 10, tendrá mayor preferencia de programación que una cola de trabajos cuyo valor de prioridad sea 1. 

Puede cambiar la prioridad de un trabajo mientras está en ejecución. Si se envía un nuevo trabajo con una prioridad mayor mientras hay otro trabajo en ejecución, el trabajo con menor prioridad se detendrá para permitir que se ejecute el de mayor prioridad.

El cambio de la prioridad del trabajo no afecta a la velocidad de procesamiento de trabajos.

**nota**  
Operaciones por lotes de S3 respeta las prioridades de los trabajos en la medida de lo posible. Aunque, por lo general, los trabajos con mayor prioridad prevalecerán sobre los trabajos con una prioridad más baja, Amazon S3 no garantiza un orden estricto de los trabajos.

## Uso de la consola de S3
<a name="batch-ops-example-console-update-job-priority"></a>

**Actualización de la prioridad de trabajos en la consola de Amazon S3**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Operaciones por lotes**.

1. Seleccione el trabajo específico que desearía administrar.

1. Elija **Acciones**. En la lista desplegable, elija **Actualizar prioridad**.

## Uso de AWS CLI
<a name="batch-ops-example-cli-update-job-priority"></a>

En el ejemplo siguiente se actualiza la prioridad del trabajo mediante la AWS CLI. Un número más alto indica una prioridad de ejecución más alta. Para utilizar el comando de ejemplo siguiente, sustituya *`user input placeholders`* con su información.

```
aws s3control update-job-priority \
    --region us-west-2 \
    --account-id account-id \
    --priority 98 \
    --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c
```

## Mediante AWS SDK para Java
<a name="batch-ops-examples-java-update-job-priority."></a>

Para actualizar la prioridad de un trabajo de operaciones por lotes de S3 mediante el AWS SDK para Java, puede utilizar el cliente de S3Control para modificar la prioridad de ejecución del trabajo, que determina el orden en el que se procesan los trabajos en relación con otros trabajos de la cola.

Para obtener más información acerca de la prioridad de un trabajo, consulte [Asignar prioridad a los trabajos](#batch-ops-job-priority).

Para ver ejemplos de cómo actualizar la prioridad de un trabajo con el AWS SDK para Java, consulte [Update the priority of a batch job](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_UpdateJobPriority_section.html) en la *Referencia de la API de Amazon S3*.

# Seguimiento del estado del trabajo e informes de finalización
<a name="batch-ops-job-status"></a>

Con las operaciones por lotes de S3, puede ver y actualizar el estado del trabajo, agregar notificaciones y registros, realizar un seguimiento de los errores del trabajo y generar informes de finalización. 

**Topics**
+ [Estados de los trabajos](#batch-ops-job-status-table)
+ [Actualización del estado del trabajo](#updating-job-statuses)
+ [Notificaciones y registro](#batch-ops-notifications)
+ [Seguimiento de los errores de los trabajos](#batch-ops-job-status-failure)
+ [Informes de finalización](#batch-ops-completion-report)
+ [Ejemplos: seguimiento de un trabajo de las operaciones por lotes de S3 en Amazon EventBridge a través de AWS CloudTrail](batch-ops-examples-event-bridge-cloud-trail.md)
+ [Ejemplos: informes de finalización de las operaciones por lotes de S3](batch-ops-examples-reports.md)

## Estados de los trabajos
<a name="batch-ops-job-status-table"></a>

Cuando se crea y ejecuta un trabajo, este pasa por una serie de estados. En la siguiente tabla se describen los estados y las posibles transiciones entre ellos. 


| Estado | Descripción | Transiciones | 
| --- | --- | --- | 
| `New` | Cuando se crean, los trabajos tienen el estado `New`. | Un trabajo pasa automáticamente al estado `Preparing` cuando Amazon S3 comienza a procesar el objeto del manifiesto. | 
| `Preparing` | Amazon S3 está procesando el objeto del manifiesto y otros parámetros del trabajo para configurar y ejecutar el trabajo. | Los trabajos pasan automáticamente al estado `Ready` cuando Amazon S3 termina de procesar el manifiesto y otros parámetros. En ese momento, el trabajo está listo para ejecutar la operación especificada sobre los objetos que se muestran en el manifiesto.Si el trabajo necesita confirmación antes de ejecutarse (por ejemplo: cuando se crea un trabajo utilizando la consola de Amazon S3), el trabajo pasa de `Preparing` a `Suspended`. El trabajo permanecerá con el estado `Suspended` hasta que confirme que desea ejecutarlo. | 
| `Suspended` | El trabajo necesita confirmación, pero aún no ha confirmado que desea ejecutarlo. Los únicos trabajos que necesitan confirmación son los que se crean con la consola de Amazon S3. Un trabajo que se crea con la consola pasa al estado `Suspended` inmediatamente después de `Preparing`. Una vez que confirme que desea ejecutar el trabajo y este pase al estado `Ready`, el trabajo nunca volverá a tener el estado `Suspended`. | Cuando confirme que desea ejecutar el trabajo, el estado cambiará a `Ready`. | 
| `Ready` | Amazon S3 está listo para comenzar a ejecutar las operaciones solicitadas en los objetos. | Los trabajos pasan automáticamente al estado `Active` cuando Amazon S3 comienza a ejecutarlos. El tiempo que un trabajo permanece en el estado `Ready` depende de si hay trabajos con una prioridad mayor que ya estén en ejecución y de lo que esos trabajos tarden en completarse. | 
| `Active` | Amazon S3 está ejecutando la operación solicitada en los objetos que aparecen en el manifiesto. Mientras un trabajo está en el estado `Active`, puede monitorear su progreso mediante la consola de Amazon S3 o la operación `DescribeJob` a través de la API REST, la AWS CLI o los SDK de AWS. | Un trabajo pasa al estado `Active` cuando ya no hay operaciones de objetos en ejecución. Este comportamiento puede producirse automáticamente; por ejemplo, cuando un trabajo se completa correctamente o encuentra un error. Este comportamiento también puede producirse como consecuencia de acciones de un usuario; por ejemplo, cuando se cancela un trabajo. El estado al que pasa el trabajo depende del motivo de la transición. | 
| `Pausing` | El trabajo tenía otro estado y ha pasado a `Paused`. | Los trabajos pasan automáticamente al estado `Paused` cuando finaliza la etapa de `Pausing`. | 
| `Paused` | Los trabajos adoptan el estado `Paused` si se envía un trabajo con una prioridad mayor mientras el trabajo actual está en ejecución. | Los trabajos con el estado `Paused` pasan automáticamente a `Active` cuando otros trabajos de mayor prioridad que impiden su ejecución se completan, encuentran un error o se suspenden. | 
| `Completing` | El trabajo tenía otro estado y ha pasado a `Complete`. | Los trabajos pasan automáticamente al estado `Complete` cuando finaliza la etapa de `Completing`. | 
| `Complete` | El trabajo ha terminado de ejecutar la operación solicitada en todos los objetos del manifiesto. La operación puede haberse ejecutado correctamente o con errores en cada objeto. Si configuró el trabajo para que se generara un informe de finalización, dicho informe estará disponible tan pronto como el trabajo adopte el estado `Complete`. | `Complete` es un estado terminal. Cuando un trabajo alcanza el estado `Complete`, ya no cambia a otros estados. | 
| `Cancelling` | El trabajo ha adoptado el estado `Cancelled`. | Los trabajos pasan automáticamente al estado `Cancelled` cuando finaliza la etapa de `Cancelling`. | 
| `Cancelled` | Se ha solicitado la cancelación del trabajo y Operaciones por lotes de S3 lo ha cancelado con éxito. El trabajo ya no enviará ninguna solicitud nueva a Amazon S3. | `Cancelled` es un estado terminal. Cuando un trabajo alcanza el estado `Cancelled`, ya no pasará a ningún otro estado. | 
| `Failing` | El trabajo ha adoptado el estado `Failed`. | Los trabajos pasan automáticamente al estado `Failed` cuando finaliza la etapa de `Failing`. | 
| `Failed` | Se ha producido un error en el trabajo y ya no está en ejecución. Para obtener más información acerca de los errores de los trabajos, consulte [Seguimiento de los errores de los trabajos](#batch-ops-job-status-failure). | `Failed` es un estado terminal. Cuando un trabajo alcanza el estado `Failed`, ya no pasará a ningún otro estado. | 

## Actualización del estado del trabajo
<a name="updating-job-statuses"></a>

Mediante los siguientes ejemplos de la AWS CLI y AWS SDK para Java, se actualiza el estado de un trabajo de Operaciones por lotes. Para obtener más información sobre uso de la consola de Amazon S3 para administrar trabajos de Operaciones por lotes, consulte [Uso de la consola de Simple Storage Service (Amazon S3) para administrar sus trabajos de operaciones por lotes de S3](batch-ops-managing-jobs.md#batch-ops-manage-console).

### Uso de AWS CLI
<a name="batch-ops-example-cli-update-job-status"></a>

Para utilizar los comandos de ejemplo siguientes, sustituya *`user input placeholders`* por su propia información. 
+ Si no especificó el parámetro `--no-confirmation-required` en el comando `create-job`, el trabajo permanece suspendido hasta que lo confirme estableciendo su estado en `Ready`. A continuación, Amazon S3 hace que el trabajo sea apto para su ejecución.

  ```
  aws s3control update-job-status \
      --region us-west-2 \
      --account-id 123456789012 \
      --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c \
      --requested-job-status 'Ready'
  ```
+ Para cancelar el trabajo, establezca su estado en `Cancelled`.

  ```
  aws s3control update-job-status \
       --region us-west-2 \
       --account-id 123456789012 \
       --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c \
       --status-update-reason "No longer needed" \
       --requested-job-status Cancelled
  ```

### Uso de AWS SDK para Java
<a name="batch-ops-examples-java-update-job-status"></a>

Para ver ejemplos de cómo actualizar el estado de un trabajo con el AWS SDK para Java, consulte [Actualizar el estado de un trabajo por lotes](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_UpdateJobStatus_section.html) en la *Referencia de la API de Amazon S3*.

## Notificaciones y registro
<a name="batch-ops-notifications"></a>

Además de solicitar informes de finalización, también puede obtener, revisar y auditar la actividad de Operaciones por lotes mediante AWS CloudTrail. Como Operaciones por lotes utiliza operaciones de API de Amazon S3 existentes para realizar tareas, esas tareas también emiten los mismos eventos que si se las llamara directamente. Por lo tanto, puede realizar un seguimiento y registrar el progreso de su trabajo y de todas sus tareas mediante las mismas herramientas y procesos de notificación, registro y auditoría que ya utiliza con Amazon S3. Para obtener más información, consulte los ejemplos de las siguientes secciones.

**nota**  
Operaciones por lotes genera eventos de administración y datos en CloudTrail durante la ejecución del trabajo. El volumen de estos eventos se escala con el número de claves en el manifiesto de cada trabajo. Para obtener más información, consulte la página de [Precios de CloudTrail](https://aws.amazon.com/cloudtrail/pricing/), que incluye ejemplos de cómo cambian los precios en función de la cantidad de registros de seguimiento que haya configurado en la cuenta. Para obtener información acerca de cómo configurar y registrar eventos para que se ajusten a sus necesidades, consulte [Crear su primer registro de seguimiento](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-tutorial.html#tutorial-step2) en la *Guía del usuario de AWS CloudTrail*.

Para obtener más información acerca de los eventos de Amazon S3, consulte [Notificaciones de eventos de Amazon S3](EventNotifications.md). 

## Seguimiento de los errores de los trabajos
<a name="batch-ops-job-status-failure"></a>

Si un trabajo de Operaciones por lotes de S3 se encuentra con un problema que impide su correcta ejecución (por ejemplo: no se puede leer el manifiesto especificado), se produce un error. Cuando un trabajo falla, genera uno o más códigos de error o motivos de error. Operaciones por lotes de S3 almacena los códigos de error y los motivos con el trabajo, para que pueda consultarlos solicitando los detalles del trabajo. Si solicitó un informe de finalización para el trabajo, los códigos de error y los motivos también aparecen aquí.

Para impedir que los trabajos ejecuten un número elevado de operaciones incorrectamente, Amazon S3 impone un umbral de errores de tareas en cada trabajo de Operaciones por lotes de S3. Una vez que un trabajo ha ejecutado al menos 1000 tareas, Amazon S3 monitoriza la tasa de errores de tareas. Si en algún momento la tasa de errores (el número de tareas con error en comparación con el número total de tareas ejecutadas) supera el 50 %, el trabajo genera un error. Si el trabajo deja de ejecutarse porque se ha superado el umbral de errores de tareas, es posible identificar la causa de dichos errores. Por ejemplo, podría ocurrir que, por accidente, haya incluido en el manifiesto algunos objetos que no existen en el bucket especificado. Después de solucionar los errores, podrá volver a enviar el trabajo.

**nota**  
Operaciones por lotes de S3 se ejecuta de forma asincrónica y las tareas no tienen que ejecutarse necesariamente en el mismo orden en el que los objetos aparecen en el manifiesto. Por tanto, no puede utilizar el orden del manifiesto para determinar qué tareas de los objetos se ejecutaron o no correctamente. En su lugar, puede examinar el informe de finalización del trabajo (si solicitó uno) o ver los registros de eventos de AWS CloudTrail para tratar de determinar el origen de los errores.

## Informes de finalización
<a name="batch-ops-completion-report"></a>

Al crear un trabajo, puede solicitar un informe de finalización. Siempre que Operaciones por lotes de S3 invoque correctamente al menos una tarea, Amazon S3 genera un informe de finalización cuando las tareas terminen de ejecutarse, encuentren algún error o se cancelen. Puede configurar el informe de finalización para incluir todas las tareas o solo las tareas con error. 

El informe de finalización incluye la configuración del trabajo, el estado y la información de cada tarea, incluidas la clave y la versión del objeto, el estado, los códigos de error y las descripciones de los errores. Los informes de finalización constituyen un mecanismo sencillo para ver los resultados de las tareas en un formato unificado sin necesidad de realizar ninguna configuración adicional. Los informes de finalización se cifran con cifrado de servidor con claves administradas por Amazon S3 (SSE-S3). Para ver un ejemplo de un informe de finalización, consulte [Ejemplos: informes de finalización de las operaciones por lotes de S3](batch-ops-examples-reports.md). 

Aunque no se configure un informe de finalización, es posible monitorizar y auditar el trabajo y las tareas con CloudTrail y Amazon CloudWatch. Para obtener más información, consulte los temas siguientes:

**Topics**
+ [Estados de los trabajos](#batch-ops-job-status-table)
+ [Actualización del estado del trabajo](#updating-job-statuses)
+ [Notificaciones y registro](#batch-ops-notifications)
+ [Seguimiento de los errores de los trabajos](#batch-ops-job-status-failure)
+ [Informes de finalización](#batch-ops-completion-report)
+ [Ejemplos: seguimiento de un trabajo de las operaciones por lotes de S3 en Amazon EventBridge a través de AWS CloudTrail](batch-ops-examples-event-bridge-cloud-trail.md)
+ [Ejemplos: informes de finalización de las operaciones por lotes de S3](batch-ops-examples-reports.md)

# Ejemplos: seguimiento de un trabajo de las operaciones por lotes de S3 en Amazon EventBridge a través de AWS CloudTrail
<a name="batch-ops-examples-event-bridge-cloud-trail"></a>

La actividad de los trabajos de las operaciones por lotes en Amazon S3 se registra como eventos en AWS CloudTrail. Puede crear una regla personalizada en Amazon EventBridge y enviar estos eventos al recurso de notificación de destino que desee, como Amazon Simple Notification Service (Amazon SNS). 

**nota**  
Amazon EventBridge es la forma preferida de administrar sus eventos. Amazon CloudWatch Events y EventBridge son el mismo servicio subyacente y la misma API, pero EventBridge ofrece más características. Los cambios que realice en CloudWatch o EventBridge aparecerán en cada consola. Para obtener más información, consulte la *[Guía del usuario de Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/)*.

**Topics**
+ [Eventos de operaciones por lotes de S3 registrados en CloudTrail](#batch-ops-examples-cloud-trail-events)
+ [Regla de EventBridge para el seguimiento de eventos de trabajo de operaciones por lotes de S3](#batch-ops-examples-event-bridge)

## Eventos de operaciones por lotes de S3 registrados en CloudTrail
<a name="batch-ops-examples-cloud-trail-events"></a>



Cuando se crea un trabajo de Operaciones por lotes, se registra como un evento `JobCreated` en CloudTrail. A medida que se ejecuta el trabajo, cambia de estado durante el procesamiento y se registran otros eventos `JobStatusChanged` en CloudTrail. Puede ver estos eventos en la [consola de CloudTrail](https://console.aws.amazon.com/cloudtrail). Para obtener más información acerca de CloudTrail, consulte la [https://docs.aws.amazon.com/awscloudtrail/latest/userguide/how-cloudtrail-works.html](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/how-cloudtrail-works.html).

**nota**  
Solo los eventos `status-change` del trabajo de Operaciones por lotes de S3 se registran en CloudTrail.

**Example — Evento de finalización del trabajo de Operaciones por lotes de S3 registrado por CloudTrail**  

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "accountId": "123456789012",
        "invokedBy": "s3.amazonaws.com"
    },
    "eventTime": "2020-02-05T18:25:30Z",
    "eventSource": "s3.amazonaws.com",
    "eventName": "JobStatusChanged",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "s3.amazonaws.com",
    "userAgent": "s3.amazonaws.com",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "f907577b-bf3d-4c53-b9ed-8a83a118a554",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "recipientAccountId": "123412341234",
    "serviceEventDetails": {
        "jobId": "d6e58ec4-897a-4b6d-975f-10d7f0fb63ce",
        "jobArn": "arn:aws:s3:us-west-2:181572960644:job/d6e58ec4-897a-4b6d-975f-10d7f0fb63ce",
        "status": "Complete",
        "jobEventId": "b268784cf0a66749f1a05bce259804f5",
        "failureCodes": [],
        "statusChangeReason": []
    }
}
```

## Regla de EventBridge para el seguimiento de eventos de trabajo de operaciones por lotes de S3
<a name="batch-ops-examples-event-bridge"></a>

En el siguiente ejemplo, se muestra cómo crear una regla en Amazon EventBridge para capturar los eventos de la herramienta de operaciones por lotes de S3 registrados por AWS CloudTrail en un destino de su elección.

Para ello, cree una regla siguiendo todos los pasos de [Creación de reglas de EventBridge que reaccionen a los eventos](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html). Puede pegar la siguiente política de patrones de eventos personalizados de Operaciones por lotes de S3 cuando corresponda y elegir el servicio de destino que desee.

**Política de patrones de eventos personalizados de Operaciones por lotes de S**

```
{
    "source": [
        "aws.s3"
    ],
    "detail-type": [
        "AWS Service Event via CloudTrail"
    ],
    "detail": {
        "eventSource": [
            "s3.amazonaws.com"
        ],
        "eventName": [
            "JobCreated",
            "JobStatusChanged"
        ]
    }
}
```

 Los siguientes ejemplos son dos eventos de Operaciones por lotes que se enviaron a Amazon Simple Queue Service (Amazon SQS) desde una regla de eventos de EventBridge. Un trabajo de Operaciones por lotes pasa por muchos estados diferentes durante el procesamiento (`New`, `Preparing`, `Active`, etc.), por lo que puede esperar recibir varios mensajes para cada trabajo.

**Example —JobCreated Ejemplo de evento**  

```
{
    "version": "0",
    "id": "51dc8145-541c-5518-2349-56d7dffdf2d8",
    "detail-type": "AWS Service Event via CloudTrail",
    "source": "aws.s3",
    "account": "123456789012",
    "time": "2020-02-27T15:25:49Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "eventVersion": "1.05",
        "userIdentity": {
            "accountId": "11112223334444",
            "invokedBy": "s3.amazonaws.com"
        },
        "eventTime": "2020-02-27T15:25:49Z",
        "eventSource": "s3.amazonaws.com",
        "eventName": "JobCreated",
        "awsRegion": "us-east-1",
        "sourceIPAddress": "s3.amazonaws.com",
        "userAgent": "s3.amazonaws.com",
        "eventID": "7c38220f-f80b-4239-8b78-2ed867b7d3fa",
        "readOnly": false,
        "eventType": "AwsServiceEvent",
        "serviceEventDetails": {
            "jobId": "e849b567-5232-44be-9a0c-40988f14e80c",
            "jobArn": "arn:aws:s3:us-east-1:181572960644:job/e849b567-5232-44be-9a0c-40988f14e80c",
            "status": "New",
            "jobEventId": "f177ff24f1f097b69768e327038f30ac",
            "failureCodes": [],
            "statusChangeReason": []
        }
    }
}
```

**Example — evento de finalización del trabajo JobStatusChanged**  

```
{
  "version": "0",
  "id": "c8791abf-2af8-c754-0435-fd869ce25233",
  "detail-type": "AWS Service Event via CloudTrail",
  "source": "aws.s3",
  "account": "123456789012",
  "time": "2020-02-27T15:26:42Z",
  "region": "us-east-1",
  "resources": [],
  "detail": {
    "eventVersion": "1.05",
    "userIdentity": {
      "accountId": "1111222233334444",
      "invokedBy": "s3.amazonaws.com"
    },
    "eventTime": "2020-02-27T15:26:42Z",
    "eventSource": "s3.amazonaws.com",
    "eventName": "JobStatusChanged",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "s3.amazonaws.com",
    "userAgent": "s3.amazonaws.com",
    "eventID": "0238c1f7-c2b0-440b-8dbd-1ed5e5833afb",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "serviceEventDetails": {
      "jobId": "e849b567-5232-44be-9a0c-40988f14e80c",
      "jobArn": "arn:aws:s3:us-east-1:181572960644:job/e849b567-5232-44be-9a0c-40988f14e80c",
      "status": "Complete",
      "jobEventId": "51f5ac17dba408301d56cd1b2c8d1e9e",
      "failureCodes": [],
      "statusChangeReason": []
    }
  }
}
```

# Ejemplos: informes de finalización de las operaciones por lotes de S3
<a name="batch-ops-examples-reports"></a>

Al crear un trabajo de Operaciones por lotes de S3, puede solicitar un informe 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.

El informe de finalización contiene información adicional sobre cada tarea, incluidas la clave y la versión del objeto, el estado, códigos de error y descripciones de los errores. La descripción de los errores de cada tarea fallida se puede utilizar para diagnosticar problemas que surgen durante la creación de trabajos, como los permisos. Para trabajos **Calcular la suma de comprobación**, el informe de finalización contiene valores de suma de comprobación para cada objeto.

**nota**  
Los informes de finalización siempre se cifran con claves administradas por Amazon S3 (SSE-S3).

**Example — Archivo de resultados de manifiesto de nivel superior**  
El archivo `manifest.json` de nivel superior contiene las ubicaciones de cada informe correcto y (si el trabajo tuvo algún error) la ubicación de los informes con errores, como se muestra en el siguiente ejemplo.  

```
{
    "Format": "Report_CSV_20180820",
    "ReportCreationDate": "2019-04-05T17:48:39.725Z",
    "Results": [
        {
            "TaskExecutionStatus": "succeeded",
            "Bucket": "my-job-reports",
            "MD5Checksum": "83b1c4cbe93fc893f54053697e10fd6e",
            "Key": "job-f8fb9d89-a3aa-461d-bddc-ea6a1b131955/results/6217b0fab0de85c408b4be96aeaca9b195a7daa5.csv"
        },
        {
            "TaskExecutionStatus": "failed",
            "Bucket": "my-job-reports",
            "MD5Checksum": "22ee037f3515975f7719699e5c416eaa",
            "Key": "job-f8fb9d89-a3aa-461d-bddc-ea6a1b131955/results/b2ddad417e94331e9f37b44f1faf8c7ed5873f2e.csv"
        }
    ],
    "ReportSchema": "Bucket, Key, VersionId, TaskStatus, ErrorCode, HTTPStatusCode, ResultMessage"
}
```

**Informes de tareas correctas**

Los informes de tareas correctas incluyen lo siguiente para las tareas *correctas*:
+ `Bucket`
+ `Key`
+ `VersionId`
+ `TaskStatus`
+ `ErrorCode`
+ `HTTPStatusCode`
+ `ResultMessage`

**Informes de tareas con errores**

Los informes de tareas erróneas contienen la siguiente información para todas las tareas *con errores*:
+ `Bucket`
+ `Key`
+ `VersionId`
+ `TaskStatus`
+ `ErrorCode`
+ `HTTPStatusCode`
+ `ResultMessage`

**Example — Informe de tareas de la función de Lambda**  
En el siguiente ejemplo, la función de Lambda copió correctamente el objeto de Amazon S3 en otro bucket. La respuesta de Amazon S3 devuelta se envía a Operaciones por lotes de S3 y, a continuación, se escribe en el informe de finalización final.  

```
amzn-s3-demo-bucket1,image_17775,,succeeded,200,,"{u'CopySourceVersionId': 'xVR78haVKlRnurYofbTfYr3ufYbktF8h', u'CopyObjectResult': {u'LastModified': datetime.datetime(2019, 4, 5, 17, 35, 39, tzinfo=tzlocal()), u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'nXNaClIMxEJzWNmeMNQV2KpjbaCJLn0OGoXWZpuVOFS/iQYWxb3QtTvzX9SVfx2lA3oTKLwImKw=', 'RequestId': '3ED5852152014362', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'nXNaClIMxEJzWNmeMNQV2KpjbaCJLn0OGoXWZpuVOFS/iQYWxb3QtTvzX9SVfx2lA3oTKLwImKw=', 'x-amz-copy-source-version-id': 'xVR78haVKlRnurYofbTfYr3ufYbktF8h', 'server': 'AmazonS3', 'x-amz-request-id': '3ED5852152014362', 'date': 'Fri, 05 Apr 2019 17:35:39 GMT', 'content-type': 'application/xml'}}}"
amzn-s3-demo-bucket1,image_17763,,succeeded,200,,"{u'CopySourceVersionId': '6HjOUSim4Wj6BTcbxToXW44pSZ.40pwq', u'CopyObjectResult': {u'LastModified': datetime.datetime(2019, 4, 5, 17, 35, 39, tzinfo=tzlocal()), u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'GiCZNYr8LHd/Thyk6beTRP96IGZk2sYxujLe13TuuLpq6U2RD3we0YoluuIdm1PRvkMwnEW1aFc=', 'RequestId': '1BC9F5B1B95D7000', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'GiCZNYr8LHd/Thyk6beTRP96IGZk2sYxujLe13TuuLpq6U2RD3we0YoluuIdm1PRvkMwnEW1aFc=', 'x-amz-copy-source-version-id': '6HjOUSim4Wj6BTcbxToXW44pSZ.40pwq', 'server': 'AmazonS3', 'x-amz-request-id': '1BC9F5B1B95D7000', 'date': 'Fri, 05 Apr 2019 17:35:39 GMT', 'content-type': 'application/xml'}}}"
amzn-s3-demo-bucket1,image_17860,,succeeded,200,,"{u'CopySourceVersionId': 'm.MDD0g_QsUnYZ8TBzVFrp.TmjN8PJyX', u'CopyObjectResult': {u'LastModified': datetime.datetime(2019, 4, 5, 17, 35, 40, tzinfo=tzlocal()), u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'F9ooZOgpE5g9sNgBZxjdiPHqB4+0DNWgj3qbsir+sKai4fv7rQEcF2fBN1VeeFc2WH45a9ygb2g=', 'RequestId': '8D9CA56A56813DF3', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'F9ooZOgpE5g9sNgBZxjdiPHqB4+0DNWgj3qbsir+sKai4fv7rQEcF2fBN1VeeFc2WH45a9ygb2g=', 'x-amz-copy-source-version-id': 'm.MDD0g_QsUnYZ8TBzVFrp.TmjN8PJyX', 'server': 'AmazonS3', 'x-amz-request-id': '8D9CA56A56813DF3', 'date': 'Fri, 05 Apr 2019 17:35:40 GMT', 'content-type': 'application/xml'}}}"
```
El siguiente informe de ejemplo muestra un caso en el que la función de AWS Lambda agotó el tiempo de espera, provocando que se sobrepasara el umbral de errores. Esto hace que se marque como `PermanentFailure`.  

```
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:21.155Z 2845ca0d-38d9-4c4b-abcf-379dc749c452 Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_15897,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:29.610Z 2d0a330b-de9b-425f-b511-29232fde5fe4 Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_14819,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:22.362Z fcf5efde-74d4-4e6d-b37a-c7f18827f551 Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_15930,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:29.809Z 3dd5b57c-4a4a-48aa-8a35-cbf027b7957e Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_17644,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:46.025Z 10a764e4-2b26-4d8c-9056-1e1072b4723f Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_17398,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:44.661Z 1e306352-4c54-4eba-aee8-4d02f8c0235c Task timed out after 3.00 seconds""}"
```

**Example — Informe de tareas de calcular la suma de comprobación**  
En el siguiente ejemplo, la operación **Calcular la suma de comprobación** calculó correctamente la suma de comprobación del objeto cargado mientras estaba en reposo. La respuesta de Amazon S3 devuelta se envía a operaciones por lotes de S3 y, a continuación, se escribe en el informe de finalización final:  

```
amzn-s3-demo-bucket1,s3-standard-1mb-test-object,,succeeded,200,,"{""checksum_base64"":""bS9TOQ\u003d\u003d"",""etag"":""3c3c1813042989094598e4b57ecbdc82"",""checksumAlgorithm"":""CRC32"",""checksumType"":""FULL_OBJECT"",""checksum_hex"":""6D2F5339""}"
```
En el informe de ejemplo siguiente, se muestra lo que ocurre cuando se produce un error en una operación de **Calcular la suma de comprobación**, lo que provoca un error en el informe de tareas:  

```
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"error details: {""failureMessage"":"Task 2845ca0d-38d9-4c4b-abcf-379dc749c452 SSE-C encryption type is not supported for this operation", ""errorCode"": "400"}"
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"error details: {""failureMessage"":"Task 2845ca0d-38d9-4c4b-abcf-379dc749c452 Key not found", ""errorCode"": "404"}"
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"error details: {""failureMessage"":"Task 2845ca0d-38d9-4c4b-abcf-379dc749c452 Internal server error, please retry", ""errorCode"": "500"}"
```

# Controlar el acceso y etiquetar trabajos usando etiquetas
<a name="batch-ops-job-tags"></a>

Para etiquetar y controlar el acceso a los trabajos de Operaciones por lotes de S3, puede añadir *etiquetas*. Las etiquetas se pueden utilizar para identificar quién es el responsable de un trabajo 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. Puede crear trabajos con etiquetas asociadas a ellos y agregar etiquetas a los trabajos después de que se hayan creado. Cada etiqueta es un par clave-valor que se puede incluir al crear el trabajo o se puede actualizar más tarde.

**aviso**  
Asegúrese de que las etiquetas de trabajo no contengan información confidencial ni datos personales.

Piense en el siguiente ejemplo de etiquetado: suponga que quiere que su departamento de Finanzas cree un trabajo de Operaciones por lotes. Puede escribir una política de AWS Identity and Access Management (IAM) que permita a un usuario invocar `Finance`, dado que se ha creado el trabajo con la etiqueta `CreateJob` asignada al valor `Department`. Además, puede añadir esa política a todos los usuarios que sean miembros del departamento de Finanzas.

Siguiendo con este ejemplo, se podría escribir una política que permita a los usuarios actualizar la prioridad de cualquier trabajo que tenga las etiquetas deseadas, o cancelar cualquier trabajo con esas etiquetas. Para obtener más información, consulte [Control de permisos para Operaciones por lotes mediante etiquetas de trabajo](batch-ops-job-tags-examples.md).

Puede añadir etiquetas a los nuevos trabajos de Operaciones por lotes de S3 cuando los cree, o puede añadírselas a trabajos ya existentes. 

Tenga en cuenta las siguientes restricciones de las etiquetas:
+ Puede asociar hasta 50 etiquetas a un trabajo siempre que tengan claves de etiqueta únicas.
+ Una clave de etiqueta puede tener una longitud de hasta 128 caracteres Unicode y los valores de etiqueta pueden tener una longitud de hasta 256 caracteres Unicode.
+ La clave y los valores distinguen entre mayúsculas y minúsculas.

Para obtener más información sobre las restricciones de las etiquetas, consulte [Restricciones de las etiquetas definidas por el usuario](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html) en la *Guía del usuario de Administración de facturación y costos de AWS*.

## Operaciones de API relacionadas con el etiquetado de trabajos de Operaciones por lotes de S3
<a name="batch-ops-job-tags-api"></a>

Amazon S3 admite las siguientes operaciones de API específicas al etiquetado de trabajos de Operaciones por lotes de S3:
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetJobTagging.html) – devuelve el conjunto de etiquetas asociado a un trabajo de Operaciones por lotes. 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutJobTagging.html) – sustituye el conjunto de etiquetas asociado a un trabajo. Hay dos situaciones diferentes en la administración de etiquetas de trabajos de Operaciones por lotes de S3 con esta acción de la API:
  + El trabajo no tiene etiquetas: puede añadir un conjunto de etiquetas a un trabajo (el trabajo no tiene etiquetas anteriores).
  + El trabajo tiene un conjunto de etiquetas existente: para modificar el conjunto de etiquetas existente, puede sustituirlo todo o realizar cambios en él recuperándolo mediante [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetJobTagging.html), modificar el conjunto de etiquetas y usar esta acción de la API para sustituir el conjunto de etiquetas con el que ha modificado.
**nota**  
Si envía esta solicitud con un conjunto de etiquetas vacío, Operaciones por lotes de S3 elimina el conjunto de etiquetas existente en el objeto. Si utiliza este método, se le cobrará por una solicitud de nivel 1 (`PUT`). Para obtener más información, consulte [Precios de Amazon S3](https://aws.amazon.com/s3/pricing).  
Para eliminar etiquetas existentes para su trabajo de Operaciones por lotes, se prefiere la acción `DeleteJobTagging`, ya que logra el mismo resultado sin incurrir en cargos.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteJobTagging.html) – elimina el conjunto de etiquetas asociado a un trabajo de Operaciones por lotes. 

# Creación de un trabajo de Operaciones por lotes con etiquetas de trabajo como etiquetado
<a name="batch-ops-tags-create"></a>

Puede etiquetar y controlar el acceso a los trabajos de Operaciones por lotes de Amazon S3 añadiendo *etiquetas*. Las etiquetas se pueden utilizar para identificar quién es el responsable de un trabajo de Operaciones por lotes. Puede crear trabajos con etiquetas asociadas a ellos y agregar etiquetas a los trabajos después de que se hayan creado. Para obtener más información, consulte [Controlar el acceso y etiquetar trabajos usando etiquetas](batch-ops-job-tags.md).

## Mediante AWS CLI
<a name="batch-ops-example-cli-job-tags-create-job"></a>

En el siguiente ejemplo de la AWS CLI, se crea un trabajo de `S3PutObjectCopy` de la herramienta de operaciones por lotes de S3 mediante el uso de etiquetas de trabajo como marca de trabajo. 

1. Seleccione la acción o el valor `OPERATION` que quiera que realice el trabajo de Operaciones por lotes y seleccione el valor `TargetResource`.

   ```
   read -d '' OPERATION <<EOF
   {
     "S3PutObjectCopy": {
       "TargetResource": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
     }
   }
   EOF
   ```

1. Identifique la tarea `TAGS` que quiera para el trabajo. En este caso, se aplican dos etiquetas, `department` y `FiscalYear`, con los valores `Marketing` y `2020` respectivamente.

   ```
   read -d '' TAGS <<EOF
   [
     {
       "Key": "department",
       "Value": "Marketing"
     },
     {
       "Key": "FiscalYear",
       "Value": "2020"
     }
   ]
   EOF
   ```

1. Especifique el valor `MANIFEST` para el trabajo de Operaciones por lotes.

   ```
   read -d '' MANIFEST <<EOF
   {
     "Spec": {
       "Format": "EXAMPLE_S3BatchOperations_CSV_20180820",
       "Fields": [
         "Bucket",
         "Key"
       ]
     },
     "Location": {
       "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/example_manifest.csv",
       "ETag": "example-5dc7a8bfb90808fc5d546218"
     }
   }
   EOF
   ```

1. Configure el valor `REPORT` para el trabajo de Operaciones por lotes.

   ```
   read -d '' REPORT <<EOF
   {
     "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
     "Format": "Example_Report_CSV_20180820",
     "Enabled": true,
     "Prefix": "reports/copy-with-replace-metadata",
     "ReportScope": "AllTasks"
   }
   EOF
   ```

1. Ejecute la acción `create-job` para crear su trabajo de Operaciones por lotes con los datos de entrada establecidos en los pasos previos.

   ```
   aws \
       s3control create-job \
       --account-id 123456789012 \
       --manifest "${MANIFEST//$'\n'}" \
       --operation "${OPERATION//$'\n'/}" \
       --report "${REPORT//$'\n'}" \
       --priority 10 \
       --role-arn arn:aws:iam::123456789012:role/batch-operations-role \
       --tags "${TAGS//$'\n'/}" \
       --client-request-token "$(uuidgen)" \
       --region us-west-2 \
       --description "Copy with Replace Metadata";
   ```

## Uso de AWS SDK para Java
<a name="batch-ops-examples-java-job-with-tags-create"></a>

Para crear un trabajo de operaciones por lotes de S3 con etiquetas mediante el AWS SDK para Java, puede usar el cliente de S3Control para configurar los parámetros del trabajo, incluida la ubicación del manifiesto, las operaciones del trabajo, la configuración de informes y las etiquetas con fines de organización y seguimiento.

Para ver ejemplos de cómo crear trabajos de operaciones por lotes de S3 con etiquetas mediante el AWS SDK para Java, consulte [Crear un trabajo por lotes para copiar objetos](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) en la *Referencia de la API de Amazon S3*.

# Eliminación de las etiquetas de un trabajo de Operaciones por lotes de S3
<a name="delete-job-tags"></a>

Puede utilizar estos ejemplos para eliminar las etiquetas de un trabajo de Operaciones por lotes de Amazon S3.

## Uso de AWS CLI
<a name="batch-ops-example-cli-job-tags-delete-job-tagging"></a>

En el siguiente ejemplo, se eliminan las etiquetas de un trabajo de la herramienta de operaciones por lotes mediante la AWS CLI.

```
aws \
    s3control delete-job-tagging \
    --account-id 123456789012 \
    --job-id Example-e25a-4ed2-8bee-7f8ed7fc2f1c \
    --region us-east-1
```

## Eliminación de las etiquetas de trabajo de un trabajo de Operaciones por lotes
<a name="batch-ops-examples-java-job-with-tags-delete"></a>

Para eliminar las etiquetas de un trabajo de operaciones por lotes de S3 mediante el AWS SDK para Java, puede usar el cliente de S3Control con el ID del trabajo para eliminar todas las etiquetas asociadas al trabajo de operaciones por lotes.

Para ver ejemplos de cómo eliminar etiquetas de trabajos con el AWS SDK para Java, consulte [Eliminar etiquetas de un trabajo por lotes](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_DeleteJobTagging_section.html) en la *Referencia de la API de Amazon S3*.

# Adición de etiquetas de trabajo en un trabajo de Operaciones por lotes existente
<a name="put-job-tags"></a>

Puede utilizar la operación [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutJobTagging.html) de la API para añadir etiquetas de trabajo a los trabajos de Operaciones por lotes de Amazon S3 existentes. Para obtener más información, consulte los ejemplos siguientes.

## Uso de AWS CLI
<a name="batch-ops-example-cli-job-tags-put-job-tagging"></a>

A continuación, se muestra un ejemplo de cómo utilizar `s3control put-job-tagging` para añadir etiquetas de trabajo a un trabajo de Operaciones por lotes de S3 mediante la AWS CLI. Para utilizar los ejemplos, sustituya *`user input placeholders`* por su propia información.

**nota**  
Si envía esta solicitud con un conjunto de etiquetas vacío, Operaciones por lotes elimina el conjunto de etiquetas existente en el objeto. Además, si utiliza este método, se le cobra por una solicitud de nivel 1 (`PUT`). Para obtener más información, consulte [Precios de Amazon S3](https://aws.amazon.com/s3/pricing).  
En lugar de ello, para eliminar etiquetas existentes para su trabajo de Operaciones por lotes, recomendamos la operación `DeleteJobTagging`, ya que logra el mismo resultado sin incurrir en cargos.

1. Identifique la tarea `TAGS` que quiera para el trabajo. En este caso, se aplican dos etiquetas, `department` y `FiscalYear`, con los valores `Marketing` y `2020` respectivamente.

   ```
   read -d '' TAGS <<EOF
   [
     {
       "Key": "department",
       "Value": "Marketing"
     },
     {
       "Key": "FiscalYear",
       "Value": "2020"
     }
   ]
   EOF
   ```

1. Ejecute el siguiente comando `put-job-tagging` con los parámetros necesarios:

   ```
   aws \
       s3control put-job-tagging \
       --account-id 123456789012 \
       --tags "${TAGS//$'\n'/}" \
       --job-id Example-e25a-4ed2-8bee-7f8ed7fc2f1c \
       --region us-east-1
   ```

## Uso de AWS SDK para Java
<a name="batch-ops-examples-java-job-with-tags-put"></a>

Para colocar etiquetas en un trabajo de operaciones por lotes de S3 mediante el AWS SDK para Java, puede utilizar el cliente de S3Control para agregar o actualizar etiquetas con pares clave-valor con fines de organización y seguimiento.

Para ver ejemplos de cómo poner etiquetas de trabajos con el AWS SDK para Java, consulte [Agregar etiquetas a un trabajo por lotes](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_PutJobTagging_section.html) en la *Referencia de la API de Amazon S3*.

# Obtención de las etiquetas de un trabajo de Operaciones por lotes de S3
<a name="get-job-tags"></a>

Para recuperar las etiquetas de un trabajo de Operaciones por lotes de Amazon S3, puede utilizar la operación `GetJobTagging` de la API. Para obtener más información, consulte los ejemplos siguientes.

## Mediante AWS CLI
<a name="batch-ops-example-cli-job-tags-get-job-tagging"></a>

En el siguiente ejemplo, se obtienen las etiquetas de un trabajo de la herramienta de operaciones por lotes mediante la AWS CLI. Para utilizar este ejemplo, sustituya *`user input placeholders`* por su propia información.

```
aws \
    s3control get-job-tagging \
    --account-id 123456789012 \
    --job-id Example-e25a-4ed2-8bee-7f8ed7fc2f1c \
    --region us-east-1
```

## Uso de AWS SDK para Java
<a name="batch-ops-examples-java-job-with-tags-get"></a>

Para obtener las etiquetas de un trabajo de operaciones por lotes de S3 mediante el AWS SDK para Java, puede usar el cliente de S3Control con el ID del trabajo para recuperar todas las etiquetas asociadas al trabajo de operaciones por lotes y devolverlas como una lista.

Para ver ejemplos de cómo obtener etiquetas de trabajos con el AWS SDK para Java, consulte [Obtener etiquetas de un trabajo por lotes](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_GetJobTagging_section.html) en la *Referencia de la API de Amazon S3*.

# Control de permisos para Operaciones por lotes mediante etiquetas de trabajo
<a name="batch-ops-job-tags-examples"></a>

Para ayudarle a administrar sus trabajos de Operaciones por lotes de Amazon S3, puede agregar *etiquetas de trabajo*. Las etiquetas de trabajo le permiten controlar el acceso a sus trabajos de Operaciones por lotes y hacer que las etiquetas se apliquen cuando se cree un trabajo. 

Puede aplicar hasta 50 etiquetas de trabajo a cada trabajo de Operaciones por lotes. Al usar etiquetas, puede establecer políticas pormenorizadas que restringen el conjunto de usuarios que pueden editar el trabajo. Las etiquetas de trabajo pueden 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. Además, puede exigir que las etiquetas se apliquen a todos los trabajos nuevos y especificar los pares clave-valor permitidos para las etiquetas. Puede expresar todas estas condiciones utilizando el mismo [lenguaje de política de AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html). Para obtener más información, consulte [Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) en la *Referencia de autorización de servicios*.

Para obtener más información sobre los permisos para las operaciones de la API de S3 por tipos de recursos de S3, consulte [Permisos necesarios para las operaciones de la API de Amazon S3](using-with-s3-policy-actions.md).

En el ejemplo siguiente se muestra cómo puede utilizar etiquetas de trabajo de Operaciones por lotes de S3 para conceder a los usuarios permiso para crear y editar solo los trabajos que se ejecutan en un departamento específico (por ejemplo: el departamento Finanzas o Conformidad). También puede asignar trabajos en función de la etapa de desarrollo con la que están relacionados, como Control de calidad o Producción.

En este ejemplo, se utilizan etiquetas de trabajo de Operaciones por lotes de S3 en las políticas de IAM con el fin de conceder a los usuarios permiso para crear y editar solo los trabajos que se ejecutan en su departamento. Los trabajos se asignan en función de la etapa de desarrollo con la que están relacionados, como Control de calidad o Producción. 

En los siguientes ejemplos, se utilizan los siguientes departamentos, cada uno de los cuales usa Operaciones por lotes de distinta forma:
+ Finanzas
+ Conformidad
+ Inteligencia de negocio
+ Diseño

**Topics**
+ [Control del acceso mediante la asignación de etiquetas a usuarios y recursos](#job-tags-examples-attaching-tags)
+ [Etiquetado de trabajos de Operaciones por lotes por etapa y aplicación de límites a la prioridad del trabajo](#tagging-jobs-by-stage-and-enforcing-limits-on-job-priority)

## Control del acceso mediante la asignación de etiquetas a usuarios y recursos
<a name="job-tags-examples-attaching-tags"></a>

En este escenario, los administradores están utilizando el [control de acceso basado en atributos (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html). ABAC es una estrategia de autorización de IAM que define los permisos adjuntando etiquetas a los usuarios y a los recursos de AWS.

A los usuarios y los trabajos se les asigna una de las siguientes etiquetas de departamento:

**Clave : valor**
+ `department : Finance`
+ `department : Compliance`
+ `department : BusinessIntelligence`
+ `department : Engineering`
**nota**  
Las claves y los valores de las etiquetas de trabajo distinguen entre mayúsculas y minúsculas.

Mediante la estrategia de control de acceso de ABAC, se concede a un usuario del departamento de Finanzas permiso para crear y administrar trabajos de Operaciones por lotes de S3 en el departamento al asociar la etiqueta `department=Finance` con el usuario.

Además, puede adjuntar una política administrada al usuario de IAM que permita a cualquier usuario de su empresa crear o modificar trabajos de Operaciones por lotes de S3 dentro de sus respectivos departamentos. 

La política de este ejemplo incluye tres instrucciones de políticas:
+ La primera instrucción de la política permite al usuario crear un trabajo de Operaciones por lotes siempre que la solicitud de creación de trabajo incluya una etiqueta de trabajo que coincida con su departamento respectivo. Esto se expresa utilizando la sintaxis `"${aws:PrincipalTag/department}"`, que se reemplaza por la etiqueta de departamento del usuario en el momento de la evaluación de políticas. La condición se cumple cuando el valor proporcionado para la etiqueta de departamento en la solicitud `("aws:RequestTag/department")` coincide con el departamento del usuario. 
+ La segunda instrucción de la política permite a los usuarios cambiar la prioridad de los trabajos o actualizar el estado de un trabajo siempre que el trabajo que está actualizando coincida con el departamento del usuario. 
+ La tercera instrucción permite a un usuario actualizar las etiquetas de un trabajo de Operaciones por lotes en cualquier momento a través de una solicitud `PutJobTagging`, siempre y cuando (1) se conserve su etiqueta de departamento y (2) el trabajo que esté actualizando se incluya en su departamento. 

------
#### [ JSON ]

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [
            {
                  "Effect": "Allow",
                  "Action": "s3:CreateJob",
                  "Resource": "*",
                  "Condition": {
                        "StringEquals": {
                              "aws:RequestTag/department": "${aws:PrincipalTag/department}"        
                }      
            }    
        },
            {
                  "Effect": "Allow",
                  "Action": [
                        "s3:UpdateJobPriority",
                        "s3:UpdateJobStatus"      
            ],
                  "Resource": "*",
                  "Condition": {
                        "StringEquals": {
                              "aws:ResourceTag/department": "${aws:PrincipalTag/department}"        
                }      
            }    
        },
            {
                  "Effect": "Allow",
                  "Action": "s3:PutJobTagging",
                  "Resource": "*",
                  "Condition": {
                        "StringEquals": {
                              "aws:RequestTag/department": "${aws:PrincipalTag/department}",
                              "aws:ResourceTag/department": "${aws:PrincipalTag/department}"        
                }      
            }    
        }  
    ]
}
```

------

## Etiquetado de trabajos de Operaciones por lotes por etapa y aplicación de límites a la prioridad del trabajo
<a name="tagging-jobs-by-stage-and-enforcing-limits-on-job-priority"></a>

Todos los trabajos de Operaciones por lotes de S3 tienen una prioridad numérica, que Amazon S3 utiliza para decidir en qué orden ejecutar los trabajos. En este ejemplo, se restringe la prioridad máxima que la mayoría de los usuarios pueden asignar a los trabajos, con rangos de prioridad más altos reservados para un conjunto limitado de usuarios privilegiados, de la siguiente manera:
+ Rango de prioridad de fase de control de calidad (bajo): 1-100
+ Rango de prioridad de la etapa de producción (alto): 1-300

Para ello, introduzca un nuevo conjunto de etiquetas que represente la etapa del trabajo:

**Clave : valor**
+ `stage : QA`
+ `stage : Production`

### Creación y actualización de trabajos de baja prioridad dentro de un departamento
<a name="creating-and-updating-low-priority-jobs"></a>

Esta política introduce dos nuevas restricciones a la creación y actualización de trabajos de Operaciones por lotes de S3, además de la restricción basada en departamentos:
+ Permite a los usuarios crear o actualizar trabajos en su departamento con una nueva condición que requiere que el trabajo incluya la etiqueta `stage=QA`.
+ Permite a los usuarios crear o actualizar la prioridad de un trabajo hasta una nueva prioridad máxima de 100.

```
{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
        {
        "Effect": "Allow",
        "Action": "s3:CreateJob",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:RequestTag/department": "${aws:PrincipalTag/department}",
                "aws:RequestTag/stage": "QA"
            },
            "NumericLessThanEquals": {
                "s3:RequestJobPriority": 100
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:UpdateJobStatus"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:ResourceTag/department": "${aws:PrincipalTag/department}"
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": "s3:UpdateJobPriority",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:ResourceTag/department": "${aws:PrincipalTag/department}",
                "aws:ResourceTag/stage": "QA"
            },
            "NumericLessThanEquals": {
                "s3:RequestJobPriority": 100
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": "s3:PutJobTagging",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:RequestTag/department" : "${aws:PrincipalTag/department}",
                "aws:ResourceTag/department": "${aws:PrincipalTag/department}",
                "aws:RequestTag/stage": "QA",
                "aws:ResourceTag/stage": "QA"
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": "s3:GetJobTagging",
        "Resource": "*"
    }
    ]
}
```

### Creación y actualización de trabajos de alta prioridad dentro de un departamento
<a name="creating-and-updating-high-priority-jobs"></a>

Es posible que un pequeño número de usuarios requiera la capacidad de crear trabajos de alta prioridad en Control de calidad o Producción. Para dar soporte a esta necesidad, cree una política administrada que se adapte a la política de baja prioridad de la sección anterior. 

Esta política hace lo siguiente: 
+ Permite a los usuarios crear o actualizar trabajos en su departamento con las etiquetas `stage=QA` o `stage=Production`.
+ Permite a los usuarios crear o actualizar la prioridad de un trabajo hasta un máximo de 300.

------
#### [ JSON ]

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
                "Effect": "Allow",
                "Action": "s3:CreateJob",
                "Resource": "*",
                "Condition": {
                      "ForAnyValue:StringEquals": {
                            "aws:RequestTag/stage": [
                                  "QA",
                                  "Production"        
                    ]      
                },
                      "StringEquals": {
                            "aws:RequestTag/department": "${aws:PrincipalTag/department}"      
                },
                      "NumericLessThanEquals": {
                            "s3:RequestJobPriority": 300      
                }    
            }  
        },
          {
                "Effect": "Allow",
                "Action": [
                      "s3:UpdateJobStatus"    
            ],
                "Resource": "*",
                "Condition": {
                      "StringEquals": {
                            "aws:ResourceTag/department": "${aws:PrincipalTag/department}"      
                }    
            }  
        },
          {
                "Effect": "Allow",
                "Action": "s3:UpdateJobPriority",
                "Resource": "*",
                "Condition": {
                      "ForAnyValue:StringEquals": {
                            "aws:ResourceTag/stage": [
                                  "QA",
                                  "Production"        
                    ]      
                },
                      "StringEquals": {
                            "aws:ResourceTag/department": "${aws:PrincipalTag/department}"      
                },
                      "NumericLessThanEquals": {
                            "s3:RequestJobPriority": 300      
                }    
            }  
        },
          {
                "Effect": "Allow",
                "Action": "s3:PutJobTagging",
                "Resource": "*",
                "Condition": {
                      "StringEquals": {
                            "aws:RequestTag/department": "${aws:PrincipalTag/department}",
                            "aws:ResourceTag/department": "${aws:PrincipalTag/department}"      
                },
                      "ForAnyValue:StringEquals": {
                            "aws:RequestTag/stage": [
                                  "QA",
                                  "Production"        
                    ],
                            "aws:ResourceTag/stage": [
                                  "QA",
                                  "Production"        
                    ]      
                }    
            }  
        }  
    ]
}
```

------

# Administración del Bloqueo de objetos en S3 mediante Operaciones por lotes de S3
<a name="managing-object-lock-batchops"></a>

Puede utilizar Operaciones por lotes de S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. Operaciones por lotes de S3 puede realizar una sola operación en las listas de objetos de Amazon S3 que especifique. Un solo trabajo puede realizar una operación especificada en miles de millones de objetos que contiene exabytes de datos. Amazon S3 realiza un seguimiento del avance, envía notificaciones y guarda un informe de finalización de todas las acciones, por lo que proporciona una experiencia sin servidor, auditable y completamente administrada. Puede utilizar Operaciones por lotes de S3 a través de la consola de Amazon S3, la AWS CLI, los AWS SDK o la API de REST de Amazon S3.

Con el bloqueo de objetos de S3 puede colocar una retención legal en una versión de objeto. Al igual que un periodo de retención, la retención legal impide que se sobrescriba o elimine una versión de un objeto. Sin embargo, una retención legal no tiene asociado un periodo de retención y sigue vigente hasta que dicha retención se elimine. Para obtener más información, consulte [Bloqueo de objetos de retención legal en S3](batch-ops-legal-hold.md).

Para utilizar Operaciones por lotes de S3 con Bloqueo de objetos para agregar retenciones legales a muchos objetos de Amazon S3 al mismo tiempo, consulte los siguientes temas.

**Topics**
+ [Habilitación de Bloqueo de objetos en S3 mediante Operaciones por lotes de S3](batch-ops-object-lock.md)
+ [Configuración de la retención de Bloqueo de objetos mediante Operaciones por lotes](batch-ops-object-lock-retention.md)
+ [Uso de operaciones por lotes de S3 con el modo de conformidad de la retención de bloqueo de objetos de S3](batch-ops-compliance-mode.md)
+ [Uso de Operaciones por lotes de S3 con el modo de control de la retención de Bloqueo de objetos en S3](batch-ops-governance-mode.md)
+ [Uso de Operaciones por lotes de S3 para desactivar las retenciones legales de Bloqueo de objetos de S3](batch-ops-legal-hold-off.md)

# Habilitación de Bloqueo de objetos en S3 mediante Operaciones por lotes de S3
<a name="batch-ops-object-lock"></a>

Puede utilizar Operaciones por lotes de Amazon S3 con Bloqueo de objetos de S3 para administrar la retención o habilitar una retención legal para varios objetos de Amazon S3 a la vez. Especifique la lista de objetos de destino en el manifiesto y envíela a Operaciones por lotes para su finalización. Para obtener más información, consulte [Retención de bloqueo de objetos S3](batch-ops-retention-date.md) y [Bloqueo de objetos de retención legal en S3](batch-ops-legal-hold.md). 

En los siguientes ejemplos, se muestra cómo crear un rol de AWS Identity and Access Management (IAM) con permisos de Operaciones por lotes de S3 y actualizar los permisos del rol para crear trabajos que habilitan Bloqueo de objetos. También debe tener un manifiesto `CSV` que identifique los objetos para su trabajo de Operaciones por lotes de S3. Para obtener más información, consulte [Especificar un manifiesto](batch-ops-create-job.md#specify-batchjob-manifest).

Para utilizar los siguientes ejemplos, reemplace los *`user input placeholders`* con su propia información. 

## Mediante AWS CLI
<a name="batchops-example-cli-object-lock"></a>

1. Cree un rol de IAM y asigne permisos de Operaciones por lotes de S3 para su ejecución.

   Este paso es necesario para todos los trabajos de Operaciones por lotes de S3.

   ```
   export AWS_PROFILE='aws-user'
   
   read -d '' batch_operations_trust_policy <<EOF
   {
     "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": [
             "batchoperations.s3.amazonaws.com"
           ]
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   EOF
   aws iam create-role --role-name batch_operations-objectlock \
   --assume-role-policy-document "${batch_operations_trust_policy}"
   ```

1. Configure Operaciones por lotes de S3 con Bloqueo de objetos en S3 para su ejecución.

   En este paso, permite que el rol haga lo siguiente:

   1. Ejecute el bloqueo de objetos en el bucket de S3 que contenga los objetos de destino en los que desee ejecutar Operaciones por lotes.

   1. Lea el bucket de S3 donde se encuentran el archivo CSV de manifiesto y los objetos.

   1. Escriba los resultados del trabajo de Operaciones por lotes de S3 en el bucket de informes.

   ```
   read -d '' batch_operations_permissions <<EOF
   {
       "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "s3:GetBucketObjectLockConfiguration",
               "Resource": [
                   "arn:aws:s3:::{{amzn-s3-demo-manifest-bucket}}"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::{{amzn-s3-demo-manifest-bucket}}/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::{{amzn-s3-demo-completion-report-bucket}}/*"
               ]
           }
       ]
   }
   EOF
   
   aws iam put-role-policy --role-name batch_operations-objectlock \
   --policy-name object-lock-permissions \
   --policy-document "${batch_operations_permissions}"
   ```

## Uso de AWS SDK para Java
<a name="batchops-examples-java-object-lock"></a>

Puede crear un rol de IAM con permisos de operaciones por lotes de S3 y actualizar los permisos de rol para crear trabajos que habilitan el bloqueo de objetos mediante AWS SDK para Java. También debe tener un manifiesto `CSV` que identifique los objetos para su trabajo de Operaciones por lotes de S3. Para obtener más información, consulte [Especificar un manifiesto](batch-ops-create-job.md#specify-batchjob-manifest).

Siga estos pasos:

1. Cree un rol de IAM y asigne permisos de Operaciones por lotes de S3 para su ejecución. Este paso es necesario para todos los trabajos de Operaciones por lotes de S3.

1. Configure Operaciones por lotes de S3 con Bloqueo de objetos en S3 para su ejecución.

   Permite que el rol realice lo siguiente:

   1. Ejecute el bloqueo de objetos en el bucket de S3 que contenga los objetos de destino en los que desee ejecutar Operaciones por lotes.

   1. Lea el bucket de S3 donde se encuentran el archivo CSV de manifiesto y los objetos.

   1. Escriba los resultados del trabajo de Operaciones por lotes de S3 en el bucket de informes.

Para ver un ejemplo de código que muestra cómo crear un rol de IAM para habilitar el bloqueo de objetos de S3 mediante operaciones por lotes de S3 con el AWS SDK para Java, consulte [CreateObjectLockRole.java](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javav2/example_code/s3/src/main/java/com/example/s3/batch/CreateObjectLockRole.java) en los *ejemplos de código del AWS SDK para Java 2.x*.

# Configuración de la retención de Bloqueo de objetos mediante Operaciones por lotes
<a name="batch-ops-object-lock-retention"></a>

Puede utilizar Operaciones por lotes de Amazon S3 con Bloqueo de objetos de S3 para administrar la retención de muchos objetos de Amazon S3 al mismo tiempo. Especifique la lista de objetos de destino en el manifiesto y envíela a Operaciones por lotes para su finalización. Para obtener más información, consulte [Retención de bloqueo de objetos S3](batch-ops-retention-date.md) y [Bloqueo de objetos de retención legal en S3](batch-ops-legal-hold.md). 

En los ejemplos siguientes, se muestra cómo crear un rol de AWS Identity and Access Management (IAM) con permisos de Operaciones por lotes de S3 y actualizar los permisos del rol para incluir los permisos `s3:PutObjectRetention` de modo que pueda ejecutar la retención de Bloqueo de objetos de S3 en los objetos del bucket de manifiesto. También debe tener un manifiesto `CSV` que identifique los objetos para su trabajo de Operaciones por lotes de S3. Para obtener más información, consulte [Especificar un manifiesto](batch-ops-create-job.md#specify-batchjob-manifest).

Para utilizar los siguientes ejemplos, reemplace los *`user input placeholders`* con su propia información. 

## Mediante AWS CLI
<a name="batch-ops-cli-object-lock-retention-example"></a>

En el siguiente ejemplo de AWS CLI, se muestra cómo utilizar Operaciones por lotes para aplicar la retención de Bloqueo de objetos de S3 en varios objetos.

```
export AWS_PROFILE='aws-user'

read -d '' retention_permissions <<EOF
{
    "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObjectRetention"
            ],
            "Resource": [
                "arn:aws:s3:::{{amzn-s3-demo-manifest-bucket}}/*"
            ]
        }
    ]
}
EOF

aws iam put-role-policy --role-name batch_operations-objectlock --policy-name retention-permissions --policy-document "${retention_permissions}"
```

## Uso de AWS SDK para Java
<a name="batch-ops-examples-java-object-lock-retention"></a>

Para ver ejemplos de cómo usar operaciones por lotes para aplicar la retención de bloqueo de objetos de S3 en varios objetos con el AWS SDK para Java, consulte [Use CreateJob with an AWS SDK or CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) en la *Referencia de la API de Amazon S3*.

# Uso de operaciones por lotes de S3 con el modo de conformidad de la retención de bloqueo de objetos de S3
<a name="batch-ops-compliance-mode"></a>

El siguiente ejemplo se basa en los ejemplos anteriores de creación de una política de confianza y en establecer permisos de configuración de Operaciones por lotes de S3 y Bloqueo de objetos en S3 en sus objetos. En este ejemplo se establece el modo de retención en `COMPLIANCE` y la `retain until date` del 1 de enero de 2025. En este ejemplo, se crea un trabajo que apunta a objetos del bucket del manifiesto e informa de los resultados en el bucket de informes que ha identificado.

Para utilizar los siguientes ejemplos, reemplace los *`user input placeholders`* con su propia información. 

## Mediante AWS CLI
<a name="batch-ops-cli-object-lock-compliance-example"></a>

En los siguientes ejemplos de AWS CLI, se muestra cómo utilizar Operaciones por lotes para aplicar el modo de cumplimiento de retención de Bloqueo de objetos de S3 en varios objetos.

**Example — Establecimiento del modo de cumplimiento de la retención de Bloqueo de objetos de S3 en varios objetos**  

```
export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectRetention": {
    "Retention": {
      "RetainUntilDate":"2025-01-01T00:00:00",
      "Mode":"COMPLIANCE"
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/compliance-objects-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::ReportBucket",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "amzn-s3-demo-completion-report-bucket/compliance-objects-batch-operations",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Set compliance retain-until to 1 Jul 2030";
```

**Example — Ampliación del `retain until date` del modo de `COMPLIANCE` hasta el 15 de enero de 2025**  
El siguiente ejemplo extiende la `COMPLIANCE` del modo de `retain until date` hasta el 15 de enero de 2025.  

```
export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectRetention": {
    "Retention": {
      "RetainUntilDate":"2025-01-15T00:00:00",
      "Mode":"COMPLIANCE"
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/compliance-objects-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "reports/compliance-objects-batch_operations",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Extend compliance retention to 15 Jan 2025";
```

## Uso de AWS SDK para Java
<a name="batch-ops-examples-java-object-lock-compliance"></a>

En los ejemplos siguientes del AWS SDK para Java se muestra cómo utilizar operaciones por lotes para aplicar el modo de cumplimiento de la retención de bloqueo de objetos de S3 en varios objetos, incluida la configuración del modo de retención en CUMPLIMIENTO con una fecha límite de retención y la ampliación de la fecha límite de retención del modo de CUMPLIMIENTO.

Para ver ejemplos de cómo usar operaciones por lotes para aplicar el modo de cumplimiento de retención de bloqueo de objetos de S3 en varios objetos con el AWS SDK para Java, consulte [Use CreateJob with an AWS SDK or CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) en la *Referencia de la API de Amazon S3*.

# Uso de Operaciones por lotes de S3 con el modo de control de la retención de Bloqueo de objetos en S3
<a name="batch-ops-governance-mode"></a>

El siguiente ejemplo se basa en el ejemplo anterior de creación de una política de confianza y en establecer permisos de configuración de Operaciones por lotes de S3 y Bloqueo de objetos en S3. Este ejemplo muestra cómo aplicar la gobernanza de la retención de Bloqueo de objetos de S3 con la `retain until date` del 30 de enero de 2025 en varios objetos. Crea un trabajo de Operaciones por lotes que utiliza el bucket del manifiesto e informa de los resultados en el bucket de informes.

Para utilizar los siguientes ejemplos, reemplace los *`user input placeholders`* con su propia información. 

## Uso de AWS CLI
<a name="batch-ops-cli-object-lock-governance-example"></a>

En los siguientes ejemplos de AWS CLI, se muestra cómo utilizar Operaciones por lotes para aplicar el modo de gobernanza de retención de Bloqueo de objetos de S3 en varios objetos.

**Example — Aplicación de la gobernanza de retención de Bloqueo de objetos de S3 en varios objetos con fecha de retención hasta el 30 de enero de 2025**  

```
export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectRetention": {
    "Retention": {
      "RetainUntilDate":"2025-01-30T00:00:00",
      "Mode":"GOVERNANCE"
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/governance-objects-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucketT",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "reports/governance-objects",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Put governance retention";
```

**Example — Omisión de la gobernanza de retención en varios objetos**  
El siguiente ejemplo se basa en el ejemplo anterior de creación de una política de confianza y en establecer permisos de configuración de Operaciones por lotes de S3 y Bloqueo de objetos en S3. Muestra cómo omitir el control de retención en varios objetos y crea un trabajo de Operaciones por lotes que utiliza el bucket del manifiesto e informa de los resultados en el bucket de informes.  

```
export AWS_PROFILE='aws-user'

read -d '' bypass_governance_permissions <<EOF
{
    "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:BypassGovernanceRetention"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        }
    ]
}
EOF

aws iam put-role-policy --role-name batch-operations-objectlock --policy-name bypass-governance-permissions --policy-document "${bypass_governance_permissions}"

export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectRetention": {
    "BypassGovernanceRetention": true,
    "Retention": {
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/governance-objects-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "reports/batch_operations-governance",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Remove governance retention";
```

## Uso de AWS SDK para Java
<a name="batch-ops-examples-java-object-lock-governance"></a>

En los ejemplos siguientes del AWS SDK para Java, se muestra cómo aplicar la gobernanza de la retención del bloqueo de objetos de S3 con la `retain until date` establecida en el 30 de enero de 2025 en varios objetos, incluida la aplicación de la gobernanza de la retención del bloqueo de objetos en varios objetos con una fecha límite de retención y omitiendo la gobernanza de retención en varios objetos.

Para ver ejemplos de cómo usar operaciones por lotes con el modo de gobernanza de retención de bloqueo de objetos de S3 con el AWS SDK para Java, consulte [Use CreateJob with an AWS SDK or CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) en la *Referencia de la API de Amazon S3*.

# Uso de Operaciones por lotes de S3 para desactivar las retenciones legales de Bloqueo de objetos de S3
<a name="batch-ops-legal-hold-off"></a>

El siguiente ejemplo se basa en los ejemplos anteriores de creación de una política de confianza y en establecer permisos de configuración de Operaciones por lotes de S3 y Bloqueo de objetos en S3. Este ejemplo muestra cómo deshabilitar la retención legal de Bloqueo de objetos mediante Operaciones por lotes. 

En el ejemplo se actualiza primero el rol para conceder permisos `s3:PutObjectLegalHold`, se crea un trabajo de Operaciones por lotes que desactiva (quita) la retención legal de los objetos identificados en el manifiesto e informa al respecto.

Para utilizar los siguientes ejemplos, reemplace los *`user input placeholders`* con su propia información. 

## Mediante AWS CLI
<a name="batch-ops-cli-object-lock-legalhold-example"></a>

En los siguientes ejemplos de AWS CLI, se muestra cómo utilizar Operaciones por lotes para desactivar las retenciones legales de Bloqueo de objetos de S3 en varios objetos.

**Example — Actualizaciones del rol para conceder permisos `s3:PutObjectLegalHold`**  

```
export AWS_PROFILE='aws-user'

read -d '' legal_hold_permissions <<EOF
{
    "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObjectLegalHold"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        }
    ]

EOF

aws iam put-role-policy --role-name batch_operations-objectlock --policy-name legal-hold-permissions --policy-document "${legal_hold_permissions}"
```

**Example — Desactivación de la retención legal**  
El siguiente ejemplo desactiva la retención legal.  

```
export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectLegalHold": {
    "LegalHold": {
      "Status":"OFF"
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/legalhold-object-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "reports/legalhold-objects-batch_operations",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Turn off legal hold";
```

## Uso de AWS SDK para Java
<a name="batch-ops-examples-java-object-lock-legalhold"></a>

Para ver ejemplos de cómo usar operaciones por lotes de S3 para desactivar la retención legal del bloqueo de objetos de S3 con el AWS SDK para Java, consulte [Use CreateJob with an AWS SDK or CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) en la *Referencia de la API de Amazon S3*.

# Tutorial: vídeos de transcodificación por lotes con Operaciones por lotes de S3
<a name="tutorial-s3-batchops-lambda-mediaconvert-video"></a>

Los usuarios de vídeo utilizan dispositivos de todas las formas, tamaños y cosechas para disfrutar del contenido multimedia. Esto supone un desafío para los creadores de contenido y distribuidores. En lugar de tener un formato de tamaño único, los vídeos deben abarcar una amplia gama de tamaños, formatos y velocidades de bits. Esta tarea de conversión es aún más desafiante cuando se cuenta con una gran cantidad de vídeos que se deben convertir.

AWS ofrece un método para crear una arquitectura distribuida y escalable que hace lo siguiente: 
+ Ingesta vídeos de entrada
+ Procesa los vídeos para reproducirlos en una amplia gama de dispositivos
+ Almacena los archivos multimedia transcodificados
+ Entrega los archivos multimedia de salida para satisfacer la demanda

Cuando tiene repositorios de vídeo extensos y almacenados en Amazon S3, puede transcodificar estos vídeos desde sus formatos fuente a varios tipos de archivo en el tamaño, la resolución o el formato necesarios para un reproductor de vídeo o dispositivo en particular. En concreto, [Operaciones por lotes de S3](https://aws.amazon.com/s3/features/batch-operations) le proporciona una solución para invocar funciones de AWS Lambda para los vídeos de entrada existentes en un bucket fuente S3. A continuación, las funciones de Lambda llaman a [AWS Elemental MediaConvert](https://aws.amazon.com/mediaconvert/) para realizar tareas de transcodificación de vídeo a gran escala. Los archivos multimedia de salida convertidos se almacenan en un bucket de destino de S3. 

![\[Un diagrama de flujo de trabajo de transcodificación por lotes.\]](http://docs.aws.amazon.com/es_es/AmazonS3/latest/userguide/images/batchops-example-image-global.png)


**Objetivo**  
En este tutorial, aprenderá a configurar operaciones por lotes de S3 para invocar una función de Lambda para la transcodificación por lotes de vídeos almacenados en un bucket fuente de S3. La función de Lambda llama a MediaConvert para transcodificar los vídeos. Las salidas para cada vídeo en el bucket fuente de S3 son las que se muestran a continuación:
+ Una transmisión de velocidad de bits adaptable [HTTP Live Streaming (HLS)](http://wikipedia.org/wiki/HTTP_Live_Streaming) para la replicación en dispositivos de varios tamaños y anchos de banda variables
+ Un archivo de vídeo MP4
+ Imágenes en miniatura recopiladas a intervalos

**Topics**
+ [Requisitos previos](#batchops-s3-prerequisites)
+ [Paso 1: Cree un bucket de S3 para los archivos multimedia](#batchops-s3-step1)
+ [Paso 2: crear un rol de IAM para MediaConvert](#batchops-s3-step2)
+ [Paso 3: crear un rol de IAM para su función de Lambda.](#batchops-s3-step3)
+ [Paso 4: Cree una función de Lambda para la transcodificación de vídeo](#batchops-s3-step4)
+ [Paso 5: Configure un inventario de Amazon S3 para un bucket fuente de S3](#batchops-s3-step5)
+ [Paso 6: creación de un rol de IAM para Operaciones por Batch de S3](#batchops-s3-step6)
+ [Paso 7: configurar y ejecutar el trabajo de la herramienta de operaciones por lotes de S3](#batchops-s3-step7)
+ [Paso 8: Compruebe los archivos multimedia de salida desde su bucket de destino S3](#batchops-s3-step8)
+ [Paso 9: limpiar](#batchops-s3-step9)
+ [Siguientes pasos](#batchops-s3-next-steps)

## Requisitos previos
<a name="batchops-s3-prerequisites"></a>

Antes de comenzar este tutorial, necesita tener un bucket fuente de Amazon S3 (por ejemplo, `amzn-s3-demo-source-bucket`) con vídeos que se transcodificarán ya almacenados en él.

Si lo desea, puede darle otro nombre al bucket. Para obtener más información acerca de los nombres de bucket de Amazon S3, consulte [Reglas de nomenclatura de buckets de uso general](bucketnamingrules.md).

Para el bucket fuente de S3, mantenga la configuración relacionada con la **configuración del bloqueo del acceso público para este bucket** establecida en los valores predeterminados (la opción de **bloqueo de *todo* el acceso público** está habilitada). Para obtener más información, consulte [Creación de un bucket de uso general](create-bucket-overview.md). 

Si quiere obtener más información para cargar vídeos en el bucket fuente de S3, consulte [Carga de objetos](upload-objects.md). Cuando carga muchos vídeos grandes a S3, también puede usar [Aceleración de transferencias de Amazon S3](https://aws.amazon.com/s3/transfer-acceleration) para configurar transferencias de archivos rápidas y seguras. Aceleración de transferencias puede acelerar la carga de vídeo en su bucket de S3 para transferir a larga distancia vídeos más grandes. Para obtener más información, consulte [Configuración de transferencias de archivos rápidas y seguras con Aceleración de transferencias de Amazon S3](transfer-acceleration.md). 

## Paso 1: Cree un bucket de S3 para los archivos multimedia
<a name="batchops-s3-step1"></a>

En este paso, creará un bucket de destino de S3 para almacenar archivos multimedia de salida convertidos. También se crea una configuración de uso compartido de recursos fuente cruzado (CORS) para permitir el acceso fuente cruzado a los archivos multimedia transcodificados almacenados en el bucket de destino de S3. 

**Topics**
+ [Cree un bucket para los archivos multimedia de salida](#batchops-s3-step1-create-bucket)
+ [Agregar una configuración CORS a un bucket de salida de S3](#batchops-s3-step1-cors)

### Cree un bucket para los archivos multimedia de salida
<a name="batchops-s3-step1-create-bucket"></a>



1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets**.

1. Elija **Crear bucket**. 

1. En **Nombre del bucket**, ingrese el nombre del bucket (por ejemplo, `amzn-s3-demo-destination-bucket1`). 

1. En **Región**, elija la Región de AWS en la que desea que se encuentre el bucket. 

1. Para garantizar el acceso público a los archivos multimedia de salida, en **Configuración de Bloquear acceso público para este bucket**, desactive **Bloquear *todo* acceso público**. 
**aviso**  
Antes de completar este paso, consulte [Bloquear el acceso público a su almacenamiento de Amazon S3](access-control-block-public-access.md) para asegurarse de que comprende y acepta los riesgos que implica otorgar el acceso público. Cuando desactiva la configuración de Block Public Access para que el bucket sea público, cualquier usuario de Internet puede acceder al bucket. Le recomendamos que bloquee todo el acceso público a sus buckets.  
Si no desea borrar la configuración de Block Public Access, puede utilizar Amazon CloudFront para entregar los archivos multimedia transcodificados a los lectores (usuarios finales). Para obtener más información, consulte [Tutorial: Alojamiento de video en streaming bajo demanda con Amazon S3, Amazon CloudFront y Amazon Route 53](tutorial-s3-cloudfront-route53-video-streaming.md). 

1. Seleccione la casilla de verificación junto a **I acknowledge that the current settings may result in this bucket and the objects within becoming public (Reconozco que la configuración actual podría dar lugar a que este bucket y los objetos dentro se conviertan en públicos)**.

1. Mantenga la configuración restante establecida en los valores predeterminados. 

1. Elija **Crear bucket**.

### Agregar una configuración CORS a un bucket de salida de S3
<a name="batchops-s3-step1-cors"></a>

La configuración JSON CORS define una manera para que las aplicaciones web cliente (reproductores de vídeo en este contexto) que estén cargadas en un dominio puedan reproducir archivos multimedia de salida y transcodificados en un dominio diferente. 

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets**.

1. En la lista **Buckets**, busque y elija el nombre del bucket que creó anteriormente (por ejemplo, `amzn-s3-demo-destination-bucket1`).

1. Elija la pestaña **Permisos**.

1. En la sección **Compartir recursos entre orígenes (CORS)**, elija **Editar**.

1. En el cuadro de texto de configuración CORS, copie y pegue la siguiente configuración CORS.

   La configuración de CORS debe estar en formato JSON. En este ejemplo, el atributo `AllowedOrigins` usa el carácter de comodín (`*`) para especificar todos los orígenes. Si conoce su origen específico, puede restringir el atributo `AllowedOrigins` a la URL específica de su reproductor. Para obtener más información sobre la configuración y otros atributos, consulte [Elementos de una configuración de CORS](ManageCorsUsing.md).

   ```
   [
       {
           "AllowedOrigins": [
               "*"
           ],
           "AllowedMethods": [
               "GET"
           ],
           "AllowedHeaders": [
               "*"
           ],
           "ExposeHeaders": []
   
       }
   ]
   ```

1. Seleccione **Save changes (Guardar cambios)**.

## Paso 2: crear un rol de IAM para MediaConvert
<a name="batchops-s3-step2"></a>

Para utilizar AWS Elemental MediaConvert para transcodificar los vídeos de entrada almacenados en el bucket de S3, debe tener un rol de servicio de AWS Identity and Access Management (IAM) para otorgar permisos a MediaConvert para leer y escribir archivos de vídeo desde los buckets de origen y de destino de S3. Cuando ejecuta trabajos de transcodificación, la consola de MediaConvert utiliza este rol. 

**Para crear un rol de IAM para MediaConvert**

1. Puede crear un rol de IAM con un nombre de rol que usted elija (por ejemplo, **tutorial-mediaconvert-role**). Para crear este rol, siga los pasos que se detallan en [Crear el rol de MediaConvert en IAM (consola)](https://docs.aws.amazon.com/mediaconvert/latest/ug/creating-the-iam-role-in-iam.html) en la *Guía del usuario de AWS Elemental MediaConvert*.

1. Después de crear el rol de IAM para MediaConvert, en la lista de **roles**, elija el nombre del rol de MediaConvert que ha creado (por ejemplo, **tutorial-mediaconvert-role**).

1. En la página **Summary** (Resumen), copie el **ARN de rol**, que comienza con `arn:aws:iam::`, y guarde el ARN para utilizarlo más tarde. 

   Para obtener más información sobre los ARN, consulte [Nombres de recursos de Amazon (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) en la *AWS Referencia general*. 

## Paso 3: crear un rol de IAM para su función de Lambda.
<a name="batchops-s3-step3"></a>

Para transcodificar vídeos por lotes con MediaConvert y operaciones por lotes de S3, necesita tener una función de Lambda para conectar estos dos servicios a fin de convertir vídeos. Esta función de Lambda necesita tener un rol de IAM que le otorgue permisos para acceder a MediaConvert y a las operaciones por lotes de S3. 

**Topics**
+ [Cree un rol de IAM para su función de Lambda](#batchops-s3-step3-role)
+ [Incruste una política en línea para el rol de IAM de su función de Lambda](#batchops-s3-step3-inline-policy)

### Cree un rol de IAM para su función de Lambda
<a name="batchops-s3-step3-role"></a>

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación izquierdo, elija **Roles** y luego **Crear rol**. 

1. Elija el tipo de rol del **servicio de AWS** y luego, en **Casos de uso comunes**, elija **Lambda**. 

1. Elija **Siguiente: permisos**. 

1. En la página **Attach Permissions policies (Adjuntar políticas de permisos)**, ingrese **AWSLambdaBasicExecutionRole** en el cuadro **Filter policies (Filtrar políticas)**. Para adjuntar la política administrada **AWSLambdaBasicExecutionRole** a este rol a fin de otorgar permisos de escritura a Amazon CloudWatch Logs, seleccione la casilla de verificación junto a **AWSLambdaBasicExecutionRole**.

1. Elija **Siguiente**.

1. En **Nombre del rol**, ingrese **tutorial-lambda-transcode-role**.

1. (Opcional) Agregue etiquetas a la política administrada.

1. Elija **Create role** (Crear rol).

### Incruste una política en línea para el rol de IAM de su función de Lambda
<a name="batchops-s3-step3-inline-policy"></a>

Debe utilizar una política en línea para otorgar permisos al recurso MediaConvert necesario para la ejecución de la función de Lambda.

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación izquierdo, elija **Roles**. 

1. En la lista **Roles**, elija el nombre del rol de IAM que ha creado anteriormente para la función de Lambda (por ejemplo, **tutorial-lambda-transcode-role**).

1. Elija la pestaña **Permisos**.

1. Elija **Add inline policy** (Agregar política insertada).

1. Elija la pestaña **JSON** y luego, copie y pegue la siguiente política JSON.

   Reemplace el valor ARN de ejemplo de `Resource` en la política JSON con el ARN del rol de IAM para MediaConvert que creó en el [Paso 2](#batchops-s3-step2) (por ejemplo, **tutorial-mediaconvert-role**).

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "logs:CreateLogGroup",
                   "logs:CreateLogStream",
                   "logs:PutLogEvents"
               ],
               "Resource": "*",
               "Effect": "Allow",
               "Sid": "Logging"
           },
           {
               "Action": [
                   "iam:PassRole"
               ],
               "Resource": [
                   "arn:aws:iam::111122223333:role/tutorial-mediaconvert-role"
               ],
               "Effect": "Allow",
               "Sid": "PassRole"
           },
           {
               "Action": [
                   "mediaconvert:*"
               ],
               "Resource": [
                   "*"
               ],
               "Effect": "Allow",
               "Sid": "MediaConvertService"
           },
           {
               "Action": [
                   "s3:*"
               ],
               "Resource": [
                   "*"
               ],
               "Effect": "Allow",
               "Sid": "S3Service"
           }
       ]
   }
   ```

------

1. Elija **Review Policy** (Revisar la política).

1. En **Name** (Nombre), ingrese **tutorial-lambda-policy**.

1. Seleccione **Crear política**.

   Una vez que cree una política en línea, se integra automáticamente en el rol de IAM de su función de Lambda.

## Paso 4: Cree una función de Lambda para la transcodificación de vídeo
<a name="batchops-s3-step4"></a>

En esta sección del tutorial, crea una función de Lambda con el SDK para Python a fin de integrarse con las operaciones por lote de S3 y MediaConvert. Para comenzar a transcodificar los vídeos ya almacenados en el bucket fuente de S3, debe ejecutar un trabajo de operaciones por lote de S3 que invoca directamente la función de Lambda para cada vídeo del bucket fuente de S3. A continuación, la función de Lambda envía un trabajo de transcodificación para cada vídeo a MediaConvert.

**Topics**
+ [Escriba el código de la función de Lambda y cree un paquete de implementación](#batchops-s3-step4-write-function)
+ [Crear una función de Lambda con un rol de ejecución (consola)](#batchops-s3-step4-create-function)
+ [Implemente su función de Lambda con archivos.zip y configure la función de Lambda (consola)](#batchops-s3-step4-deploy-function)

### Escriba el código de la función de Lambda y cree un paquete de implementación
<a name="batchops-s3-step4-write-function"></a>

1. En el equipo local, cree un archivo con el nombre `batch-transcode`.

1. En la carpeta `batch-transcode`, cree un archivo con la configuración de trabajo de JSON. Por ejemplo, puede utilizar la configuración que se proporcionó en esta sección y nombrar al archivo `job.json`. 

   Un archivo `job.json` especifica lo siguiente: 
   + Qué archivos transcodificar
   + Cómo quiere transcodificar sus vídeos de entrada
   + Qué archivos multimedia de salida desea crear
   + Cómo nombrar a los archivos transcodificados
   + Dónde guardar los archivos transcodificados
   + Qué características avanzadas aplicar, etc.

   En este tutorial, utilizamos el archivo `job.json` para crear las siguientes salidas para cada vídeo en el bucket fuente de S3:
   + Una transmisión de velocidad de bits adaptable HTTP Live Streaming (HLS) para la replicación en dispositivos de diferentes tamaños y con varias bandas anchas
   + Un archivo de vídeo MP4
   + Imágenes en miniatura recopiladas a intervalos

   Este archivo `job.json` de ejemplo utiliza la velocidad de bits variable definida en función de la calidad (QVBR) para optimizar la calidad del vídeo. La salida HLS es compatible con Apple (audio sin mezcla de vídeo, duración de segmento adecuada de 6 segundos y calidad de vídeo optimizada a través de QVBR automático). 

   Si no desea utilizar la configuración de ejemplo que se proporciona aquí, puede generar una especificación de `job.json` según su caso de uso. Para garantizar la coherencia entre las salidas, asegúrese de que los archivos de entrada tienen configuraciones de vídeo y audio similares. Cree automatizaciones separadas (única configuración de `job.json`) para cualquier archivo de entrada con diferentes configuraciones de vídeo y audio. Para obtener más información, consulte [Ejemplos de configuración de tareas de AWS Elemental MediaConvert en JSON](https://docs.aws.amazon.com/mediaconvert/latest/ug/example-job-settings.html) en la *Guía del usuario de AWS Elemental MediaConvert*. 

   ```
   {
     "OutputGroups": [
       {
         "CustomName": "HLS",
         "Name": "Apple HLS",
         "Outputs": [
           {
             "ContainerSettings": {
               "Container": "M3U8",
               "M3u8Settings": {
                 "AudioFramesPerPes": 4,
                 "PcrControl": "PCR_EVERY_PES_PACKET",
                 "PmtPid": 480,
                 "PrivateMetadataPid": 503,
                 "ProgramNumber": 1,
                 "PatInterval": 0,
                 "PmtInterval": 0,
                 "TimedMetadata": "NONE",
                 "VideoPid": 481,
                 "AudioPids": [
                   482,
                   483,
                   484,
                   485,
                   486,
                   487,
                   488,
                   489,
                   490,
                   491,
                   492
                 ]
               }
             },
             "VideoDescription": {
               "Width": 640,
               "ScalingBehavior": "DEFAULT",
               "Height": 360,
               "TimecodeInsertion": "DISABLED",
               "AntiAlias": "ENABLED",
               "Sharpness": 50,
               "CodecSettings": {
                 "Codec": "H_264",
                 "H264Settings": {
                   "InterlaceMode": "PROGRESSIVE",
                   "NumberReferenceFrames": 3,
                   "Syntax": "DEFAULT",
                   "Softness": 0,
                   "GopClosedCadence": 1,
                   "GopSize": 2,
                   "Slices": 1,
                   "GopBReference": "DISABLED",
                   "MaxBitrate": 1200000,
                   "SlowPal": "DISABLED",
                   "SpatialAdaptiveQuantization": "ENABLED",
                   "TemporalAdaptiveQuantization": "ENABLED",
                   "FlickerAdaptiveQuantization": "DISABLED",
                   "EntropyEncoding": "CABAC",
                   "FramerateControl": "INITIALIZE_FROM_SOURCE",
                   "RateControlMode": "QVBR",
                   "CodecProfile": "MAIN",
                   "Telecine": "NONE",
                   "MinIInterval": 0,
                   "AdaptiveQuantization": "HIGH",
                   "CodecLevel": "AUTO",
                   "FieldEncoding": "PAFF",
                   "SceneChangeDetect": "TRANSITION_DETECTION",
                   "QualityTuningLevel": "SINGLE_PASS_HQ",
                   "FramerateConversionAlgorithm": "DUPLICATE_DROP",
                   "UnregisteredSeiTimecode": "DISABLED",
                   "GopSizeUnits": "SECONDS",
                   "ParControl": "INITIALIZE_FROM_SOURCE",
                   "NumberBFramesBetweenReferenceFrames": 2,
                   "RepeatPps": "DISABLED"
                 }
               },
               "AfdSignaling": "NONE",
               "DropFrameTimecode": "ENABLED",
               "RespondToAfd": "NONE",
               "ColorMetadata": "INSERT"
             },
             "OutputSettings": {
               "HlsSettings": {
                 "AudioGroupId": "program_audio",
                 "AudioRenditionSets": "program_audio",
                 "SegmentModifier": "$dt$",
                 "IFrameOnlyManifest": "EXCLUDE"
               }
             },
             "NameModifier": "_360"
           },
           {
             "ContainerSettings": {
               "Container": "M3U8",
               "M3u8Settings": {
                 "AudioFramesPerPes": 4,
                 "PcrControl": "PCR_EVERY_PES_PACKET",
                 "PmtPid": 480,
                 "PrivateMetadataPid": 503,
                 "ProgramNumber": 1,
                 "PatInterval": 0,
                 "PmtInterval": 0,
                 "TimedMetadata": "NONE",
                 "TimedMetadataPid": 502,
                 "VideoPid": 481,
                 "AudioPids": [
                   482,
                   483,
                   484,
                   485,
                   486,
                   487,
                   488,
                   489,
                   490,
                   491,
                   492
                 ]
               }
             },
             "VideoDescription": {
               "Width": 960,
               "ScalingBehavior": "DEFAULT",
               "Height": 540,
               "TimecodeInsertion": "DISABLED",
               "AntiAlias": "ENABLED",
               "Sharpness": 50,
               "CodecSettings": {
                 "Codec": "H_264",
                 "H264Settings": {
                   "InterlaceMode": "PROGRESSIVE",
                   "NumberReferenceFrames": 3,
                   "Syntax": "DEFAULT",
                   "Softness": 0,
                   "GopClosedCadence": 1,
                   "GopSize": 2,
                   "Slices": 1,
                   "GopBReference": "DISABLED",
                   "MaxBitrate": 3500000,
                   "SlowPal": "DISABLED",
                   "SpatialAdaptiveQuantization": "ENABLED",
                   "TemporalAdaptiveQuantization": "ENABLED",
                   "FlickerAdaptiveQuantization": "DISABLED",
                   "EntropyEncoding": "CABAC",
                   "FramerateControl": "INITIALIZE_FROM_SOURCE",
                   "RateControlMode": "QVBR",
                   "CodecProfile": "MAIN",
                   "Telecine": "NONE",
                   "MinIInterval": 0,
                   "AdaptiveQuantization": "HIGH",
                   "CodecLevel": "AUTO",
                   "FieldEncoding": "PAFF",
                   "SceneChangeDetect": "TRANSITION_DETECTION",
                   "QualityTuningLevel": "SINGLE_PASS_HQ",
                   "FramerateConversionAlgorithm": "DUPLICATE_DROP",
                   "UnregisteredSeiTimecode": "DISABLED",
                   "GopSizeUnits": "SECONDS",
                   "ParControl": "INITIALIZE_FROM_SOURCE",
                   "NumberBFramesBetweenReferenceFrames": 2,
                   "RepeatPps": "DISABLED"
                 }
               },
               "AfdSignaling": "NONE",
               "DropFrameTimecode": "ENABLED",
               "RespondToAfd": "NONE",
               "ColorMetadata": "INSERT"
             },
             "OutputSettings": {
               "HlsSettings": {
                 "AudioGroupId": "program_audio",
                 "AudioRenditionSets": "program_audio",
                 "SegmentModifier": "$dt$",
                 "IFrameOnlyManifest": "EXCLUDE"
               }
             },
             "NameModifier": "_540"
           },
           {
             "ContainerSettings": {
               "Container": "M3U8",
               "M3u8Settings": {
                 "AudioFramesPerPes": 4,
                 "PcrControl": "PCR_EVERY_PES_PACKET",
                 "PmtPid": 480,
                 "PrivateMetadataPid": 503,
                 "ProgramNumber": 1,
                 "PatInterval": 0,
                 "PmtInterval": 0,
                 "TimedMetadata": "NONE",
                 "VideoPid": 481,
                 "AudioPids": [
                   482,
                   483,
                   484,
                   485,
                   486,
                   487,
                   488,
                   489,
                   490,
                   491,
                   492
                 ]
               }
             },
             "VideoDescription": {
               "Width": 1280,
               "ScalingBehavior": "DEFAULT",
               "Height": 720,
               "TimecodeInsertion": "DISABLED",
               "AntiAlias": "ENABLED",
               "Sharpness": 50,
               "CodecSettings": {
                 "Codec": "H_264",
                 "H264Settings": {
                   "InterlaceMode": "PROGRESSIVE",
                   "NumberReferenceFrames": 3,
                   "Syntax": "DEFAULT",
                   "Softness": 0,
                   "GopClosedCadence": 1,
                   "GopSize": 2,
                   "Slices": 1,
                   "GopBReference": "DISABLED",
                   "MaxBitrate": 5000000,
                   "SlowPal": "DISABLED",
                   "SpatialAdaptiveQuantization": "ENABLED",
                   "TemporalAdaptiveQuantization": "ENABLED",
                   "FlickerAdaptiveQuantization": "DISABLED",
                   "EntropyEncoding": "CABAC",
                   "FramerateControl": "INITIALIZE_FROM_SOURCE",
                   "RateControlMode": "QVBR",
                   "CodecProfile": "MAIN",
                   "Telecine": "NONE",
                   "MinIInterval": 0,
                   "AdaptiveQuantization": "HIGH",
                   "CodecLevel": "AUTO",
                   "FieldEncoding": "PAFF",
                   "SceneChangeDetect": "TRANSITION_DETECTION",
                   "QualityTuningLevel": "SINGLE_PASS_HQ",
                   "FramerateConversionAlgorithm": "DUPLICATE_DROP",
                   "UnregisteredSeiTimecode": "DISABLED",
                   "GopSizeUnits": "SECONDS",
                   "ParControl": "INITIALIZE_FROM_SOURCE",
                   "NumberBFramesBetweenReferenceFrames": 2,
                   "RepeatPps": "DISABLED"
                 }
               },
               "AfdSignaling": "NONE",
               "DropFrameTimecode": "ENABLED",
               "RespondToAfd": "NONE",
               "ColorMetadata": "INSERT"
             },
             "OutputSettings": {
               "HlsSettings": {
                 "AudioGroupId": "program_audio",
                 "AudioRenditionSets": "program_audio",
                 "SegmentModifier": "$dt$",
                 "IFrameOnlyManifest": "EXCLUDE"
               }
             },
             "NameModifier": "_720"
           },
           {
             "ContainerSettings": {
               "Container": "M3U8",
               "M3u8Settings": {}
             },
             "AudioDescriptions": [
               {
                 "AudioSourceName": "Audio Selector 1",
                 "CodecSettings": {
                   "Codec": "AAC",
                   "AacSettings": {
                     "Bitrate": 96000,
                     "CodingMode": "CODING_MODE_2_0",
                     "SampleRate": 48000
                   }
                 }
               }
             ],
             "OutputSettings": {
               "HlsSettings": {
                 "AudioGroupId": "program_audio",
                 "AudioTrackType": "ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT"
               }
             },
             "NameModifier": "_audio"
           }
         ],
         "OutputGroupSettings": {
           "Type": "HLS_GROUP_SETTINGS",
           "HlsGroupSettings": {
             "ManifestDurationFormat": "INTEGER",
             "SegmentLength": 6,
             "TimedMetadataId3Period": 10,
             "CaptionLanguageSetting": "OMIT",
             "Destination": "s3://EXAMPLE-BUCKET/HLS/",
             "DestinationSettings": {
               "S3Settings": {
                 "AccessControl": {
                   "CannedAcl": "PUBLIC_READ"
                 }
               }
             },
             "TimedMetadataId3Frame": "PRIV",
             "CodecSpecification": "RFC_4281",
             "OutputSelection": "MANIFESTS_AND_SEGMENTS",
             "ProgramDateTimePeriod": 600,
             "MinSegmentLength": 0,
             "DirectoryStructure": "SINGLE_DIRECTORY",
             "ProgramDateTime": "EXCLUDE",
             "SegmentControl": "SEGMENTED_FILES",
             "ManifestCompression": "NONE",
             "ClientCache": "ENABLED",
             "StreamInfResolution": "INCLUDE"
           }
         }
       },
       {
         "CustomName": "MP4",
         "Name": "File Group",
         "Outputs": [
           {
             "ContainerSettings": {
               "Container": "MP4",
               "Mp4Settings": {
                 "CslgAtom": "INCLUDE",
                 "FreeSpaceBox": "EXCLUDE",
                 "MoovPlacement": "PROGRESSIVE_DOWNLOAD"
               }
             },
             "VideoDescription": {
               "Width": 1280,
               "ScalingBehavior": "DEFAULT",
               "Height": 720,
               "TimecodeInsertion": "DISABLED",
               "AntiAlias": "ENABLED",
               "Sharpness": 100,
               "CodecSettings": {
                 "Codec": "H_264",
                 "H264Settings": {
                   "InterlaceMode": "PROGRESSIVE",
                   "ParNumerator": 1,
                   "NumberReferenceFrames": 3,
                   "Syntax": "DEFAULT",
                   "Softness": 0,
                   "GopClosedCadence": 1,
                   "HrdBufferInitialFillPercentage": 90,
                   "GopSize": 2,
                   "Slices": 2,
                   "GopBReference": "ENABLED",
                   "HrdBufferSize": 10000000,
                   "MaxBitrate": 5000000,
                   "ParDenominator": 1,
                   "EntropyEncoding": "CABAC",
                   "RateControlMode": "QVBR",
                   "CodecProfile": "HIGH",
                   "MinIInterval": 0,
                   "AdaptiveQuantization": "AUTO",
                   "CodecLevel": "AUTO",
                   "FieldEncoding": "PAFF",
                   "SceneChangeDetect": "ENABLED",
                   "QualityTuningLevel": "SINGLE_PASS_HQ",
                   "UnregisteredSeiTimecode": "DISABLED",
                   "GopSizeUnits": "SECONDS",
                   "ParControl": "SPECIFIED",
                   "NumberBFramesBetweenReferenceFrames": 3,
                   "RepeatPps": "DISABLED",
                   "DynamicSubGop": "ADAPTIVE"
                 }
               },
               "AfdSignaling": "NONE",
               "DropFrameTimecode": "ENABLED",
               "RespondToAfd": "NONE",
               "ColorMetadata": "INSERT"
             },
             "AudioDescriptions": [
               {
                 "AudioTypeControl": "FOLLOW_INPUT",
                 "AudioSourceName": "Audio Selector 1",
                 "CodecSettings": {
                   "Codec": "AAC",
                   "AacSettings": {
                     "AudioDescriptionBroadcasterMix": "NORMAL",
                     "Bitrate": 160000,
                     "RateControlMode": "CBR",
                     "CodecProfile": "LC",
                     "CodingMode": "CODING_MODE_2_0",
                     "RawFormat": "NONE",
                     "SampleRate": 48000,
                     "Specification": "MPEG4"
                   }
                 },
                 "LanguageCodeControl": "FOLLOW_INPUT",
                 "AudioType": 0
               }
             ]
           }
         ],
         "OutputGroupSettings": {
           "Type": "FILE_GROUP_SETTINGS",
           "FileGroupSettings": {
             "Destination": "s3://EXAMPLE-BUCKET/MP4/",
             "DestinationSettings": {
               "S3Settings": {
                 "AccessControl": {
                   "CannedAcl": "PUBLIC_READ"
                 }
               }
             }
           }
         }
       },
       {
         "CustomName": "Thumbnails",
         "Name": "File Group",
         "Outputs": [
           {
             "ContainerSettings": {
               "Container": "RAW"
             },
             "VideoDescription": {
               "Width": 1280,
               "ScalingBehavior": "DEFAULT",
               "Height": 720,
               "TimecodeInsertion": "DISABLED",
               "AntiAlias": "ENABLED",
               "Sharpness": 50,
               "CodecSettings": {
                 "Codec": "FRAME_CAPTURE",
                 "FrameCaptureSettings": {
                   "FramerateNumerator": 1,
                   "FramerateDenominator": 5,
                   "MaxCaptures": 500,
                   "Quality": 80
                 }
               },
               "AfdSignaling": "NONE",
               "DropFrameTimecode": "ENABLED",
               "RespondToAfd": "NONE",
               "ColorMetadata": "INSERT"
             }
           }
         ],
         "OutputGroupSettings": {
           "Type": "FILE_GROUP_SETTINGS",
           "FileGroupSettings": {
             "Destination": "s3://EXAMPLE-BUCKET/Thumbnails/",
             "DestinationSettings": {
               "S3Settings": {
                 "AccessControl": {
                   "CannedAcl": "PUBLIC_READ"
                 }
               }
             }
           }
         }
       }
     ],
     "AdAvailOffset": 0,
     "Inputs": [
       {
         "AudioSelectors": {
           "Audio Selector 1": {
             "Offset": 0,
             "DefaultSelection": "DEFAULT",
             "ProgramSelection": 1
           }
         },
         "VideoSelector": {
           "ColorSpace": "FOLLOW"
         },
         "FilterEnable": "AUTO",
         "PsiControl": "USE_PSI",
         "FilterStrength": 0,
         "DeblockFilter": "DISABLED",
         "DenoiseFilter": "DISABLED",
         "TimecodeSource": "EMBEDDED",
         "FileInput": "s3://EXAMPLE-INPUT-BUCKET/input.mp4"
       }
     ]
   }
   ```

1. En la carpeta `batch-transcode`, cree un archivo con una función de Lambda. Puede usar el siguiente ejemplo de Python y nombrar el archivo `convert.py`.

   Operaciones por lotes de S3 envía datos específicos de tareas a una función de Lambda y requiere datos de resultados de vuelta. Para obtener ejemplos de solicitud y respuesta para la función de Lambda, información sobre códigos de respuesta y resultado, y ejemplos de funciones de Lambda para operaciones por lote de S3, consulte [Invocar a la función AWS Lambda](batch-ops-invoke-lambda.md). 

   ```
   import json
   import os
   from urllib.parse import urlparse
   import uuid
   import boto3
   
   """
   When you run an S3 Batch Operations job, your job  
   invokes this Lambda function. Specifically, the Lambda function is 
   invoked on each video object listed in the manifest that you specify 
   for the S3 Batch Operations job in Step 5.  
   
   Input parameter "event": The S3 Batch Operations event as a request
                            for the Lambda function.
   
   Input parameter "context": Context about the event.
   
   Output: A result structure that Amazon S3 uses to interpret the result 
           of the operation. It is a job response returned back to S3 Batch Operations.
   """
   def handler(event, context):
   
       invocation_schema_version = event['invocationSchemaVersion']
       invocation_id = event['invocationId']
       task_id = event['tasks'][0]['taskId']
   
       source_s3_key = event['tasks'][0]['s3Key']
       source_s3_bucket = event['tasks'][0]['s3BucketArn'].split(':::')[-1]
       source_s3 = 's3://' + source_s3_bucket + '/' + source_s3_key
   
       result_list = []
       result_code = 'Succeeded'
       result_string = 'The input video object was converted successfully.'
   
       # The type of output group determines which media players can play 
       # the files transcoded by MediaConvert.
       # For more information, see [Creating outputs with AWS Elemental MediaConvert](https://docs.aws.amazon.com/mediaconvert/latest/ug/creating-streaming-and-file-outputs.html).
       output_group_type_dict = {
           'HLS_GROUP_SETTINGS': 'HlsGroupSettings',
           'FILE_GROUP_SETTINGS': 'FileGroupSettings',
           'CMAF_GROUP_SETTINGS': 'CmafGroupSettings',
           'DASH_ISO_GROUP_SETTINGS': 'DashIsoGroupSettings',
           'MS_SMOOTH_GROUP_SETTINGS': 'MsSmoothGroupSettings'
       }
   
       try:
           job_name = 'Default'
           with open('job.json') as file:
               job_settings = json.load(file)
   
           job_settings['Inputs'][0]['FileInput'] = source_s3
   
           # The path of each output video is constructed based on the values of 
           # the attributes in each object of OutputGroups in the job.json file. 
           destination_s3 = 's3://{0}/{1}/{2}' \
               .format(os.environ['amzn-s3-demo-destination-bucket'],
                       os.path.splitext(os.path.basename(source_s3_key))[0],
                       os.path.splitext(os.path.basename(job_name))[0])
   
           for output_group in job_settings['OutputGroups']:
               output_group_type = output_group['OutputGroupSettings']['Type']
               if output_group_type in output_group_type_dict.keys():
                   output_group_type = output_group_type_dict[output_group_type]
                   output_group['OutputGroupSettings'][output_group_type]['Destination'] = \
                       "{0}{1}".format(destination_s3,
                                       urlparse(output_group['OutputGroupSettings'][output_group_type]['Destination']).path)
               else:
                   raise ValueError("Exception: Unknown Output Group Type {}."
                                    .format(output_group_type))
   
           job_metadata_dict = {
               'assetID': str(uuid.uuid4()),
               'application': os.environ['Application'],
               'input': source_s3,
               'settings': job_name
           }
   
           region = os.environ['AWS_DEFAULT_REGION']
           endpoints = boto3.client('mediaconvert', region_name=region) \
               .describe_endpoints()
           client = boto3.client('mediaconvert', region_name=region, 
                                  endpoint_url=endpoints['Endpoints'][0]['Url'], 
                                  verify=False)
   
           try:
               client.create_job(Role=os.environ['MediaConvertRole'], 
                                 UserMetadata=job_metadata_dict, 
                                 Settings=job_settings)
           # You can customize error handling based on different error codes that 
           # MediaConvert can return.
           # For more information, see [MediaConvert error codes](https://docs.aws.amazon.com/mediaconvert/latest/ug/mediaconvert_error_codes.html). 
           # When the result_code is TemporaryFailure, S3 Batch Operations retries 
           # the task before the job is completed. If this is the final retry, 
           # the error message is included in the final report.
           except Exception as error:
               result_code = 'TemporaryFailure'
               raise
       
       except Exception as error:
           if result_code != 'TemporaryFailure':
               result_code = 'PermanentFailure'
           result_string = str(error)
   
       finally:
           result_list.append({
               'taskId': task_id,
               'resultCode': result_code,
               'resultString': result_string,
           })
   
       return {
           'invocationSchemaVersion': invocation_schema_version,
           'treatMissingKeyAs': 'PermanentFailure',
           'invocationId': invocation_id,
           'results': result_list
       }
   ```

1. Para crear un paquete de implementación con `convert.py` y `job.json` como un archivo `.zip` llamado `lambda.zip`, en su terminal local, abra la carpeta `batch-transcode` que creó anteriormente y ejecute el comando siguiente.

   Para **usuarios de macOS**, ejecute el siguiente comando:

   ```
   zip -r lambda.zip convert.py job.json                
   ```

   Para **usuarios de Windows**, ejecute los siguientes comandos:

   ```
   powershell Compress-Archive convert.py lambda.zip
   ```

   ```
   powershell Compress-Archive -update job.json lambda.zip                
   ```

### Crear una función de Lambda con un rol de ejecución (consola)
<a name="batchops-s3-step4-create-function"></a>

1. 

   Abra la consola de AWS Lambda en [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. En el panel de navegación izquierdo, elija **Funciones**.

1. Elija **Create function** (Crear función).

1. Elija **Crear desde cero**.

1. Bajo **Información básica**, haga lo siguiente:

   1. En **Nombre de la función**, introduzca **tutorial-lambda-convert**.

   1. En **Tiempo de ejecución**, seleccione **Python 3.12**.

1. Elija **Cambiar el rol de ejecución predeterminado** y, en **Rol de ejecución**, elija **Usar un rol existente**.

1. En **Existing role (Rol existente)**, elija el nombre del rol de IAM que creó para su función de Lambda en el [Paso 3](#batchops-s3-step3) (por ejemplo, **tutorial-lambda-transcode-role**).

1. Mantenga la configuración restante establecida en los valores predeterminados.

1. Seleccione **Creación de función**.

### Implemente su función de Lambda con archivos.zip y configure la función de Lambda (consola)
<a name="batchops-s3-step4-deploy-function"></a>

1. En la sección **Code source (Código fuente)** de la página para la función de Lambda que creó anteriormente (por ejemplo, **tutorial-lambda-convert**), elija **Upload from (Cargar desde)** y luego, el **archivo .zip**.

1. Seleccione **Upload** (Cargar) para seleccionar el archivo `.zip` local.

1. Elija el archivo `lambda.zip` que creó anteriormente y luego, **Open (Abrir)**.

1. Seleccione **Save**.

1. En la sección **Runtime settings** (Configuración de tiempo de ejecución), elija **Edit** (Editar). 

1. Para indicarle al tiempo de ejecución de Lambda qué método de controlador en su código de función de Lambda invocar, ingrese **convert.handler** en el campo **Handler (Controlador)**.

   ‎Al configurar una función en Python, el valor de la configuración del controlador es el nombre del archivo y el nombre de un módulo del controlador exportado, separados por un punto (`.`). Por ejemplo, `convert.handler` llama al método `handler` definido en `convert.py`.

1. Seleccione **Save**.

1. En la página de la función de Lambda, seleccione la opción**Configuración**Pestaña. En el panel de navegación izquierdo de la pestaña **Configuration (Configuración)**, elija **Environment variables (Variables de entorno)** y luego, **Edit (Editar)**.

1. Elija **Add environment variable** (Añadir variable de entorno). Después ingrese la **clave** y el **valor** para cada una de las siguientes variables de entorno:
   + **Clave**: **DestinationBucket** **Valor**: **amzn-s3-demo-destination-bucket1** 

     Este valor es el bucket de S3 para los archivos multimedia de salida que creó en el [Paso 1](#batchops-s3-step1).
   + **Clave**: **MediaConvertRole** **Valor**: **arn:aws:iam::*111122223333*:role/tutorial-mediaconvert-role** 

     Este valor es el ARN del rol de IAM para MediaConvert que creó en el [Paso 2](#batchops-s3-step2). Asegúrese de reemplazar este ARN con el ARN real de su rol de IAM.
   + **Clave**: **Application** **Valor**: **Batch-Transcoding** 

     Este valor es el nombre de la aplicación.

1. Seleccione **Save**.

1. (Opcional) En la pestaña **Configuración**, en la sección **Configuración general** del panel de navegación izquierdo, elija **Editar**. En el campo **Tiempo de espera**, escriba **2** min **0** s. A continuación, elija **Guardar**.

   **Tiempo de espera**: período durante el cual Lambda permite que se ejecute una función antes de pararla. El valor predeterminado es de 3 segundos. Los precios se basan en la cantidad de memoria configurada y en la cantidad de tiempo durante la que se ejecuta el código. Para más información, consulte [Precios de AWS Lambda](https://aws.amazon.com/lambda/pricing/?icmpid=docs_console_unmapped).

## Paso 5: Configure un inventario de Amazon S3 para un bucket fuente de S3
<a name="batchops-s3-step5"></a>

Después de configurar la función de Lambda de transcodificación, cree un trabajo de operaciones por lote de S3 para transcodificar un conjunto de vídeos. En primer lugar, necesita una lista de los objetos de vídeo de entrada en los que quiere que Operaciones Batch de S3 ejecute la acción de transcodificación especificada. Para obtener una lista de objetos de vídeo de entrada, puede generar un informe de inventario de S3 para su bucket fuente de S3 (por ejemplo, `amzn-s3-demo-source-bucket`). 

**Topics**
+ [Cree y configure un bucket para los informes de inventario de S3 de vídeos de entrada](#batchops-s3-step5-bucket)
+ [Configuración del inventario de Amazon S3 para un bucket fuente de vídeo de S3](#batchops-s3-step5-inventory)
+ [Verifique el informe de inventario para su bucket fuente de vídeo de S3](#batchops-s3-step5-manifest)

### Cree y configure un bucket para los informes de inventario de S3 de vídeos de entrada
<a name="batchops-s3-step5-bucket"></a>

Para almacenar informes de inventario de S3 que muestran los objetos del bucket fuente de S3, debe crear un bucket de destino de inventario de S3 y configurar una política de bucket para que el bucket escriba archivos de inventario en el bucket fuente de S3.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets**.

1. Elija **Crear bucket**. 

1. En **Nombre del bucket**, ingrese el nombre del bucket (por ejemplo, `amzn-s3-demo-destination-bucket2`). 

1. En **Región de AWS**, elija la Región de AWS en la que desea que se encuentre el bucket. 

   El bucket de destino del inventario debe estar en la misma Región de AWS que el bucket fuente en el que configura el inventario de S3. El bucket de destino del inventario puede estar en una diferente Cuenta de AWS. 

1. En la **configuración de Block Public Access para este bucket**, mantenga la configuración predeterminada (la opción **Block *all *public access [Bloquear todo el acceso público]** está habilitada). 

1. Mantenga la configuración restante establecida en los valores predeterminados. 

1. Elija **Crear bucket**.

1. En la lista de **Buckets**, busque y seleccione el nombre del bucket de que creó anteriormente (por ejemplo: `amzn-s3-demo-destination-bucket2`).

1. Para otorgar permiso a Amazon S3 para escribir los datos de los informes de inventario en el bucket de destino de inventario de S3, elija la pestaña **Permissions (Permisos)**.

1. Desplácese hacia abajo hasta la sección **Política de bucket** y luego elija **Editar**. Se abre la página de la **política de bucket**.

1. Para otorgar permisos para el inventario de S3, en el campo **Política**, pegue la siguiente política de bucket.

   Reemplace los tres valores de ejemplo por los siguientes valores: 
   + El nombre del bucket que ha creado para almacenar los informes de inventario (por ejemplo:)., `amzn-s3-demo-destination-bucket2`).
   + El nombre del bucket fuente que almacena los vídeos de entrada (por ejemplo, `amzn-s3-demo-source-bucket`). 
   + El ID de la Cuenta de AWS que utilizó para crear el bucket fuente de vídeo de S3 (por ejemplo, `111122223333`).

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement":[
       {
         "Sid":"InventoryAndAnalyticsExamplePolicy",
         "Effect":"Allow",
         "Principal": {"Service": "s3.amazonaws.com"},
         "Action":"s3:PutObject",
         "Resource":["arn:aws:s3:::amzn-s3-demo-destination-bucket2/*"],
         "Condition": {
             "ArnLike": {
                 "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket"
              },
            "StringEquals": {
                "aws:SourceAccount": "111122223333",
                "s3:x-amz-acl": "bucket-owner-full-control"
             }
          }
       }
     ]
   }
   ```

------

1. Seleccione **Save changes (Guardar cambios)**.

### Configuración del inventario de Amazon S3 para un bucket fuente de vídeo de S3
<a name="batchops-s3-step5-inventory"></a>

Debe configurar el inventario de S3 para generar una lista de archivos planos de objetos de vídeo y metadatos para su bucket fuente de vídeo S3. Estos informes programados de inventario pueden incluir todos los objetos del bucket u objetos agrupados por un prefijo compartido. En este tutorial, el informe de inventario de S3 incluye todos los objetos de vídeo del bucket fuente de S3.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets**.

1. Para configurar un informe de inventario de S3 de los vídeos de entrada en el bucket fuente de S3, en la lista **Buckets**, elija el nombre del bucket fuente de S3 (por ejemplo, `amzn-s3-demo-source-bucket`).

1. Seleccione la pestaña **Administración**.

1. Desplácese hasta la sección **Inventory configurations (Configuraciones de inventario)** y elija **Create inventory configuration (Creación de la configuración de inventario)**. 

1. Para**Nombre de la configuración del inventario**, escriba un nombre (por ejemplo:**tutorial-inventory-config**). 

1. En **Alcance del inventario**, elija **Solo versión actual** para **Versiones de objetos** y mantenga la otra configuración de **Alcance del inventario** establecida en los valores predeterminados de este tutorial. 

1. En la sección **Report details (Datos del informe)**, para **Destination bucket (Bucket de destino)**, elija **This account (Esta cuenta)**. 

1. Para **Destination (Destino)**, elija **Browse SE (Examinar S3)** y el bucket de destino que creó anteriormente para guardar los informes de inventario (por ejemplo,`amzn-s3-demo-destination-bucket2`). Luego, elija **Choose path (Elegir ruta)**. 

   El bucket de destino del inventario debe estar en la misma Región de AWS que el bucket fuente en el que configura el inventario de S3. El bucket de destino del inventario puede estar en una diferente Cuenta de AWS. 

   En el campo para bucket **Destination** (Destino) verá el **permiso de bucket de destino** que se agrega a la política de bucket de destino para permitir que Amazon S3 coloque datos en ese bucket. Para obtener más información, consulte [Creación de una política de bucket de destino](configure-inventory.md#configure-inventory-destination-bucket-policy).

1. Para **Frequency (Frecuencia)**, elija **Daily (Diario)**.

1. Elija **CSV** para **Output format** (Formato de salida). 

1. Para **Status (Estado)**, elija **Enabled (Habilitado)**. 

1. En la sección **Server-side encryption (Cifrado en el servidor)**, elija **Disable (Deshabilitar)** para este tutorial. 

   Para obtener más información, consulte [Configuración del inventario mediante la consola de S3](configure-inventory.md#configure-inventory-console) y [Concesión de permiso a Amazon S3 con el fin de utilizar su clave administrada por el cliente para el cifrado](configure-inventory.md#configure-inventory-kms-key-policy). 

1. En la sección **Additional fields - *optional* (Campos adicionales: opcional)**, seleccione **Size (Tamaño)**, **Last modified (Última modificación)** y **Storage class (Clase de almacenamiento)**. 

1. Seleccione **Crear**.

Para obtener más información, consulte [Configuración del inventario mediante la consola de S3](configure-inventory.md#configure-inventory-console).

### Verifique el informe de inventario para su bucket fuente de vídeo de S3
<a name="batchops-s3-step5-manifest"></a>

Cuando se publica un informe de inventario, los archivos de manifiesto se envían al bucket de destino del inventario de S3.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets**.

1. En la lista **Buckets**, elija el nombre del bucket de código fuente de vídeo (por ejemplo: `amzn-s3-demo-source-bucket`).

1. Elija **Administración**.

1. Para ver si el informe de inventario de S3 está listo para crear un trabajo de operaciones por lote de S3 en el [Paso 7](#batchops-s3-step7), en **Configuración del inventario**, verifique si el botón **Crear trabajo a partir del manifiesto** está habilitado.
**nota**  
Se pueden tardar hasta 48 horas en entregar el primer informe. Si el archivo de**Crear trabajo a partir del manifiesto**está desactivado, no se ha entregado el primer informe de inventario. Espere hasta que se entregue el primer informe de inventario y se habilite el botón **Crear trabajo a partir del manifiesto** para crear un trabajo de operaciones por lote de S3 en el [Paso 7](#batchops-s3-step7). 

1. Para verificar un informe de inventario de S3 (`manifest.json`), en la columna **Destination (Destino)**, elija el nombre del bucket de destino de inventario que creó anteriormente para almacenar informes de inventario (por ejemplo, `amzn-s3-demo-destination-bucket2`).

1. En la pestaña **Objetos**, elija la carpeta existente con el nombre del bucket fuente de S3 (por ejemplo, `amzn-s3-demo-source-bucket`). Luego elija el nombre que ingresó en **Nombre de la configuración del inventario** cuando creó la configuración de inventario (por ejemplo, **tutorial-inventory-config**).

   Puede ver una lista de carpetas con las fechas de generación de los informes como sus nombres. 

1. Para verificar el informe diario de inventario de S3 en una fecha, elija una carpeta con un nombre de fecha de generación y luego, elija `manifest.json`. 

1. Para comprobar los detalles del informe de inventario en una fecha específica, en la página **manifest.json**, elija **Descargar** o **Abrir**.

## Paso 6: creación de un rol de IAM para Operaciones por Batch de S3
<a name="batchops-s3-step6"></a>

Para utilizar operaciones por lote de S3 para realizar la transcodificación por lote, primero debe crear un rol de IAM a fin de otorgar permisos a Amazon S3 para realizar operaciones por lote de S3. 

**Topics**
+ [Creación de una política de IAM para Operaciones Batch de S3](#batchops-s3-step6-policy)
+ [Cree un rol de IAM y asigne permisos de Operaciones por lotes de S3 para su ejecución.](#batchops-s3-step6-role)

### Creación de una política de IAM para Operaciones Batch de S3
<a name="batchops-s3-step6-policy"></a>

Debe crear una política de IAM que otorgue permiso a las operaciones por lote de S3 para leer el manifiesto de entrada, invocar a la función de Lambda y escribir el informe de finalización de trabajos de operaciones por lote de S3. 

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación izquierdo, elija **Políticas**.

1. Elija **Create Policy** (Crear política).

1. Seleccione la pestaña **JSON**.

1. Copie la siguiente política de confianza en el campo de texto **JSON**.

   En la política JSON, sustituya los cuatro valores de ejemplo por los siguientes:
   + El nombre del bucket fuente que almacena los vídeos de entrada (por ejemplo, `amzn-s3-demo-source-bucket`).
   + El nombre del bucket de destino de inventario que ha creado en el [Paso 5](#batchops-s3-step5) para almacenar archivos `manifest.json` (por ejemplo: `amzn-s3-demo-destination-bucket2`).
   + El nombre del bucket que creó en el [Paso 1](#batchops-s3-step1) para almacenar archivos multimedia de salida (por ejemplo, `amzn-s3-demo-destination-bucket1`). En este tutorial, ponemos los informes de finalización de trabajos en el bucket de destino para los archivos de medios de salida. 
   + El rol ARN de la función de Lambda que ha creado en el [Paso 4](#batchops-s3-step4). Para buscar y copiar el ARN de rol de la función de Lambda, haga lo siguiente: 
     + En una nueva pestaña del navegador, abra la página **Functions (Funciones)** en la consola de Lambda en [https://console.aws.amazon.com/lambda/home#/functions](https://console.aws.amazon.com/lambda/home#/functions).
     + En la lista **Functions (Funciones)**, elija el nombre de la función de Lambda que creó en el [Paso 4](#batchops-s3-step4) (por ejemplo, **tutorial-lambda-convert**).
     + Seleccionar **Copy ARN** (Copiar ARN).

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "S3Get",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
                   "arn:aws:s3:::amzn-s3-demo-destination-bucket2/*"
               ]
           },
           {
               "Sid": "S3PutJobCompletionReport",
               "Effect": "Allow",
               "Action": "s3:PutObject",
               "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket1/*"
           },
           {
               "Sid": "S3BatchOperationsInvokeLambda",
               "Effect": "Allow",
               "Action": [
                   "lambda:InvokeFunction"
               ],
               "Resource": [
                   "arn:aws:lambda:us-west-2:111122223333:function:tutorial-lambda-convert"
               ]
           }
       ]
   }
   ```

------

1. Elija **Siguiente: Etiquetas**.

1. Elija **Siguiente: Revisar**.

1. En el campo **Name** (Nombre), escriba **tutorial-s3batch-policy**.

1. Elija **Crear política**.

### Cree un rol de IAM y asigne permisos de Operaciones por lotes de S3 para su ejecución.
<a name="batchops-s3-step6-role"></a>

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación izquierdo, elija **Roles** y luego **Crear rol**.

1. Elija el tipo de rol de **Servicio de AWS** y luego, el servicio de **S3**.

1. En **Seleccione su caso de uso**, elija **Operaciones por lotes de S3**.

1. Elija **Siguiente**.

1. En **Asociar políticas de permisos**, ingrese el nombre de la política de IAM que creó anteriormente (por ejemplo, **tutorial-s3batch-policy**) en el cuadro de búsqueda para filtrar la lista de políticas. Seleccione la casilla de verificación junto al nombre de la política (por ejemplo, **tutorial-s3batch-policy**). 

1. Elija **Siguiente**.

1. En **Role name (Nombre del rol)**, introduzca **tutorial-s3batch-role**.

1. Elija **Create role** (Crear rol).

   Después de crear el rol de IAM para las operaciones por lote de S3, la siguiente política de confianza se adjunta automáticamente al rol. La política de confianza permite que la entidad del servicio de las operaciones por lote de S3 pueda asumir el rol de IAM.

------
#### [ JSON ]

****  

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

------

## Paso 7: configurar y ejecutar el trabajo de la herramienta de operaciones por lotes de S3
<a name="batchops-s3-step7"></a>

Para crear un trabajo de operaciones por lote de S3 a fin de procesar los vídeos de entrada en el bucket fuente de S3, debe especificar parámetros para este trabajo concreto.

**nota**  
Para comenzar a crear un trabajo de operaciones por lote de S3, debe asegurarse de que el botón **Crear trabajo a partir de manifiesto** está habilitado. Para obtener más información, consulte [Verifique el informe de inventario para su bucket fuente de vídeo de S3](#batchops-s3-step5-manifest). Si el botón **Create job from manifest (Crear trabajo a partir del manifiesto)** está desactivado, el primer informe de inventario no se entrega y tiene que esperar hasta que el botón se habilite. Después de configurar el inventario de Amazon S3 para el bucket fuente de S3 en el [Paso 5](#batchops-s3-step5), puede tardar hasta 48 horas en entregar el primer informe de inventario.

**Topics**
+ [Creación de un trabajo de Operaciones por lotes de S3](#batchops-s3-step7-create-job)
+ [Ejecute el trabajo de Operaciones Batch de S3 para invocar a su función de Lambda](#batchops-s3-step7-run-job)
+ [(Opcional) Verificación del informe de finalización](#batchops-s3-step7-check-report)
+ [(Opcional) Supervisar cada invocación de Lambda en la consola de Lambda](#batchops-s3-step7-monitor-lambda)
+ [(Opcional) Supervise cada trabajo de transcodificación de vídeo de MediaConvert en la consola de MediaConvert](#batchops-s3-step7-monitor-mediaconvert)

### Creación de un trabajo de Operaciones por lotes de S3
<a name="batchops-s3-step7-create-job"></a>

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Operaciones por lotes**.

1. Seleccione **Crear tarea**.

1. Para **Región de AWS**, elija la región en la que desea crear el trabajo.

   En este tutorial, para utilizar el trabajo de operaciones por lote de S3 para invocar una función de Lambda, debe crear el trabajo en la misma región que el bucket fuente de vídeo de S3 donde se encuentran los objetos a los que se hace referencia en el manifiesto.

1. En la sección **Manifest (Manifiesto)**, haga lo siguiente:

   1. En **Manifest format** (Formato del manifiesto), elija **S3 Inventory report (manifest.json)** (Informe de S3 Inventory [manifest.json]).

   1. Para **Objeto de manifiesto**, elija **Examinar S3** a fin de encontrar el bucket que creó en el [Paso 5](#batchops-s3-step5)para almacenar informes de inventario (por ejemplo, `amzn-s3-demo-destination-bucket2`). En la página **Objeto de manifiesto)**, navegue por los nombres de los objetos hasta encontrar un archivo `manifest.json` para una fecha específica. Este archivo enumera la información sobre todos los vídeos que desea transcodificar por lotes. Cuando encuentre el archivo `manifest.json` que desea utilizar, elija el botón de opción situado junto a él. Luego, elija **Elegir ruta**.

   1. (Opcional) Para **ID de versión del objeto de manifiesto: *opcional***, ingrese el ID de versión del objeto de manifiesto si desea utilizar otra versión que no sea la más reciente.

1. Elija **Siguiente**.

1. Para utilizar la función de Lambda para transcodificar todos los objetos enumerados en el archivo `manifest.json` en **Tipo de operación**, elija **Invocar función de AWS Lambda**.

1. En la sección **Invocar función de Lambda**, haga lo siguiente:

   1. Seleccionar**Elija una de las funciones de su cuenta**.

   1. Para **Función de Lambda**, elija la función de Lambda que creó en el [Paso 4](#batchops-s3-step4) (por ejemplo, **tutorial-lambda-convert**).

   1. Para **Versión de función de Lambda**, conserve el valor predeterminado **\$1LATEST**.

1. Elija **Siguiente**. Se abre la página **Configurar opciones adicionales**.

1. En **Opciones adicionales**, conserve la configuración predeterminada.

   Para obtener más información sobre estas opciones, consulte [Elementos de una solicitud de trabajo de Operaciones por lotes](batch-ops-create-job.md#batch-ops-create-job-request-elements).

1. En la sección **Informe de finalización**, en **Ruta al destino del informe de finalización**, elija **Examinar S3**. Busque el bucket que creó en el [Paso 1](#batchops-s3-step1) para los archivos multimedia de salida (por ejemplo, `amzn-s3-demo-destination-bucket1`). Elija el botón de opción junto al nombre de ese bucket. Luego, elija **Elegir ruta**.

   Para la configuración restante **Informe de finalización**, mantenga los valores predeterminados. Para obtener más información sobre cómo configurar los informes, consulte [Elementos de una solicitud de trabajo de Operaciones por lotes](batch-ops-create-job.md#batch-ops-create-job-request-elements). Un informe de finalización mantiene un registro de los detalles del trabajo y las operaciones realizadas.

1. En la sección **Permisos**, elija **Elegir entre los roles de IAM existentes**. Para **Rol de IAM**, elija el rol de IAM para el trabajo de Operaciones Batch de S3 que ha creado en el [Paso 6](#batchops-s3-step6) (por ejemplo: **tutorial-s3batch-role**).

1. Elija **Siguiente**.

1. En la página **Revisar**, revise la configuración. Después elija **Crear trabajo**.

   Después de que S3 termina de leer el manifiesto del trabajo de operaciones por lote de S3, configura el **estado** del trabajo en **En espera de su confirmación para ejecutarse**. Para ver las actualizaciones del estado del trabajo, actualice la página. No puede ejecutar el trabajo hasta que el estado sea **En espera de su confirmación para ejecutarse**.

### Ejecute el trabajo de Operaciones Batch de S3 para invocar a su función de Lambda
<a name="batchops-s3-step7-run-job"></a>

Ejecute su trabajo de operaciones Batch para invocar su función de Lambda para la transcodificación de vídeo. Si el trabajo falla, puede verifica el informe de finalización para identificar la causa.

**Para ejecutar el trabajo de operaciones Batch de S3**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Operaciones por lotes**.

1. En la lista **Trabajos**, elija la opción **ID de trabajo**del trabajo en la primera fila, que es el trabajo de operaciones por lote de S3 que creó anteriormente.

1. Elija **Ejecutar trabajo**. 

1. Revise los parámetros de trabajo de nuevo y confirme que el valor de**Total de objetos enumerados en el manifiesto**Es el mismo que el número de objetos en el manifiesto. Después elija **Ejecutar trabajo**.

   Se abrirá la página de trabajos de Operaciones por lotes de S3.

1. Después de que el trabajo comience a ejecutarse, en la página de trabajo, en **Estado**, compruebe el progreso de su trabajo de Operaciones por lotes de S3, como **Estado**, **% completo**, **Total correcto (tasa)**, **Total fallado (tasa)**,**Fecha de finalización**, y **Motivo de la terminación**.

   Cuando finalice el trabajo de operaciones por lote de S3, vea los datos en la página de trabajo para confirmar que el trabajo se haya completado como se esperaba. 

   Si más del 50 por ciento de las operaciones de objetos de un trabajo de operaciones por lote de S3 falla después de que se hayan intentado más de 1000 operaciones, el trabajo falla automáticamente. Para verificar el informe de finalización para identificar la causa de los errores, consulte el procedimiento opcional que aparece a continuación.

### (Opcional) Verificación del informe de finalización
<a name="batchops-s3-step7-check-report"></a>

Puede utilizar el informe de finalización para determinar qué objetos han fallado y la causa de los errores.

**Para verificar el informe completo en busca de detalles acerca de los objetos con errores**

1. En la página de su trabajo de operaciones por lote de S3, en la sección **Informe de finalización**, elija el enlace de **Destino del informe de finalización**.

   Se abre la página del bucket de destino de salida de S3.

1. En la pestaña **Objetos**, elija la carpeta que tiene un nombre que termina con el ID de trabajo del trabajo de operaciones por lote de S3 que creó anteriormente.

1. Seleccionar**Resultados/**.

1. Seleccione la casilla de verificación situada junto al grupo de `.csv`.

1. Para ver el informe de trabajo, elija **Abrir** o **Descargar**.

### (Opcional) Supervisar cada invocación de Lambda en la consola de Lambda
<a name="batchops-s3-step7-monitor-lambda"></a>

Después de que el trabajo de operaciones por lote de S3 comienza a ejecutarse, el trabajo invoca la función de Lambda para cada objeto de vídeo de entrada. S3 escribe registros de cada invocación de Lambda en CloudWatch Logs. Puede utilizar el panel de monitoreo de la consola de Lambda para monitorear sus funciones y aplicaciones de Lambda. 

1. Abra la consola de AWS Lambda en [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. En el panel de navegación izquierdo, elija **Funciones**.

1. En la lista **Funciones**, elija el nombre de la función de Lambda que creó en el [Paso 4](#batchops-s3-step4) (por ejemplo, **tutorial-lambda-convert**).

1. Elija la pestaña **Supervisar**.

1. En **Métricas**, consulte las métricas de tiempo de ejecución de su función de Lambda.

1. En **Registros**, vea los datos de registro de cada invocación de Lambda a través de CloudWatch Logs Insights.
**nota**  
Cuando se utiliza Operaciones por lotes de S3 con una función de Lambda, se invoca la función de Lambda en cada objeto. Si su trabajo de operaciones Batch de S3 es grande, puede invocar varias funciones de Lambda al mismo tiempo, causando un aumento en la concurrencia de Lambda.   
Cada Cuenta de AWS tiene una cuota de concurrencia de Lambda por región. Para obtener más información, consulte el [escalado de funciones de AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/invocation-scaling.html) en la *Guía para desarrolladores de AWS Lambda*. Una práctica recomendada para usar funciones Lambda con Operaciones Batch de S3 es establecer un límite de concurrencia en la propia función de Lambda. Esto evita que su trabajo consuma la mayor parte de su concurrencia de Lambda y potencialmente limita otras funciones de su cuenta. Para obtener más información, consulte [Managing Lambda reserved concurrency (Gestión de la simultaneidad reservada de Lambda)](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html) en la *Guía para desarrolladores de AWS Lambda*.

### (Opcional) Supervise cada trabajo de transcodificación de vídeo de MediaConvert en la consola de MediaConvert
<a name="batchops-s3-step7-monitor-mediaconvert"></a>

Una tarea de MediaConvert se encarga de transcodificar un archivo multimedia. Cuando su trabajo de operaciones por lote de S3 invoca la función de Lambda para cada vídeo, cada invocación de Lambda crea un trabajo de transcodificación de MediaConvert para cada vídeo de entrada. 

1. Inicie sesión en laConsola de administración de AWSy abra la consola de MediaConvert en[https://console.aws.amazon.com/mediaconvert/](https://console.aws.amazon.com/mediaconvert/).

1. Si aparece la página de introducción a MediaConvert, elija **Get Started**.

1. En la lista de**Trabajos**, vea cada fila para supervisar la tarea de transcodificación de cada vídeo de entrada. 

1. Identifique la fila de un trabajo que desea verificar y elija el enlace **Job ID (ID de trabajo)** para abrir la página de detalles del trabajo.

1. En la página**Resumen del Job**página, en**Salidas**, elija el enlace para la salida HLS, MP4 o Thumbnails, dependiendo de lo que admita su navegador, para ir al bucket de destino S3 para los archivos multimedia de salida.

1. En la carpeta correspondiente (HLS, MP4 o Thumbnails) del bucket de destino de salida S3, elija el nombre del objeto de archivo de medios de salida.

   Se abre la página de detalles del objeto.

1. En la página de objetos, en **Object overview (Información general del objeto)**, elija el enlace de **URL del objeto** para ver el archivo multimedia de salida transcodificado.

## Paso 8: Compruebe los archivos multimedia de salida desde su bucket de destino S3
<a name="batchops-s3-step8"></a>

**Para verificar los archivos multimedia de salida desde el bucket de destino de S3**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets**.

1. En la lista **Buckets**, elija el nombre del bucket de destino de S3 para los archivos multimedia de salida que creó en el [Paso 1](#batchops-s3-step1) (por ejemplo, `amzn-s3-demo-destination-bucket1`).

1. En la página **Objetos**, cada vídeo de entrada tiene una carpeta con el nombre del vídeo de entrada. Cada carpeta contiene los archivos de medios de salida transcodificados para un vídeo de entrada.

   Para comprobar los archivos de medios de salida en busca de un vídeo de entrada, haga lo siguiente:

   1. Elija la carpeta con el nombre del vídeo de entrada que desea verificar.

   1. Elija la carpeta **Default/**.

   1. Elija la carpeta para un formato transcodificado (HLS, MP4 o miniaturas en este tutorial). 

   1. Elija el nombre del archivo de medios de salida.

   1. Para ver el archivo transcodificado, en la página de detalles del objeto, elija el enlace situado en **URL del objeto**. 

      Los archivos de medios de salida en formato HLS se dividen en segmentos cortos. Para reproducir estos vídeos, debe incrustar la URL del objeto del archivo `.m3u8` en un reproductor compatible.

## Paso 9: limpiar
<a name="batchops-s3-step9"></a>

Si transcodificó vídeos con Operaciones por lotes de S3, Lambda y MediaConvert solo como ejercicio de aprendizaje, elimine los recursos AWS que asignó para que ya no acumule cargos. 

**Topics**
+ [Elimine la configuración del inventario de S3 para el bucket de código fuente de S3](#batchops-s3-step9-delete-inventory)
+ [Elimine la función de Lambda](#batchops-s3-step9-delete-lambda)
+ [Eliminación del grupo de registros de CloudWatch](#batchops-s3-step9-delete-cw)
+ [Eliminar los roles de IAM junto con las directivas en línea para los roles de IAM](#batchops-s3-step9-delete-role)
+ [Elimine la política de IAM administrada por el cliente](#batchops-s3-step9-delete-policy)
+ [Vacíe los buckets de S3](#batchops-s3-step9-empty-bucket)
+ [Eliminación del bucket de S3](#batchops-s3-step9-delete-bucket)

### Elimine la configuración del inventario de S3 para el bucket de código fuente de S3
<a name="batchops-s3-step9-delete-inventory"></a>

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets**.

1. En la lista **Buckets**, elija el nombre del bucket fuente (por ejemplo: `amzn-s3-demo-source-bucket`).

1. Seleccione la pestaña **Administración**.

1. En la sección **Configuración del inventario**, elija la configuración de inventario que creó en el [Paso 5](#batchops-s3-step5) (por ejemplo, **tutorial-inventory-config**).

1. Elija **Eliminar** y, a continuación, **Confirmar**.

### Elimine la función de Lambda
<a name="batchops-s3-step9-delete-lambda"></a>

1. 

   Abra la consola de AWS Lambda en [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. En el panel de navegación izquierdo, elija **Funciones**.

1. Seleccione la casilla de verificación junto a la función que creó en el [Paso 4](#batchops-s3-step4) (por ejemplo, **tutorial-lambda-convert**).

1. Elija **Acciones** y, a continuación, elija **Eliminar**.

1. En el cuadro de diálogo **Eliminar función**, elija **Eliminar**.

### Eliminación del grupo de registros de CloudWatch
<a name="batchops-s3-step9-delete-cw"></a>

1. Abra la consola de CloudWatch en [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. En el panel de navegación izquierdo, elija **Registros** y luego **Grupos de registros**.

1. Seleccione la casilla de verificación junto al grupo de registros que tiene un nombre que termina con la función de Lambda que ha creó en el [Paso 4](#batchops-s3-step4) (por ejemplo, **tutorial-lambda-convert**).

1. Elija **Acciones** y, a continuación, elija **Eliminar grupo de registros**.

1. En el cuadro de diálogo **Eliminar grupos de registros**, elija **Eliminar**.

### Eliminar los roles de IAM junto con las directivas en línea para los roles de IAM
<a name="batchops-s3-step9-delete-role"></a>

Para eliminar los roles de IAM que creó en el [Paso 2](#batchops-s3-step2), [Paso 3](#batchops-s3-step3), y [Paso 6](#batchops-s3-step6), realice una de las siguientes opciones: 

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación izquierdo, elija **Roles** y luego, seleccione las casillas de verificación junto a los nombres de rol que desee eliminar.

1. En la parte superior de la página, elija **Eliminar**.

1. En el cuadro de diálogo de confirmación, escriba la respuesta necesaria en el campo de entrada de texto basado en la solicitud de datos y elija **Eliminar**. 

### Elimine la política de IAM administrada por el cliente
<a name="batchops-s3-step9-delete-policy"></a>

Para eliminar la política de IAM administrada por el cliente que creó en el [Paso 6](#batchops-s3-step6), realice lo siguiente:

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación izquierdo, elija **Políticas**.

1. Elija el botón de opción situado junto a la política que creó en el [Paso 6](#batchops-s3-step6) (por ejemplo, **tutorial-s3batch-policy**). Puede utilizar el cuadro de búsqueda para filtrar la lista de políticas.

1. Elija **Acciones** y, a continuación, elija **Eliminar**. 

1. Confirme que desea eliminar esta política; para ello, ingrese su nombre en el campo de texto y elija **Eliminar**. 

### Vacíe los buckets de S3
<a name="batchops-s3-step9-empty-bucket"></a>

Para vaciar los buckets de S3 que creó en [Requisitos previos](#batchops-s3-prerequisites), [Paso 1](#batchops-s3-step1) y [Paso 5](#batchops-s3-step5), realice lo siguiente: 

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets**.

1. En la lista **Buckets**, elija el botón de opción del bucket junto al nombre del bucket que desea vaciar y luego elija **Vaciar**.

1. En la página **Vaciar bucket**, confirme que desea vaciar el bucket; para ello, ingrese **permanently delete** en el campo de texto y luego, elija **Vaciar**.

### Eliminación del bucket de S3
<a name="batchops-s3-step9-delete-bucket"></a>

Para eliminar los buckets de S3 que creó en [Requisitos previos](#batchops-s3-prerequisites), [Paso 1](#batchops-s3-step1) y [Paso 5](#batchops-s3-step5), realice lo siguiente: 

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets**.

1. En la lista **Buckets**, elija el botón de opción junto al nombre del bucket que desea eliminar.

1. Elija **Eliminar**.

1. En la página **Eliminar bucket**, confirme que desea eliminar el bucket introduciendo el nombre del bucket en el campo de texto y, a continuación, elija **Eliminar bucket**.

## Siguientes pasos
<a name="batchops-s3-next-steps"></a>

Después de completar este tutorial, puede explorar más a fondo otros casos de uso relevantes:
+ Puede utilizar Amazon CloudFront para transmitir los archivos multimedia transcodificados a los espectadores de todo el mundo. Para obtener más información, consulte [Tutorial: Alojamiento de video en streaming bajo demanda con Amazon S3, Amazon CloudFront y Amazon Route 53](tutorial-s3-cloudfront-route53-video-streaming.md).
+ Puede transcodificar vídeos en el momento en que los carga en el bucket fuente de S3. Para ello, puede configurar un desencadenador de eventos de Amazon S3 que invoque automáticamente la función de Lambda para transcodificar nuevos objetos en S3 con MediaConvert. Para obtener más información, consulte [Tutorial: Uso de un desencadenador de Amazon S3 para invocar una función de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) en la *Guía para desarrolladores de AWS Lambda*. 

# Solución de problemas de Operaciones por lotes de S3
<a name="troubleshooting-batch-operations"></a>

Puede utilizar Operaciones por lotes de Amazon S3 para realizar operaciones a gran escala en objetos de Amazon S3. Esta guía le ayuda a solucionar problemas comunes que puedan surgir.

Para solucionar problemas con Replicación por lotes de S3, consulte [Solución de problemas de replicación](replication-troubleshoot.md).

Hay dos tipos principales de errores que provocan errores en las operaciones por lotes:

1. **Error de API**: la API solicitada (como `CreateJob`) no se ha ejecutado correctamente.

1. **Error de trabajo**: la solicitud de la API inicial se ha realizado correctamente, pero el trabajo ha fallado, por ejemplo, debido a problemas con el manifiesto o con los permisos de los objetos especificados en el manifiesto.

## NoSuchJobException
<a name="nosuchjobexception"></a>

**Tipo**: error de la API

La `NoSuchJobException` se produce cuando Operaciones por lotes de S3 no puede localizar el trabajo especificado. Este error se puede producir en varios escenarios además de la simple caducidad del trabajo. Entre las causas comunes se incluyen las siguientes.

1. **Caducidad del trabajo**: los trabajos se eliminan automáticamente 90 días después de alcanzar un estado terminal (`Complete`, `Cancelled` o `Failed`).

1. **ID de trabajo incorrecto**: el ID de trabajo utilizado en `DescribeJob` o `UpdateJobStatus` no coincide con el ID devuelto por `CreateJob`.

1. **Región incorrecta**: se intenta acceder a un trabajo en una región diferente a la de donde se creó.

1. **Cuenta incorrecta**: se utiliza un ID de trabajo de una cuenta de AWS diferente.

1. **Errores de formato de ID de trabajo**: tipográficos, caracteres adicionales o formato incorrecto en el ID del trabajo.

1. **Problemas de temporización**: se comprueba el estado del trabajo inmediatamente después de crearlo antes de registrarlo por completo.

Entre los mensajes de error relacionados se incluyen los siguientes.

1. `No such job`

1. `The specified job does not exist`

### Prácticas recomendadas para evitar errores de la API `NoSuchJobException`
<a name="nosuchjobexception-prevention"></a>

1. **Guarde los ID de trabajo inmediatamente**: guarde el ID del trabajo de la respuesta `CreateJob` antes de realizar llamadas a la API posteriores.

1. **Implemente la lógica de reintentos**: agregue un retroceso exponencial al comprobar el estado del trabajo inmediatamente después de su creación.

1. **Configure la supervisión**: cree alarmas de CloudWatch para realizar un seguimiento de la finalización del trabajo antes de que caduquen los 90 días. Para obtener información, consulte [Uso de alarmas de CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) en la Guía del usuario de Amazon CloudWatch.

1. **Utilice regiones coherentes**: asegúrese de que todas las operaciones laborales utilizan la misma región que las de creación de empleo.

1. **Valide la entrada**: compruebe el formato de ID del trabajo antes de realizar llamadas a la API.

### Cuándo caducan los trabajos
<a name="nosuchjobexception-jobs-expire"></a>

Los trabajos en estados terminales se eliminan automáticamente después de 90 días. Para evitar perder información sobre el trabajo, tenga en cuenta la siguiente información.

1. **Descargue los informes de finalización antes de que caduquen**: para obtener instrucciones sobre cómo recuperar y almacenar los resultados de los trabajos, consulte [ Informes de finalización  Al crear un trabajo, puede solicitar un informe de finalización. Siempre que Operaciones por lotes de S3 invoque correctamente al menos una tarea, Amazon S3 genera un informe de finalización cuando las tareas terminen de ejecutarse, encuentren algún error o se cancelen. Puede configurar el informe de finalización para incluir todas las tareas o solo las tareas con error.  El informe de finalización incluye la configuración del trabajo, el estado y la información de cada tarea, incluidas la clave y la versión del objeto, el estado, los códigos de error y las descripciones de los errores. Los informes de finalización constituyen un mecanismo sencillo para ver los resultados de las tareas en un formato unificado sin necesidad de realizar ninguna configuración adicional. Los informes de finalización se cifran con cifrado de servidor con claves administradas por Amazon S3 (SSE-S3). Para ver un ejemplo de un informe de finalización, consulte [Ejemplos: informes de finalización de las operaciones por lotes de S3](batch-ops-examples-reports.md).  Aunque no se configure un informe de finalización, es posible monitorizar y auditar el trabajo y las tareas con CloudTrail y Amazon CloudWatch. Para obtener más información, consulte los temas siguientes: ](batch-ops-job-status.md#batch-ops-completion-report.title).

1. **Archive los metadatos de los trabajos en sus propios sistemas**: almacene la información fundamental sobre los trabajos en las bases de datos o sistemas de supervisión.

1. **Configure las notificaciones automáticas antes de la fecha límite de 90 días**: utilice Amazon EventBridge para crear reglas que desencadenen notificaciones cuando se completen los trabajos. Para obtener más información, consulte [Notificaciones de eventos de Amazon S3](EventNotifications.md).

### `NoSuchJobException`Solución de problemas de
<a name="nosuchjobexception-troubleshooting"></a>

1. Utilice el siguiente comando para comprobar que el trabajo existe en la cuenta y la región.

   ```
   aws s3control list-jobs --account-id 111122223333 --region us-east-1
   ```

1. Utilice el siguiente comando para buscar en todos los estados de los trabajos. Los posibles estados de los trabajos incluyen `Active`, `Cancelled`, `Cancelling`, `Complete`, `Completing`, `Failed`, `Failing`, `New`, `Paused`, `Pausing`, `Preparing`, `Ready` y `Suspended`.

   ```
   aws s3control list-jobs --account-id 111122223333 --job-statuses your-job-status
   ```

1. Utilice el siguiente comando para comprobar si el trabajo existe en otras regiones donde suele crear trabajos.

   ```
   aws s3control list-jobs --account-id 111122223333 --region job-region-1 aws s3control list-jobs --account-id 111122223333 --region job-region-2                    
   ```

1. Valide el formato de ID de trabajo. Los ID de trabajo suelen contener 36 caracteres, por ejemplo `12345678-1234-1234-1234-123456789012`. Compruebe si hay espacios adicionales, caracteres faltantes o problemas con la distinción de mayúsculas y minúsculas y compruebe que está utilizando el ID de trabajo completo devuelto por el comando `CreateJob`.

1. Utilice el siguiente comando para comprobar los registros de CloudTrail para ver si hay eventos de creación de trabajos.

   ```
       aws logs filter-log-events --log-group-name CloudTrail/S3BatchOperations \ --filter-pattern "{ $.eventName = CreateJob }" \ --start-time timestamp                    
   ```

### AccessDeniedException
<a name="accessdeniedexception"></a>

**Tipo**: error de la API

La `AccessDeniedException` se produce cuando se bloquea una solicitud de Operaciones por lotes de S3 debido a permisos insuficientes, operaciones no admitidas o restricciones de políticas. Este es uno de los errores más comunes en operaciones por lotes. Tiene las siguientes causas comunes:

1. **Permisos de IAM faltantes**: la identidad de IAM carece de los permisos necesarios para las API de operaciones por lotes.

1. **Permisos de S3 insuficientes**: faltan permisos para acceder a los buckets y objetos de origen o destino.

1. **Problemas de rol de ejecución de trabajos**: el rol de ejecución de trabajos carece de permisos para realizar la operación especificada.

1. **Operaciones no compatibles**: el intento de utilizar operaciones no se admite en la región o el tipo de bucket actuales.

1. **Problemas de acceso entre cuentas**: faltan permisos para acceder a objetos o buckets entre cuentas.

1. **Restricciones de políticas basadas en los recursos**: políticas de bucket o ACL de objetos que bloquean la operación.

1. **Restricciones de la política de control de servicio (SCP)**: políticas por organización que impiden la operación.

Mensajes de error relacionados:

1. `Access Denied`

1. `User: arn:aws:iam::account:user/username is not authorized to perform: s3:operation`

1. `Cross-account pass role is not allowed`

1. `The bucket policy does not allow the specified operation`

#### Prácticas recomendadas para evitar errores de la API AccessDeniedException
<a name="accessdeniedexception-prevention"></a>

1. **Utilice el principio de privilegio mínimo**: conceda solo los permisos mínimos necesarios para sus operaciones específicas.

1. **Pruebe los permisos antes de realizar trabajos grandes**: ejecute pequeños trabajos de prueba para validar los permisos antes de procesar miles de objetos.

1. **Utilice el simulador de política de IAM**: pruebe las políticas antes de implementarlas mediante el simulador de política de IAM. Para obtener más información, consulte [Pruebas de la política de IAM con el simulador de política de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html) en la Guía del usuario de IAM.

1. **Implemente una configuración entre cuentas adecuada**: compruebe la configuración de acceso entre cuentas para ver si hay configuraciones de trabajos entre cuentas. Para obtener más información, consulte [Tutorial de IAM: Delegar el acceso entre cuentas de AWS mediante roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) en la Guía del usuario de IAM.

1. **Supervise los cambios de permisos**: configure alertas de CloudTrail para las modificaciones de la política de IAM que puedan afectar a las operaciones por lotes.

1. **Documente los requisitos de los roles**: mantenga una documentación clara de los permisos necesarios para cada tipo de trabajo.

1. **Utilice plantillas de permisos comunes**: utilice los ejemplos de permisos y las plantillas de políticas:

   1. [Concesión de permisos para Operaciones por lotes](batch-ops-iam-role-policies.md)

   1. [Recursos entre cuentas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) en la Guía del usuario de IAM.

   1. [Controle el acceso a puntos de conexión de VPC mediante el uso de políticas de punto de conexión](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) en la Guía de AWS PrivateLink.

#### Solución de problemas de AccessDeniedException
<a name="accessdeniedexception-troubleshooting"></a>

Siga estos pasos de forma sistemática para identificar y resolver los problemas de permisos.

1. Compruebe [Operaciones compatibles con las operaciones por lotes de S3](batch-ops-operations.md) si hay operaciones compatibles por región. Confirme que las operaciones de los buckets de directorio solo estén disponibles en los puntos de conexión regionales y zonales. Compruebe que la operación sea compatible con la clase de almacenamiento del bucket.

1. Utilice el siguiente comando para determinar si puede mostrar trabajos.

   ```
    aws s3control list-jobs --account-id 111122223333
   ```

1. Utilice el siguiente comando para comprobar los permisos de IAM para la identidad solicitante. La cuenta que ejecuta el trabajo necesita los siguientes permisos: `s3:CreateJob`, `s3:DescribeJob`, `s3:ListJobs`, `s3:UpdateJobPriority`, `s3:UpdateJobStatus` y `iam:PassRole`.

   ```
   aws sts get-caller-identity 111122223333
   ```

1. Utilice el siguiente comando para comprobar si el rol existe y es asumible.

   ```
   aws iam get-role --role-name role-name
   ```

1. Use el siguiente comando para revisar la política de confianza del rol. El rol que ejecute el trabajo debe tener lo siguiente:

   1. Una relación de confianza que permita que `batchoperations.s3.amazonaws.com` adopte el rol.

   1. Las operaciones que realiza la operación por lotes (por ejemplo `s3:PutObjectTagging` para operaciones de etiquetado).

   1. Acceso a los buckets de origen y destino.

   1. Permiso para leer el archivo de manifiesto.

   1. Permiso para redactar informes de finalización.

   ```
   aws iam get-role --role-name role-name --query 'Role.AssumeRolePolicyDocument'
   ```

1. Use el siguiente comando para probar el acceso a los buckets de manifiesto y origen.

   ```
   aws s3 ls s3://amzn-s3-demo-bucket                        
   ```

1. Prueba de la operación que realiza la operación por lotes. Por ejemplo, si la operación por lotes realiza el etiquetado, etiquete un objeto de ejemplo en el bucket de origen.

1. Revise las políticas de bucket para ver si hay políticas que puedan denegar la operación.

   1. Compruebe las ACL de los objetos si trabaja con controles de acceso antiguos.

   1. Compruebe que ninguna política de control de servicio (SCP) bloquee la operación.

   1.  Confirme que las políticas de punto de conexión de VPC permitan las operaciones por lotes si se utilizan puntos de conexión de VPC.

1. Utilice el siguiente comando para usar CloudTrail para identificar errores de permisos.

   ```
   aws logs filter-log-events --log-group-name CloudTrail/S3BatchOperations \
       --filter-pattern "{ $.errorCode = AccessDenied }" \
       --start-time timestamp
   ```

#### SlowDownError
<a name="slowdownerror"></a>

**Tipo**: error de la API

La excepción `SlowDownError` se produce cuando la cuenta ha superado el límite de tasa de solicitudes para las API de Operaciones por lotes de S3. Se trata de un mecanismo de limitación para evitar que el servicio se vea desbordado por un número excesivo de solicitudes. Tiene las siguientes causas comunes:

1. **Alta frecuencia de solicitudes a la API**: se realizan muchas llamadas a la API en poco tiempo.

1. **Operaciones de trabajo simultáneas**: varias aplicaciones o usuarios crean o administran trabajos simultáneamente.

1. **Scripts automatizados sin límite de velocidad**: scripts que no implementan las estrategias de espera adecuadas.

1. **Sondeo del estado del trabajo con demasiada frecuencia**: se comprueba el estado del trabajo con más frecuencia de la necesaria.

1. **Patrones de tráfico en ráfagas**: picos repentinos en el uso de la API durante las horas punta de procesamiento.

1. **Límites de capacidad regional**: se supera la capacidad de solicitud asignada para la región.

Mensajes de error relacionados:

1. `SlowDown`

1. `Please reduce your request rate`

1. `Request rate exceeded`

#### Prácticas recomendadas para evitar errores de la API SlowDownError
<a name="slowdownerror-prevention"></a>

1. **Implemente una limitación de velocidad del cliente**: agregue retrasos entre las llamadas a la API en las aplicaciones.

1. **Utilice el retroceso exponencial con la fluctuación**: asigne al azar los retrasos en los reintentos para evitar problemas de rebaño abrumadores.

1. **Configure una lógica de reintentos adecuada**: implemente reintentos automáticos con retrasos cada vez mayores para los errores transitorios.

1. **Utilice arquitecturas basadas en eventos**: sustituya los sondeos por notificaciones de EventBridge para los cambios en el estado de los trabajos.

1. **Distribuya la carga a lo largo del tiempo**: escalone la creación de puestos de trabajo y las comprobaciones de estado en distintos periodos de tiempo.

1. **Supervise y envíe alertas sobre los límites de velocidad**: configure alarmas de CloudWatch para detectar cuándo se acerca a los límites.

La mayoría de los AWS SDK incluyen una lógica de reintento integrada para los errores que limitan la velocidad. Configúrelos de la siguiente manera:

1. **AWS CLI**: use los parámetros `cli-read-timeout` y `cli-connect-timeout`.

1. **AWS SDK para Python (Boto3)**: configure los modos de reintento y el número máximo de intentos en la configuración del cliente.

1. **AWS SDK para Java**: use la configuración `RetryPolicy` y `ClientConfiguration`.

1. **AWS SDK para JavaScript**: configure `maxRetries` y `retryDelayOptions`.

Para obtener más información sobre los patrones de reintento y las prácticas recomendadas, consulte [Reintentar con un patrón de retroceso](https://docs.aws.amazon.com/prescriptive-guidance/latest/cloud-design-patterns/retry-backoff.html) en la guía de orientación prescriptiva de AWS.

#### Solución de problemas de SlowDownError
<a name="slowdownerror-troubleshooting"></a>

1. En el código, implemente inmediatamente el retroceso exponencial.  
**Example de retroceso exponencial en bash**  

   ```
   for attempt in {1..5}; do
       if aws s3control describe-job --account-id 111122223333 --job-id job-id; then 
           break
       else 
           wait_time=$((2**attempt)) echo "Rate limited, waiting ${wait_time} seconds..." sleep $wait_time
           fi
   done
   ```

1. Use CloudTrail para identificar el origen del alto volumen de solicitudes.

   ```
   aws logs filter-log-events \
       --log-group-name CloudTrail/S3BatchOperations \
       --filter-pattern "{ $.eventName = CreateJob || $.eventName = DescribeJob }" \
       --start-time timestamp \
       --query 'events[*].[eventTime,sourceIPAddress,userIdentity.type,eventName]'
   ```

1. Revise la frecuencia de sondeo.

   1. Evite comprobar el estado de los trabajos más de una vez cada 30 segundos en el caso de los trabajos activos.

   1. Utilice notificaciones de finalización de trabajos en lugar de sondeos cuando sea posible.

   1. Implemente la fluctuación en los intervalos de sondeo para evitar la sincronización de las solicitudes.

1. Optimice sus patrones de uso de la API.

   1. Varias operaciones por lotes cuando sea posible.

   1. Se utiliza `ListJobs` para obtener el estado de varios trabajos en una sola llamada.

   1. Guarde en caché la información de los trabajos para reducir las llamadas a la API redundantes.

   1. Distribuya la creación de empleo a lo largo del tiempo en lugar de crear muchos puestos de trabajo simultáneamente.

1. Utilice las métricas de CloudWatch para las llamadas a la API a fin de supervisar sus patrones de solicitudes.

   ```
      aws logs put-metric-filter \
          --log-group-name CloudTrail/S3BatchOperations \
          --filter-name S3BatchOpsAPICallCount \      
          --filter-pattern "{ $.eventSource = s3.amazonaws.com && $.eventName = CreateJob }" \
          --metric-transformations \        
          metricName=S3BatchOpsAPICalls,metricNamespace=Custom/S3BatchOps,metricValue=1
   ```

## InvalidManifestContent
<a name="invalidmanifestcontent"></a>

**Tipo**: error de trabajo

La excepción `InvalidManifestContent` se produce cuando hay problemas con el formato del archivo de manifiesto, el contenido o la estructura que evitan que Operaciones por lotes de S3 procese el trabajo. Tiene las siguientes causas comunes:

1. **Infracciones de formato**: faltan columnas obligatorias, delimitadores incorrectos o estructura CSV con formato incorrecto.

1. **Problemas de codificación del contenido**: codificación de caracteres incorrecta, marcadores de BOM o caracteres distintos de UTF-8.

1. **Problemas con las claves de objeto**: caracteres no válidos, codificación de URL incorrecta o claves que superan los límites de longitud.

1. **Limitaciones de tamaño**: el manifiesto contiene más objetos de los que admite la operación.

1. **Errores de formato de ID de versión**: los ID de versión de los objetos versionados con formato incorrecto o no válidos.

1. **Problemas con el formato de ETag**: formato de ETag incorrecto o faltan comillas para las operaciones que requieren ETag.

1. **Datos incoherentes**: formatos mixtos dentro del mismo manifiesto o recuentos de columnas incoherentes.

Mensajes de error relacionados:

1. `Required fields are missing in the schema: + missingFields`

1. `Invalid Manifest Content`

1. `The S3 Batch Operations job failed because it contains more keys than the maximum allowed in a single job`

1. `Invalid object key format`

1. `Manifest file is not properly formatted`

1. `Invalid version ID format`

1. `ETag format is invalid`

### Prácticas recomendadas para evitar errores en los trabajos de InvalidManifestContent
<a name="invalidmanifestcontent-prevention"></a>

1. **Valide antes de cargar**: pruebe el formato del manifiesto con trabajos pequeños antes de procesar conjuntos de datos grandes.

1. **Utilice una codificación coherente**: utilice siempre la codificación UTF-8 sin BOM para los archivos de manifiesto.

1. **Implemente estándares de generación de manifiestos**: cree plantillas y procedimientos de validación para la creación de manifiestos.

1. **Maneje los caracteres especiales correctamente**: codifique en URL las claves de objetos que contienen caracteres especiales.

1. **Supervise el recuento de objetos**: realice un seguimiento del tamaño del manifiesto y divida los trabajos grandes de forma proactiva.

1. **Valide la existencia de los objetos**: compruebe la existencia de los objetos antes de incluirlos en los manifiestos.

1. **Utilice herramientas de AWS para la generación de manifiestos**: aproveche `s3api list-objects-v2` de la AWS CLI para generar listas de objetos con el formato adecuado.

Problemas y soluciones de manifiestos comunes:

1. **Faltan columnas obligatorias**: asegúrese de que el manifiesto incluya todas las columnas obligatorias para el tipo de operación. Las columnas que faltan más comunes son Bucket y Key.

1. **Formato CSV incorrecto**: utilice delimitadores de coma, asegúrese de que el recuento de columnas sea coherente en todas las filas y evite los saltos de línea incrustados en los campos.

1. **Caracteres especiales en las claves de objeto**: codifique en URL las claves de objeto que contienen espacios, caracteres Unicode o caracteres especiales XML (<, >, &, “, ‘).

1. **Archivos de manifiesto grandes**: divida los manifiestos que superen el límite de operaciones en varios manifiestos más pequeños y cree trabajos independientes.

1. **ID de versión no válidos**: asegúrese de que los ID de versión sean cadenas alfanuméricas con el formato correcto. Elimine la columna de ID de versión si no es necesaria.

1. **Problemas de codificación**: guarde los archivos de manifiesto como UTF-8 sin BOM. Evite copiar los manifiestos a través de sistemas que es posible que modifiquen la codificación.

Para obtener especificaciones y ejemplos detallados del formato de manifiesto, consulte lo siguiente:

1. [Especificar un manifiesto](batch-ops-create-job.md#specify-batchjob-manifest)

1. [Operaciones compatibles con las operaciones por lotes de S3](batch-ops-operations.md)

1. [Denominación de objetos de Amazon S3](object-keys.md)

### Solución de problemas de InvalidManifestContent
<a name="invalidmanifestcontent-troubleshooting"></a>

1. Descargue e inspeccione el archivo de manifiesto. Compruebe manualmente que el manifiesto cumpla con los requisitos de formato:

   1. Formato CSV con delimitadores de coma.

   1. Codificación UTF-8 sin BOM.

   1. Número coherente de columnas en todas las filas.

   1. No hay líneas vacías ni espacios finales.

   1. Las claves de objeto tienen codificación URL adecuada si contienen caracteres especiales.

   Utilice el siguiente comando para descargar el archivo de manifiesto.

   ```
   aws s3 cp s3://amzn-s3-demo-bucket1/manifest-key ./manifest.csv 
   ```

1. Compruebe las columnas obligatorias para su operación:

   1. Todas las operaciones: `Bucket`, `Key`

   1. Operaciones de copia: `VersionId` (opcional)

   1. Operaciones de restauración: `VersionId` (opcional)

   1. Operaciones de sustitución de etiquetas: no se requieren columnas adicionales.

   1. Operaciones de sustitución de ACL: no se requieren columnas adicionales.

   1. Iniciar la restauración: `VersionId` (opcional)

1. Compruebe los límites de recuento de objetos:

   1. Copia: mil millones de objetos como máximo.

   1. Eliminación: mil millones de objetos como máximo.

   1. Restauración: mil millones de objetos como máximo.

   1. Etiquetado: mil millones de objetos como máximo.

   1. ACL: mil millones de objetos como máximo.

1. Cree un manifiesto de prueba con algunos objetos del manifiesto original.

1. Use el siguiente comando para comprobar si existe un ejemplo de objetos del manifiesto.

   ```
   aws s3 ls s3://amzn-s3-demo-bucket1/object-key
   ```

1. Compruebe los detalles del error del trabajo y revise el motivo del error y cualquier detalle específico del error en la descripción del trabajo.

   ```
   aws s3control describe-job --account-id 111122223333 --job-id job-id                        
   ```