2012-06-08 28 views
15

Tôi có tệp trên amazon S3 có hậu tố ".bin.gz". Tôi muốn trình duyệt web coi đó là tệp HTML được nén. Vì vậy, tôi có thể vào giao diện điều khiển web Amazon S3 (https://console.aws.amazon.com/s3/home) và điều hướng đến tệp và chọn nó. Ở đó, trong thuộc tính, tôi có thể chuyển đến tab Siêu dữ liệu và thêm các chỉ thị sau:Cố gắng đặt siêu dữ liệu trên tệp Amazon S3 bằng s3cmd

Content-Type: text/html 
Content-Encoding: gzip 

Điều này hoạt động như mong đợi. Đó là phần dễ dàng.

Bây giờ, tôi muốn làm điều tương tự với hàng trăm (hoặc có thể là hàng triệu) tệp tại thời điểm chúng là PUT trên S3.

Tôi đã thử sử dụng s3cmd với tùy chọn --add-header, tuy nhiên điều đó mang lại cho tôi lỗi chữ ký khi tôi cố đặt Loại nội dung. Hơn nữa, tôi khá chắc chắn rằng làm điều đó sẽ chỉ ảnh hưởng đến các tiêu đề được gửi tại thời điểm hoạt động PUT, và không phải là siêu dữ liệu được lưu trữ với tài liệu.

Vì vậy, tôi đang tìm cách để làm điều này, lý tưởng với s3cmd. Nếu điều đó là không thể, tôi sẽ đánh giá cao nếu ai đó có thể đề xuất một thư viện python có khả năng áp dụng siêu dữ liệu cho một tập tin trên s3.

Phải có cách để thực hiện việc này mà không phải đặt thủ công trong bảng điều khiển.

Trả lời

22

Sử dụng -m cho thiết lập các kiểu MIME (mà sẽ được gửi dưới dạng các Content-Type tiêu đề trên yêu cầu tiếp theo:.

s3cmd -m text/html --add-header='Content-Encoding: gzip' put [files] s3://... 
+1

Cảm ơn câu trả lời nhanh tôi đã cố gắng đó và content-type của tập tin tải lên vẫn như "application/octet-stream" – chaimp

+1

OK, cảm ơn! Tôi chỉ cần thay đổi 'guess_mime_type = False' trong tập tin cấu hình s3 của tôi – chaimp

+0

@jeffp Vâng, tôi đoán là tôi đã có cài đặt đó là' False'. gắn cờ để không đoán kiểu MIME mỗi khi bạn chạy lệnh quá nếu bạn muốn giữ nguyên cài đặt đó theo mặc định – Paulpro

Các vấn đề liên quan