Almacenamiento de objetos S3
El servicio de storage en S3 está pensado para almacenar datos fríos, es decir, orientado a grandes cantidades de información de uso muy infrecuente que deben permanecer congelados por largos periodos de tiempo. S3 no puede utilizarse como un espacio de scratch o para trabajar habitualmente con los archivos almacenados, ya que los archivos no se pueden modificar una vez guardados. Para hacerlo, hay que descargarlos, llevar a cabo los cambios y volver a subirlos al almacén.
CONFIGURACIÓN DEL CLIENTE
Aunque existen otras alternativas, la documentación se basa en el uso de aws cli, descargable en : https://docs.aws.amazon.com/es_es/cli/latest/userguide/getting-started-install.html
Una vez entregados los credenciales al usuario, éste procederá a configurar la herramienta cliente con :
aws configure --profile=nombre_perfil
Es recomendable trabajar con perfiles, dado que así podremos configurar diferentes juegos de credenciales para acceder a distintos almacenamientos S3.
Indicando :
AWS Access Key ID AWS Secret Access Key
y dejando por defecto las opciones de :
Default region name [None]:
Default output format [None]:
COMANDOS BÁSICOS
Listado de buckets :
aws s3 ls --endpoint=http://url_del_endpoint --profile=nombre_perfil
Listado de elementos de un bucket :
aws s3 ls nombre_bucket --endpoint=http://url_del_endpoint --profile=nombre_perfil
Subir archivo a un bucket :
aws s3 cp nombre_archivo s3://nombre_bucket/ --endpoint=http://url_del_endpoint --profile=nombre_perfil
** NOTA IMPORTANTE: En caso de que el tamaño del archivo sea superior a 50Gb, será necesario incluir el parámetro**
--expected-size num_bytes
de lo contrario, el proceso de upload puede fallar. https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html*
Descargar un archivo desde el bucket a nuestro equipo :
aws s3 cp s3://nombre_bucket/nombre_archivo carpeta_local --endpoint=http://url_del_endpoint --profile=nombre_perfil
Borrar elemento de un bucket :
aws s3 rm s3://nombre_bucket/nombre_archivo --endpoint=http://url_del_endpoint --profile=nombre_perfil
COMANDOS AVANZADOS
Ver : https://docs.aws.amazon.com/AmazonS3/latest/API/API_Object.html
Enviar un archivo indicando su md5 para verificación :
1.Calcular el md5
openssl md5 nombre_archivo
2.Calcular el md5 en formato Base64
openssl md5 --binary nombre_archivo |base64
3.Subir el archivo indicando el valor para comprobación. El sistema verificará que el valor de md5 al terminar el upload del archivo sea el que hemos indicado :
aws s3api put-object --bucket nombre_bucket --key nombre_archivo --body nombre_archivo --content-md5 "md5_formato_base64" --endpoint=https://url_del_endpoint --profile=nombre_perfil
Si se produce algún error, el sistema lo indicará; de lo contrario nos mostrará información acerca del md5 del archivo, aunque no en base 64. Corresponderá al valor calculado en el paso 1.
{
"ETag": "\"valor_calculado_en_paso_uno\""
}
Obtener los md5sum de los archivos de un bucket :
aws s3api list-objects --bucket nombre_del_bucket --endpoint=http://url_del_endpoint --profile=nombre_perfil
Obtener el md5sum de un archivo :
aws s3api head-object --bucket nombre_del_bucket --key nombre_archivo --query ETag --output text --endpoint=http://url_del_endpoint --profile=nombre_perfil
** NOTA : El valor de ETag difiere del archivo original si se sube con aws put. Para usar códigos md5 de comprobación, debería utilizarse aws s3api put-object**