สารละลาย
aws s3 mb s3://[new-bucket]
aws s3 sync s3://[old-bucket] s3://[new-bucket]
aws s3 rb --force s3://[old-bucket]
คำอธิบาย
ไม่มีฟังก์ชั่นการเปลี่ยนชื่อที่เก็บข้อมูลสำหรับ S3 เพราะในทางเทคนิคไม่มีโฟลเดอร์ใน S3 ดังนั้นเราต้องจัดการทุกไฟล์ภายในที่เก็บข้อมูล
รหัสด้านบนจะ 1. สร้างที่เก็บข้อมูลใหม่ 2. คัดลอกไฟล์ทับและ 3 ลบที่เก็บข้อมูลเก่า แค่นั้นแหละ.
หากคุณมีไฟล์จำนวนมากในที่เก็บข้อมูลและคุณกังวลเกี่ยวกับค่าใช้จ่ายอ่านต่อไป เบื้องหลังสิ่งที่เกิดขึ้นคือไฟล์ทั้งหมดในที่เก็บข้อมูลจะถูกคัดลอกก่อนแล้วจึงลบออก ควรมีค่าใช้จ่ายจำนวนเล็กน้อยหากคุณมีไฟล์ไม่กี่พันไฟล์ ตรวจสอบคำตอบนี้เพื่อดูว่าจะมีผลกระทบอย่างไร
ตัวอย่าง
ในตัวอย่างต่อไปนี้เราสร้างและเติมที่ฝากข้อมูลเก่าแล้วซิงค์ไฟล์กับอันใหม่ ตรวจสอบผลลัพธ์ของคำสั่งเพื่อดูว่า 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