Ahora hay 3 formas de hacerlo: a través de la Consola de AWS , a través de la línea de comandos o mediante la herramienta de línea de comandos s3cmd .
Instrucciones de la consola de AWS
Esta es ahora la solución recomendada. Es sencillo, pero puede llevar algún tiempo.
- Inicie sesión en la consola de administración de AWS
- Entra en el depósito S3
- Seleccionar todos los archivos por ruta
- Elija "Más" en el menú
- Seleccione "Cambiar metadatos"
- En el campo "Clave", seleccione "Cache-Control" del menú desplegable max-age = 604800 Ingrese (7 días) para Valor
- Presione el botón "Guardar"
( gracias a @biplob, por favor dale un poco de amor a continuación )
Solución de línea de comandos de AWS
Originalmente, cuando creé este depósito, las políticas no funcionaban, 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 ESPECIFICAS NUEVOS METADATOS.
Para usar los metadatos que se especifican en la línea de comando, debe agregar la marca '--metadata-directive REPLACE'. A continuación se muestran 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 depósito completo (nota: bandera recursiva):
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
Un pequeño problema que encontré, si solo desea aplicarlo a un tipo de archivo específico, debe excluir todos los archivos y luego incluir los que desee.
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 un awscli desactualizado - vea la respuesta de @ 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!