servidor services que precio cuesta cuanto costo cloudfront aws amazon-s3 s3fs

amazon-s3 - services - precio de amazon s3



Establezca el control de caché para el depósito S3 completo de forma automática(¿utilizando políticas de depósito?) (7)

Ahora hay 3 formas de hacerlo: a través de AWS Console , a través de la línea de comando o mediante la herramienta de línea de comandos s3cmd .

Instrucciones de la consola AWS

Esta es ahora la solución recomendada. Es sencillo, pero puede llevar algo de tiempo.

  • Inicie sesión en la consola de administración de AWS
  • Entrar en el cubo S3
  • Seleccionar todos los archivos por ruta
  • Elija "Más" en el menú
  • Seleccione "Cambiar metadatos"
  • En el campo "Clave", seleccione "Control de caché" en el menú desplegable max-age = 604800Introducir (7 días) para Value
  • Presione el botón "Guardar"

( gracias a @CoderBoy - por favor, dale un poco de amor a continuación )

Solución de línea de comandos de AWS

Originalmente, cuando creé este cubo, las políticas eran un no ir, así que pensé cómo hacerlo usando aws-cli, y es bastante hábil. Al investigar, no pude encontrar ningún ejemplo en la naturaleza, así que pensé en publicar algunas de mis soluciones para ayudar a los necesitados.

NOTA: de forma predeterminada, aws-cli solo copia los metadatos actuales de un archivo, INCLUSO SI ESPECIFICA METADATOS NUEVOS.

Para usar los metadatos que se especifican en la línea de comandos, debe agregar el indicador ''--metadata-directive REPLACE''. Aquí hay algunos ejemplos.

Para un solo archivo

aws s3 cp s3://mybucket/file.txt s3://mybucket/file.txt --metadata-directive REPLACE / --expires 2034-01-01T00:00:00Z --acl public-read --cache-control max-age=2592000,public

Para un cubo completo (nota - bandera de respuesta):

aws s3 cp s3://mybucket/ s3://mybucket/ --recursive --metadata-directive REPLACE / --expires 2034-01-01T00:00:00Z --acl public-read --cache-control max-age=2592000,public

Encontré un poco, si solo quieres aplicarlo a un tipo de archivo específico, debes excluir todos los archivos, y luego incluir los que quieras.

Solo jpgs y pngs:

aws s3 cp s3://mybucket/ s3://mybucket/ --exclude "*" --include "*.jpg" --include "*.png" / --recursive --metadata-directive REPLACE --expires 2034-01-01T00:00:00Z --acl public-read / --cache-control max-age=2592000,public

Aquí hay algunos enlaces al manual si necesita más información:

Problemas conocidos:

"Unknown options: --metadata-directive, REPLACE"

esto puede ser causado por una respuesta obsoleta de awscli - see @ eliotRosewater a continuación

Herramienta S3cmd

S3cmd es una "herramienta de línea de comandos para administrar los servicios de Amazon S3 y CloudFront". Si bien esta solución requiere un git pull, podría ser una solución más simple y completa.

Para obtener instrucciones completas, consulte la publicación de @ ashishyadaveee11 a continuación

¡Espero eso ayude!

Necesito establecer encabezados de control de caché para un depósito s3 completo, tanto archivos existentes como futuros y esperaba hacerlo en una política de depósito. Sé que puedo editar los existentes y sé cómo especificarlos en put si los cargo yo mismo, pero desafortunadamente la aplicación que los carga no puede establecer los encabezados, ya que usa s3fs para copiar los archivos allí.


Ahora, puede cambiar fácilmente desde la consola de AWS.

  • Inicie sesión en la consola de administración de AWS
  • Entrar en el cubo S3
  • Seleccionar todos los archivos por ruta
  • Elija "Más" en el menú
  • Seleccione "Cambiar metadatos"
  • En el campo "Clave", selecciona "Control de caché" en el menú desplegable
  • max-age = 604800Ingrese (7 días) para Value
  • Presione el botón "Guardar"

Lleva tiempo ejecutar depende de tus archivos de cubetas. Rehaga desde el principio si cierra accidentalmente el navegador.


No creo que pueda especificar esto a nivel de paquete, pero hay algunas soluciones para usted.

  1. Copie el objeto a sí mismo en S3 configurando los encabezados de cache-control apropiados para la operación de copia.

  2. Especifique los encabezados de respuesta en la url de los archivos . Necesitará usar direcciones URL previamente firmadas para que esto funcione, pero puede especificar ciertos encabezados de respuesta en la cadena de consulta, incluido cache-control y expires . Para obtener una lista completa de las opciones disponibles, consulte: http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectGET.html?r=5225


Para aquellos que intentan usar la respuesta de Dan y obtener el error:

"Opciones desconocidas: --metadata-directive, REPLACE"

Me encontré con el problema, y ​​el problema fue que instalé awscli usando

sudo apt-get install awscli

Esto instaló una versión anterior del awscli al que le falta el comando --metadata-directive. Así que utilicé sudo apt-get remove awscli para eliminarlo.

Luego reinstalado siguiendo el procedimiento de amazon: http://docs.aws.amazon.com/streams/latest/dev/kinesis-tutorial-cli-installation.html

La única diferencia es que tuve que usar sudo -H debido a problemas de permisos con los que otros podrían toparse también.


Si mi puntaje de reputación fuera> 50, solo comentaría. Pero no es (todavía) así que aquí hay otra respuesta completa.

He estado golpeando mi cabeza en este problema desde hace un tiempo. Hasta que encontré y leí los documentos. Compartiendo eso aquí en caso de que ayude a alguien más:

Lo que terminó funcionando de manera confiable para mí fue este comando. Elegí un tiempo de expiración de 1 segundo para las pruebas para verificar los resultados esperados:

aws s3 cp / --metadata-directive REPLACE / --cache-control max-age=1,s-maxage=1 / s3://bucket/path/file / s3://bucket/path/file

  • --metadata-directive REPLACE es requerido cuando " cp " modifica los metadatos en un archivo existente en S3
  • max-age establece la max-age caché de CloudFront, en segundos
  • s-maxage establece el almacenamiento en caché del navegador, en segundos

Del mismo modo, si establece estos valores de encabezado de control de caché en un archivo mientras se carga en S3, el comando se vería así:

aws s3 cp / --cache-control max-age=1,s-maxage=1 / /local/path/file / s3://bucket/path/file



pasos

  1. git clone https://github.com/s3tools/s3cmd
  2. Ejecute s3cmd --configure (Se le solicitarán las dos claves: cópielas y péguelas desde su correo electrónico de confirmación o desde la página de su cuenta de Amazon. Tenga cuidado al copiarlas. Las mayúsculas y minúsculas se deben ingresar con precisión o se mantendrá obtener errores sobre firmas no válidas o similares. Recuerde agregar s3:ListAllMyBuckets permisos a las claves o obtendrá un error AccessDenied al probar el acceso.)
  3. ./s3cmd --recursive modify --add-header="Cache-Control:public ,max-age= 31536000" s3://your_bucket_name/