¿Que es el control de versiones?
Ayuda a proteger sus datos contra borrado accidental o malicioso, manteniendo múltiples versiones de cada objeto en el bucket que están identificadas cada con un identificador de versión.
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 estado original a través 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.
¿Qué es el MFA Delete?
Añade una capa adicional de protección al control de versiones al solicitar identificació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.
¿Qué son las URLS previamente autorizadas en Amazon S3?
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 expiración. Esto es particularmente útil para prevenir content scrapping de contenidos multimedia.
¿Qué es el envío de tipo multipart?
Para mejor soporte al enviar o copiar objetos grandes, S3 provee la API para envíos 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 envíos.
Este proceso consiste de tres pasos; la iniciación, la subida de las partes y el cierre. Después de que S3 ensamble las partes un nuevo objeto sera creado.
En general es recomendable utilizar 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 porción de un objeto de S3 y Glacier utilizando algo llamado Range GET. Utilizando la cabecera Range en la petición HTTP GET o los parámetros equivalente en alguna de las librerías 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 porción de un largo respaldo de Glacier.
¿Qué es la replicación en Amazon S3?
La replicación es una característica de S3 que permite de manera asíncrona replicar los objetos en el bucket de origen en una región AWS a un bucket destino en otra región. Cualquier metadato y ACL asociado con el objeto también 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 acceder 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.
¿Cómo funciona el sistema de logs en Amazon S3?
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.
¿Qué tipo de información incluyen información los logs de Amazon S3?
- Cuenta que realiza la petición y su IP.
- Nombre del bucket.
- Tiempo de la petición.
- Acción (GET, PUT, LIST y otros).
- Estatus de la respuesta o código de error.
¿Qué son las notificaciones de eventos en Amazon S3?
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 multimedia cuando estos sean subidos al bucket, o procesados cuando estén disponibles.
Las notificaciones son definidas al nivel del bucket, y se pueden configurar a través 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 envío 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.
¿Cuáles son las mejores prácticas, patrones y performance de Amazon S3?
Es un patrón común el uso de S3 en ambientes IT híbridos y en aplicaciones. Los datos pueden ser respaldados en S3 o Glacier, mientras la aplicación primaria utiliza una base de datos.
Otro patrón común 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 búsquedas rápidas en consultas completas 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 guías de uso de S3 en la guía 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.