ขณะนี้มี 3 วิธีที่จะได้รับนี้ทำ: ผ่านคอนโซล AWS , ผ่านบรรทัดคำสั่งหรือผ่านทางเครื่องมือบรรทัดคำสั่ง s3cmd
คำแนะนำคอนโซล AWS
นี่เป็นวิธีแก้ปัญหาที่แนะนำ ตรงไปตรงมา แต่อาจต้องใช้เวลาสักระยะ
- เข้าสู่ระบบ AWS Management Console
- ไปที่ถัง S3
- เลือกไฟล์ทั้งหมดตามเส้นทาง
- เลือก "เพิ่มเติม" จากเมนู
- เลือก "เปลี่ยนข้อมูลเมตา"
- ในฟิลด์ "คีย์" เลือก "การควบคุมแคช" จากเมนูแบบเลื่อนลง max-age = 604800 ป้อน (7 วัน) สำหรับค่า
- กดปุ่ม "บันทึก"
( ขอบคุณ @biplob - โปรดมอบความรักให้เขาด้านล่าง )
โซลูชัน AWS Command Line
เดิมทีเมื่อฉันสร้างนโยบายที่เก็บข้อมูลนี้ไม่ต้องไปเลยฉันจึงคิดว่าจะทำอย่างไรโดยใช้ aws-cli และมันก็ค่อนข้างเนียน เมื่อค้นคว้าฉันไม่พบตัวอย่างใด ๆ ในป่าดังนั้นฉันจึงคิดว่าจะโพสต์วิธีแก้ปัญหาบางอย่างเพื่อช่วยเหลือผู้ที่ต้องการความช่วยเหลือ
หมายเหตุ: ตามค่าเริ่มต้น aws-cli จะคัดลอกเฉพาะข้อมูลเมตาปัจจุบันของไฟล์แม้ว่าคุณจะระบุข้อมูลเมตาใหม่ก็ตาม
ในการใช้ข้อมูลเมตาที่ระบุในบรรทัดคำสั่งคุณต้องเพิ่มแฟล็ก '--metadata-directive REPLACE' นี่คือตัวอย่างบางส่วน
สำหรับไฟล์เดียว
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
สำหรับที่เก็บข้อมูลทั้งหมด (หมายเหตุ - ค่าสถานะย้อนกลับ):
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
ฉันพบ gotcha เล็กน้อยหากคุณต้องการใช้กับไฟล์ประเภทใดประเภทหนึ่งเท่านั้นคุณต้องยกเว้นไฟล์ทั้งหมดจากนั้นรวมไฟล์ที่คุณต้องการ
เฉพาะ jpgs และ 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
ลิงค์ไปยังคู่มือนี้หากคุณต้องการข้อมูลเพิ่มเติม:
ปัญหาที่ทราบ:
"Unknown options: --metadata-directive, REPLACE"
สิ่งนี้อาจเกิดจาก awscli ล้าสมัย - ดูคำตอบของ @ eliotRosewater ด้านล่าง
เครื่องมือ S3cmd
S3cmd เป็น "เครื่องมือบรรทัดคำสั่งสำหรับจัดการบริการ Amazon S3 และ CloudFront" แม้ว่าโซลูชันนี้ต้องใช้การดึงคอมไพล์ แต่ก็อาจเป็นโซลูชันที่ง่ายและครอบคลุมมากกว่า
ดูคำแนะนำแบบเต็มได้ที่โพสต์ของ @ ashishyadaveee11 ด้านล่าง
หวังว่าจะช่วยได้!