Agora existem três maneiras de fazer isso: por meio do AWS Console , da linha de comando ou da ferramenta de linha de comando s3cmd .
Instruções do console AWS
Esta agora é a solução recomendada. É simples, mas pode levar algum tempo.
- Faça login no AWS Management Console
- Vá para o balde S3
- Selecione todos os arquivos por rota
- Escolha "Mais" no menu
- Selecione "Alterar metadados"
- No campo "Chave", selecione "Cache-Control" no menu suspenso max-age = 604800Enter (7 dias) para Valor
- Pressione o botão "Salvar"
( obrigado a @biplob - por favor, dê a ele um pouco de amor abaixo )
Solução de linha de comando AWS
Originalmente, quando criei este balde, as políticas eram proibidas, então descobri como fazê-lo usando o aws-cli, e é muito inteligente. Ao pesquisar, não consegui encontrar nenhum exemplo na natureza, então pensei em postar algumas das minhas soluções para ajudar os necessitados.
NOTA: Por padrão, o aws-cli copia apenas os metadados atuais de um arquivo, MESMO QUE VOCÊ ESPECIFICAR NOVOS METADADOS.
Para usar os metadados especificados na linha de comando, você precisa adicionar o sinalizador '--metadata-Directive REPLACE'. Aqui estão alguns exemplos.
Para um único arquivo
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 um intervalo inteiro (observe - sinalizador recursivo):
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
Descobri um pequeno problema, se você deseja aplicá-lo apenas a um tipo de arquivo específico, é necessário excluir todos os arquivos e incluir os que deseja.
Apenas jpgs e 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
Aqui estão alguns links para o manual se você precisar de mais informações:
Problemas conhecidos:
"Unknown options: --metadata-directive, REPLACE"
isso pode ser causado por um awscli desatualizado - veja a resposta de @eliotRosewater abaixo
Ferramenta S3cmd
S3cmd é uma "ferramenta de linha de comando para gerenciar serviços do Amazon S3 e do CloudFront". Embora essa solução exija um git pull, ela pode ser uma solução mais simples e abrangente.
Para obter instruções completas, consulte a postagem de @ ashishyadaveee11 abaixo
Espero que ajude!