revalidate putobject must control cloudfront cache amazon-web-services amazon-s3 s3cmd

amazon web services - putobject - cómo agregar control de caché en AWS S3?



cloudfront cache (8)

He movido 20000 archivos a AWS S3 mediante el comando s3cmd. Ahora quiero agregar control de caché para todas las imágenes (.jpg)

Estos archivos se encuentran en (s3: // bucket-name / images /). ¿Cómo puedo agregar control de caché para todas las imágenes por s3cmd o hay alguna otra forma de agregar encabezado?

Gracias


(Dado que OP pidió otro modo)

También puede hacerlo a través de aws-cli , p. Ej. (V: aws-cli/1.8.8 Python/2.7.2 Darwin/12.5.0 ):

aws s3api put-object / --bucket mybucket / --key my/key / --cache-control max-age=1 / --body myfile.txt

Aunque tenga en cuenta que reescribirá cualquier objeto existente.


Mi cubo tiene mp4, jpg y otros archivos. Los archivos que quería actualizar se almacenan en un "subcance" (por ejemplo: https://s3.amazonaws.com/my.bucket/sub-directory/my-video.mp4 ). En mi caso, solo quería actualizar el control de caché en los archivos mp4:

aws s3 cp / s3://my.bucket/sub-directory/ s3://my.bucket/sub-directory/ / --exclude ''*.jpg'' --exclude ''*.png'' / --cache-control ''max-age=31104000'' / --recursive

Para probar lo que hará, puede usar el indicador --dryrun :

aws s3 cp --dryrun / s3://my.bucket/sub-directory/ s3://my.bucket/sub-directory/ / --exclude ''*.jpg'' --exclude ''*.png'' / --cache-control ''max-age=31104000'' / --recursive


Otra forma muy simple de hacer esto es usar el navegador S3: http://s3browser.com/ . Simplemente puede cambiar el clic o ctrl + a para seleccionar todas las imágenes que desee; luego solo vaya a la pestaña ''Encabezados HTTP'' y haga clic en ''Agregar nuevo encabezado'' y luego ''Aplicar cambios''. Mantenía automáticamente todos mis otros permisos y encabezados.

Si usas S3 mucho; es una aplicación dulce de todos modos, especialmente si tienes cargas enormes (¡no hay nada mejor en el mundo de ftp, dropbox o de otro modo!)


Para ajustar metadatos como el control de caché en un objeto en S3 sin tener que volver a subirlo y sin tener que usar herramientas de terceros, puede hacer lo siguiente con la CLI de AWS. Copia el objeto a sí mismo al anular los metadatos con la configuración elegida:

aws s3api copy-object --copy-source <bucket-name>/<file> --bucket <bucket-name> --key <file> --metadata-directive REPLACE --cache-control "max-age=3600"

Procese este comando en un descubrimiento para hacerlo en un conjunto existente de archivos que ya existe en el depósito, como usted menciona:

find . -type f -exec aws s3api copy-object --copy-source <bucket-name>/{} --bucket <bucket-name> --key {} --metadata-directive REPLACE --cache-control "max-age=3600"

reemplace <bucket-name> con el nombre de su cubo

ADVERTENCIA: esto sobrescribirá todos sus metadatos existentes en los archivos como acl, simplemente agregue indicadores adicionales al comando, por ejemplo, --acl public-read para establecer lo que necesita (gracias @jackson)


Simplemente actualice el s3cmd a la versión 1.5.1 y el problema se resolverá.


También con el propio cliente de AWS:

aws s3 sync /path s3://yourbucket/ --recursive --cache-control max-age=604800


Por favor, pruebe la rama maestra actual upstream ( https://github.com/s3tools/s3cmd ), ya que ahora tiene un comando de modify , utilizado de la siguiente manera:

./s3cmd --recursive modify --add-header="Cache-Control:max-age=86400" s3://yourbucket/


PUT / ObjectName HTTP/1.1 Host: BucketName .s3.amazonaws.com Date: date x-amz-meta-Cache-Control : max-age= <value in seconds> Authorization: signatureValue

Cada configuración de Metadata contiene un par de clave-valor. La clave de metadatos del control de caché es "Cache-Control" y Value es “max-age=<time for which you want your object to be accessed from cache in seconds>”

Puede configurar el Encabezado personalizado de control de caché para los objetos de Amazon S3 enviando la solicitud HTTP PUT al servidor de Amazon S3 con los encabezados apropiados de dos maneras:

Establecer metadatos de control de caché con Amazon S3 REST API PUT Solicitud de objeto: si es un programador, puede escribir su propio programa de software para utilizar las API REST o SOAP de Amazon S3 para establecer Encabezados personalizados con Solicitud de objeto PUT. Este sitio web solo hace referencia a las API REST de Amazon S3, consulte el sitio web de documentación de AWS para obtener detalles sobre cómo usar las API SOAP. Establecer metadatos de control de caché utilizando la interfaz de usuario de Bucket Explorer: si desea establecer encabezados HTTP personalizados como Cache Control con clics del mouse en lugar de escribir un programa de software, puede usar la interfaz de usuario de Bucket Explorer para eso. Con este Encabezado HTTP personalizado, puede especificar el comportamiento de almacenamiento en caché que se debe seguir con la cadena de solicitud / respuesta y para evitar que el caché interfiera con la solicitud o respuesta.

Para obtener más información, consulte ¿Cómo establecer el encabezado de control de caché para el objeto Amazon S3? `