Solution
aws s3 mb s3://[new-bucket]
aws s3 sync s3://[old-bucket] s3://[new-bucket]
aws s3 rb --force s3://[old-bucket]
Explication
Il n'y a pas de fonctionnalité de renommage pour S3 car il n'y a techniquement pas de dossiers dans S3 et nous devons donc gérer chaque fichier à l'intérieur du seau.
Le code ci-dessus va 1. créer un nouveau panier, 2. copier les fichiers et 3. supprimer l'ancien panier. C'est tout.
Si vous avez beaucoup de fichiers dans votre seau et que vous vous inquiétez des coûts, lisez ce qui suit. En coulisses, tous les fichiers contenus dans la corbeille sont d'abord copiés, puis supprimés. Le coût devrait être insignifiant si vous avez quelques milliers de fichiers. Dans le cas contraire, vérifiez cette réponse pour voir quel serait l'impact sur vous.
Exemple
Dans l'exemple suivant, nous créons et remplissons l'ancien seau, puis synchronisons les fichiers avec le nouveau. Vérifiez la sortie des commandes pour voir ce que fait AWS.
> # bucket suffix so we keep it unique
> suffix="ieXiy2" # used `pwgen -1 -6` to get this
>
> # populate old bucket
> echo "asdf" > asdf.txt
> echo "yxcv" > yxcv.txt
> aws s3 mb s3://old-bucket-$suffix
make_bucket: old-bucket-ieXiy2
> aws s3 cp asdf.txt s3://old-bucket-$suffix/asdf.txt
upload: ./asdf.txt to s3://old-bucket-ieXiy2/asdf.txt
> aws s3 cp yxcv.txt s3://old-bucket-$suffix/yxcv.txt
upload: ./yxcv.txt to s3://old-bucket-ieXiy2/yxcv.txt
>
> # "rename" to new bucket
> aws s3 mb s3://new-bucket-$suffix
make_bucket: new-bucket-ieXiy2
> aws s3 sync s3://old-bucket-$suffix s3://new-bucket-$suffix
copy: s3://old-bucket-ieXiy2/yxcv.txt to s3://new-bucket-ieXiy2/yxcv.txt
copy: s3://old-bucket-ieXiy2/asdf.txt to s3://new-bucket-ieXiy2/asdf.txt
> aws s3 rb --force s3://old-bucket-$suffix
delete: s3://old-bucket-ieXiy2/asdf.txt
delete: s3://old-bucket-ieXiy2/yxcv.txt
remove_bucket: old-bucket-ieXiy2