2012-11-19 21 views
8

Tôi hiện đang làm việc với Amazon S3.Có cách nào để chạm() trong Amazon S3 không?

Tôi đang viết chương trình kiểm tra ngày sửa đổi.

Điều tôi cần là giải pháp để chỉnh sửa ngày sửa đổi.

Tôi có thể lặp lại việc mua tất cả các tệp và lưu chúng như cũ, nhưng điều này nghe có vẻ giống như một giải pháp tồi.

Trong PHP có chức năng tuyệt vời này touch().

Có ai biết giải pháp hoặc có cùng vấn đề không? Làm ơn cho tôi biết.

Trả lời

5

Bạn có thể thực hiện tương tự thông qua yêu cầu copy object, chỉ định CopySource giống với khóa đích.

Thực chất, điều này sẽ đưa ra yêu cầu PUT Object - COPY tới S3 bằng khóa/khóa mục tiêu và nguồn tương ứng.

+0

Và bạn có biết chính xác điều này không? Nó có gửi một yêu cầu GET và PUT cho mỗi tệp không? –

+0

Đã chỉnh sửa câu trả lời của tôi để bao gồm thông tin này. – tkotisis

+0

Hoàn hảo. Cảm ơn! –

13

Để trả lời nhận xét của @Daniel Golden về câu trả lời @tkotisis. Dường như ít nhất các công cụ AWS CLI không cho phép bạn sao chép một mục vào chính nó. Tuy nhiên, bạn có thể 'buộc' một bản sao bằng cách cập nhật siêu dữ liệu.

$ aws s3 cp --metadata '{"touched":"now"}' s3://path/to/object s3://path/to/object 

Điều này tái tạo đối tượng (tải xuống cho người gọi và tải lên) thay thế nội dung, chủ sở hữu và siêu dữ liệu. Điều này cũng sẽ kích hoạt bất kỳ sự kiện Lambda đính kèm nào.