

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