Il existe maintenant 3 façons d'y parvenir: via la console AWS , via la ligne de commande ou via l'outil de ligne de commande s3cmd .
Instructions de la console AWS
C'est maintenant la solution recommandée. C'est simple, mais cela peut prendre un certain temps.
- Connectez-vous à AWS Management Console
- Aller dans le compartiment S3
- Sélectionnez tous les fichiers par itinéraire
- Choisissez "Plus" dans le menu
- Sélectionnez "Modifier les métadonnées"
- Dans le champ "Clé", sélectionnez "Cache-Control" dans le menu déroulant max-age = 604800Entrez (7 jours) pour Valeur
- Appuyez sur le bouton "Enregistrer"
( merci à @biplob - merci de lui donner un peu d'amour ci-dessous )
Solution de ligne de commande AWS
À l'origine, lorsque j'ai créé ce bucket, les politiques étaient interdites, alors j'ai compris comment le faire en utilisant aws-cli, et c'est assez astucieux. Lors de mes recherches, je n'ai trouvé aucun exemple dans la nature, alors j'ai pensé publier certaines de mes solutions pour aider ceux qui en avaient besoin.
REMARQUE: par défaut, aws-cli copie uniquement les métadonnées actuelles d'un fichier, MÊME SI VOUS SPÉCIFIEZ DE NOUVELLES MÉTADONNÉES.
Pour utiliser les métadonnées spécifiées sur la ligne de commande, vous devez ajouter l'indicateur «--metadata-directive REPLACE». Voici quelques exemples.
Pour un seul fichier
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
Pour un compartiment entier (notez - indicateur recursive):
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 petit truc que j'ai trouvé, si vous ne voulez l'appliquer qu'à un type de fichier spécifique, vous devez exclure tous les fichiers, puis inclure ceux que vous voulez.
Uniquement jpgs et 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
Voici quelques liens vers le manuel si vous avez besoin de plus d'informations:
Problèmes connus:
"Unknown options: --metadata-directive, REPLACE"
cela peut être causé par un awscli obsolète - voir la réponse de @ eliotRosewater ci-dessous
Outil S3cmd
S3cmd est un «outil de ligne de commande pour la gestion des services Amazon S3 et CloudFront». Bien que cette solution nécessite un pull git, elle pourrait être une solution plus simple et plus complète.
Pour des instructions complètes, voir le post de @ ashishyadaveee11 ci-dessous
J'espère que ça aide!