Uso de la herramienta de operaciones por lotes de S3 para cifrar objetos con claves de bucket de S3 - Amazon Simple Storage Service

Uso de la herramienta de operaciones por lotes de S3 para cifrar objetos con claves de bucket de S3

En esta sección, se utiliza la operación de copia de la herramienta de operaciones por lotes de Amazon S3 para identificar y activar el cifrado de claves de bucket de S3 en objetos existentes. Para obtener más información sobre las claves de bucket de S3, consulte Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3 y Configuración del bucket para utilizar una clave de bucket de S3 con SSE-KMS para objetos nuevos.

Entre los temas que se tratan en este ejemplo, se incluyen los siguientes:

Requisitos previos

Para seguir los pasos de este procedimiento, necesita 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:

Paso 1: obtener la lista de objetos mediante Amazon S3 Inventory

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. El bucket de origen hace referencia al bucket cuyo inventario se crea y el bucket de destino hace referencia al 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 Inventario de Amazon S3.

La forma más sencilla de configurar un inventario es usar la AWS Management Console. 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/. 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.

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.

  2. En el panel de navegación, elija Buckets y, luego, elija un bucket que contenga objetos para cifrar.

  3. 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).

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

  5. Elija CSV para Output format (Formato de salida).

  6. (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.

  7. Elija Save (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 a la siguiente sección 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, S3 entrega 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 ListObjectsv2 (GET Bucket) 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 todas las claves.

Paso 2: filtrar la lista de objetos con S3 Select

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

Aunque en los siguientes pasos se muestra cómo filtrar mediante Amazon S3 Select, también puede utilizar Amazon 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 y Using Athena en la publicación de blog Encrypting objects with Amazon S3 Batch Operations.

Para filtrar el 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:::testbucket", "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 ID de versión, pero especificarlo 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.

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

  3. 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).

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

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

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

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

    Considere el precio de ejecutar cada trabajo de la herramienta de operaciones por lotes de S3 cuando decida el número de trabajos que se van a ejecutar.

Paso 3: configurar y ejecutar el trabajo de la herramienta de operaciones por lotes de S3

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

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 es usar la operación de copia PUT y especificar el mismo prefijo de destino que los objetos que aparecen en el manifiesto. Esto sobrescribe los objetos existentes en un bucket sin control de versiones o, con el control de versiones activado, 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 el objeto con cifrado SSE-KMS y S3. Este trabajo copia los objetos, por lo que todos los objetos muestran una fecha de creación actualizada al finalizar, independientemente de cuándo los agregó originalmente a 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.

Configuración de la política de IAM

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

  2. En el panel de navegación, seleccione Policies (Políticas) y, a continuación, seleccione Create Policy (Crear política).

  3. 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, reemplace lo siguiente:

    1. Reemplace SOURCE_BUCKET_FOR_COPY con el nombre del bucket de origen.

    2. Reemplace DESTINATION_BUCKET_FOR_COPY con el nombre del bucket de destino.

    3. Reemplace MANIFEST_KEY con el nombre del objeto de manifiesto.

    4. Reemplace REPORT_BUCKET con el nombre del bucket donde desee guardar los informes.

    { "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:::SOURCE_BUCKET_FOR_COPY/*", "arn:aws:s3:::DESTINATION_BUCKET_FOR_COPY/*" ] }, { "Sid": "ReadManifest", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::MANIFEST_KEY" }, { "Sid": "WriteReport", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::REPORT_BUCKET/*" } ] }
  4. Elija Next: Tags (Siguiente: etiquetas).

  5. Agregue las etiquetas que desee (opcional) y elija Next: Review (Siguiente: revisar).

  6. Proporcione un nombre para la política y, opcionalmente, una descripción; a continuación, elija Create policy (Crear política).

  7. Elija Review policy (Revisar política) y, a continuación, Save changes (Guardar cambios).

  8. Con su política de la herramienta de operaciones por lotes de S3 ya completada, la consola lo lleva nuevamente a la página de IAM Policies (Políticas). Filtre por el nombre de la política, elija el botón situado a la izquierda del nombre de la política, elija Policy actions (Acciones de política) y, a continuación, Attach (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 Attach policy (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

  1. En el panel de navegación de la consola de IAM, seleccione Roles y, a continuación, seleccione Crear rol.

  2. Elija Servicio de AWS, S3 y Operaciones por lotes de S3. A continuación, elija Next: Permissions (Siguiente: permisos).

  3. Comience a escribir el nombre de la policy (política) del IAM que acaba de crear. Seleccione la casilla de verificación junto al nombre de la política cuando aparezca y elija Next: Tags (Siguiente: etiquetas).

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

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

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

    { "Sid": "AddIamPermissions", "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::ACCOUNT-ID:role/IAM_ROLE_NAME" }

Activación de las claves de bucket de S3 para un bucket existente

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

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

  3. Seleccione Properties (Propiedades).

  4. En Default encryption (Cifrado predeterminado), elija Edit (Editar).

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

  6. Si elige la Clave de AWS Key Management Service (SSE-KMS), en AWS KMS key puede especificar su 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.

  7. En Bucket key (Clave de bucket), elija Enable (Habilitar) y, luego, Save changes (Guardar cambios).

Ahora que la clave de bucket de S3 está activada en el nivel de 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

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

  2. En el panel de navegación, elija Batch Operations (Operaciones por lotes) y, luego, Create Job (Crear trabajo).

  3. Elija la Region (Región) donde almacena los objetos y, a continuación, CSV como el tipo de manifiesto.

  4. 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).

  5. Elija la operación Copy (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.

  6. (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. Seleccione Siguiente.

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

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

    3. 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) y Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS).

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

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

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

  9. 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).

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

Ejecución del trabajo de la herramienta de operaciones por lotes

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.

  2. 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).

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

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

Puntos a tener en cuenta

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.

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

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

Resumen

En esta sección, ordenó los objetos existentes para filtrar los datos ya cifrados. A continuación, aplicó la característica de clave de bucket de S3 a objetos no cifrados con Operaciones por lotes de S3 para copiar los datos existentes en un bucket con la clave de bucket de S3 activada. Este proceso le puede ahorrar tiempo y dinero a la vez que le permite completar operaciones como el cifrado de todos los objetos existentes.

Para obtener más información sobre la herramienta de operaciones por lotes de S3, consulte Realización de operaciones por lotes a gran escala en objetos de Amazon S3.