🥇 Otros aspectos de S3.

🍿 Control de versiones

Ayuda a proteger sus datos contra borrado accidental o malicioso, manteniendo multiples versiones de cada objeto en el bucket que estan identificadas cada con un identificador de version.

El control de versiones permite preservar, retraer y restaurar cada version de cada objeto almacenado en su bucket de S3. Si el usuario hace un borrado accidental, cambio o elimina intencionalmente un objeto en S3, es posible restaurarlo a su estdo original a traves del ID de la versión que se desea restaurar.

El versionado se habilita a nivel del bucket, y una ves habilitado no se puede remover, solo suspender.

🍿 MFA Delete.

Añade una capa adicional de protección al control de versiones al solicitar autentiticación adicional para borrar permanentemente un objeto. Es decir que solicitará el código generado en el generador de tokens (Dispositivo MFA).

Esta característica solo puede ser habilitada por el root.

🍿 URLS Preautorizadas.

Los objetos en S3 por default son privados, esto quiere decir que solo quien los crea tiene acceso a ellos. Sin embargo el dueño de los objetos puede compartirlos con otros al crear pre-signed urls (urls pre-autorizadas) otorgando mediante sus propias credenciales acceso acceso temporal para la descarga de objetos. Cuando se crea este tipo de urls para un objeto, es necesario proveer sus credenciales y especificar un nombre de bucket, una llave, el método HTTP y la fecha de expiracion. Esto es particularmente util para prevenir content scrapping de contenidos multimedia.

🍿 Envios multipart.

Para mejor soporte al enviar o copiar objetos grandes, S3 provee la API para envios multipart. Esto permite enviar largos bloques como un grupo de partes, lo que generalmente hace que la red tenga una mejor utilización al utilizar transferencias paralelas, la posibilidad de pausar y continuar con los envios.

Este proceso consiste de tres pasos; la iniciación, la subida de las partes y el cierre. Despues de que S3 ensamble las partes un nuevo objeto sera creado.

En general es recomendable utiilzar multipart para objetos mayores de 100 Mb, y es un requisito para objetos mayores de 5 Gb.

Cuando se utilizan las APIs de bajo nivel, hay que realizar este proceso y monitorearlo. Cuando se utilizan las APIs de alto nivel como la linea de comandos (AWS CLI) el proceso es realizado de forma automática para objetos grandes.

🍿 Gama de GETs

Es posible descargar (GET) una porcion de un objeto de S3 y Glacier utilizando algo llamado Range GET. Utilizando la cabecera Range en la peticion HTTP GET o los parametros equivalente en alguna de las librerias de SDK al especificar el rango de bytes de un objeto. Esto es útil para manejar archivos de grandes dimensiones y solo se requiere una portcion de un largo respaldo de Glacier.

🍿 Replicación a través de diferentes regiones.

La replicación es una característica de S3 que permite de manera asyncrona replicar los objetos en el bucket de origen en una región AWS a un bucket destino en otra región. Cualquier metada y ACL asociado con el objeto tambien sera parte de la replicación. De igual forma, los cambios aplicados al bucket serán replicados al bucket destino.

Este proceso es generalmente utilizado para disminuir la latencia requerida para accesar objetos en S3, al proveer a los usuarios la información en regiones mas acordes a su locación geográfica.

Si se habilita en buckets existentes, solo los nuevos objetos serán replicados.

🍿 Logging.

Para mantener un monitoreo de las peticiones a los buckets de S3, se puede habilitar Amazon S3 server access logs. Esta característica se encuentra deshabilitada por default pero puede ser habilitada de forma muy sencilla. Solo hay que seleccionar donde los logs serán almacenados (bucket destino). Es posible almacenarlos en el mismo bucket o en uno distinto. Una recomendación habitual es utilizar un prefijo como logs/ para poder identificarlos.

Los logs incluyen información como:

🍿 Notificaciones de eventos.

Una notificación de evento puede ser enviada como respuesta de una acción realizada en un objeto almacenado en S3. Esto permite habilitar flujos de trabajo, enviar alertas o realizar otro tipo de acciones en respuesta a cambios en sus objetos almacenados en S3. Se pueden configurar notificaciones que disparen acciones como la codificación de archivos multipledia cuando estos sean subidos al bucket, o procesados cuando esten disponibles.

Las notificaciones son definidas al nivel del bucket, y se pueden configurar a traves de la consola de S3, de la REST API o utilizando AWS SDK.

S3 puede publicar notificaciones cuando los objetos sean creados por (PUT, POST, COPY o cuando se complete un envio multipart), cuando sean removidos (DELETE) o cuando S3 detecte que un objeto RRS (Reduced Redundancy Storage) se ha perdido. Las notificaciones pueden ser enviadas mediante SNS, SQS o Lambda.

🍿 Mejores prácticas, patrones y performance.

Es un patrón comun el uso de S3 en ambientes IT hibridos y en aplicaciones. Los datos pueden ser respaldados en S3 o Glacier, mientras la aplicacion primaria utiliza una base de datos.

Otro patrón comun es el uso de S3 como un almacenador de datos, mientras se mantiene un indice a esos datos en otro servicio, como DynamoDB o RDS. Esto permite busquedas rapidas en consultas copletas en nombres de archivos sin tener que listarlos continuamente.

S3 escalara automáticamente para brindar soporte a altas demandas, reparticionando los buckets como sea necesario. Si se requieren rangos de peticiones sobre los 100 por segundo, es recomendable leer las mejores practicas y las guias de uso de S3 en la guia del desarrollador. Esto permitirá asegurarse de un nivel de distribución aleatoria de las llaves, utilizando por ejemplo un hash como prefijo para su nomenclatura.

Encriptación en S3. Glacier.
comments powered by Disqus