Hiện có 3 cách để thực hiện việc này: qua Bảng điều khiển AWS , qua dòng lệnh hoặc thông qua công cụ dòng lệnh s3cmd .
Hướng dẫn Bảng điều khiển AWS
Đây là giải pháp được khuyến nghị. Nó là thẳng về phía trước, nhưng có thể mất một thời gian.
- Đăng nhập vào Bảng điều khiển quản lý AWS
- Đi vào nhóm S3
- Chọn tất cả các tệp theo tuyến
- Chọn "Thêm" từ menu
- Chọn "Thay đổi siêu dữ liệu"
- Trong trường "Khóa", chọn "Kiểm soát bộ nhớ cache" từ menu thả xuống max-age = 604800Enter (7 ngày) cho Giá trị
- Nhấn nút "Lưu"
( cảm ơn @biplob - hãy dành tình cảm cho anh ấy bên dưới )
Giải pháp dòng lệnh AWS
Ban đầu, khi tôi tạo các chính sách nhóm này là không có tác dụng, vì vậy tôi đã tìm cách thực hiện nó bằng aws-cli, và nó khá trơn tru. Khi nghiên cứu, tôi không thể tìm thấy bất kỳ ví dụ nào trong tự nhiên, vì vậy tôi nghĩ rằng tôi sẽ đăng một số giải pháp của mình để giúp những người cần.
LƯU Ý: Theo mặc định, aws-cli chỉ sao chép siêu dữ liệu hiện tại của tệp, NGAY CẢ NẾU BẠN CỤ THỂ DỮ LIỆU MỚI.
Để sử dụng siêu dữ liệu được chỉ định trên dòng lệnh, bạn cần thêm cờ '--metadata-directive REPLACE'. Đây là một số ví dụ.
Đối với một tệp duy nhất
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
Đối với toàn bộ nhóm (lưu ý - cờ đệ quy):
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
Tôi tìm thấy một chút hiểu biết nhỏ, nếu bạn chỉ muốn áp dụng nó cho một loại tệp cụ thể, bạn cần phải loại trừ tất cả các tệp, sau đó bao gồm những tệp bạn muốn.
Chỉ jpgs và 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
Dưới đây là một số liên kết đến sách hướng dẫn nếu bạn cần thêm thông tin:
Các vấn đề đã biết:
"Unknown options: --metadata-directive, REPLACE"
điều này có thể do awscli lỗi thời - xem câu trả lời của @ eliotRosewater bên dưới
Công cụ S3cmd
S3cmd là một "Công cụ dòng lệnh để quản lý các dịch vụ Amazon S3 và CloudFront". Mặc dù giải pháp này yêu cầu git pull, nhưng nó có thể là một giải pháp đơn giản và toàn diện hơn.
Để được hướng dẫn đầy đủ, hãy xem bài đăng của @ ashishyadaveee11 bên dưới
Hy vọng nó giúp!