Tôi đang cập nhật các đối tượng hiện có trong thùng S3 của Amazon để đặt một số siêu dữ liệu. Tôi muốn đặt tiêu đề HTTP Expires
cho từng đối tượng để xử lý tốt hơn các máy khách HTTP/1.0.Đặt tiêu đề hết hạn cho đối tượng S3 hiện có bằng AWS Java SDK
Chúng tôi đang sử dụng AWS Java SDK, cho phép siêu dữ liệu thay đổi thành đối tượng mà không cần tải lên lại nội dung đối tượng. Chúng tôi làm điều này bằng cách sử dụng CopyObjectRequest để sao chép một đối tượng cho chính nó. Lớp ObjectMetadata cho phép chúng tôi đặt Cache-Control
, Content-Type
và một số tiêu đề khác. Nhưng không phải tiêu đề Expires
.
Tôi biết rằng S3 lưu trữ và phục vụ tiêu đề Expires
cho các đối tượng PUT sử dụng API REST. Có cách nào để thực hiện điều này từ SDK Java không?
cập nhật để chỉ ra rằng chúng ta đang sử dụngCopyObjectRequest
Tôi nên giải thích rõ hơn là chúng tôi đang sử dụng 'CopyObjectRequest' để thực hiện việc này ngay bây giờ. Tôi đã cập nhật câu hỏi để phản ánh điều này. – bkirkbri
'ObjectMetadata.setHeader' được đánh dấu là chỉ sử dụng nội bộ. Bạn đã sử dụng thành công chưa? Mã của chúng tôi chỉ được chạy một lần, vì vậy chúng tôi sẽ không cần phải lo lắng về nó sau này nếu Amazon thực hiện thay đổi. Nhưng YMMV. – bkirkbri
Hmmh, tôi đã không nhận thức được rằng hạn chế thực sự, nhưng nhớ lại đã sử dụng 'Hết hạn: 'tại một số điểm một thời gian trở lại; Tôi có thể sai, mặc dù tôi thường sử dụng các SDK khác để tương tác với S3 (ví dụ C#/Python, mà chắc chắn hỗ trợ điều này) và có thể trộn lẫn lên - bản thân mã không khác với 'setXYZHeader()' khác phương pháp hiện tại (xem [ObjectMetadata.java] (https://github.com/amazonwebservices/aws-sdk-for-java/blob/master/src/main/java/com/amazonaws/services/s3/model/ObjectMetadata. java # L141)), do đó, các hạn chế sẽ được dựa trên một tác dụng phụ không nhìn thấy được, nếu có. –