bài viết giới thiệu: Amazon S3 & Checksum, How to encode md5 sum into base64 in BASHLàm thế nào để lập trình có được MD5 Checksum của Amazon S3 tập tin sử dụng boto
tôi phải tải về một tập tin tar từ S3 xô với quyền truy cập hạn chế. [Chủ yếu là quyền truy cập chỉ dành cho tải về]
Sau khi tôi tải Tôi phải kiểm tra tổng kiểm tra md5 của file tải so với MD5-Check Sum của dữ liệu hiện nay như siêu dữ liệu trong S3
Tôi hiện đang sử dụng một Trình duyệt tập tin S3 để tự lưu ý "x-amz-meta-md5" của tiêu đề nội dung và xác nhận giá trị đó so với md5 tính của tệp đã tải xuống.
Tôi muốn biết nếu có cách lập trình sử dụng boto để nắm bắt giá trị băm md5 của tệp S3 như được đề cập dưới dạng siêu dữ liệu.
from boto.s3.connection import S3Connection
conn = S3Connection(access_key, secret_key)
bucket=conn.get_bucket("test-bucket")
rs_keys = bucket.get_all_keys()
for key_val in rs_keys:
print key_val, key_val.**HOW_TO_GET_MD5_FROM_METADATA(?)**
Vui lòng sửa nếu hiểu biết của tôi sai. Tôi đang tìm kiếm một cách để nắm bắt các dữ liệu tiêu đề lập trình
Cảm ơn đề xuất. Giá trị Etag dường như không khớp với tổng kiểm tra MD5 đã tính. Tôi cũng đã thấy trong các bài viết được giới thiệu rằng etag không phải là một giá trị thích hợp của MD5. "x-amz-meta-md5" là khóa trong trình duyệt Tập tin S3 của tôi cung cấp cho tôi giá trị MD5. Tuy nhiên, khóa này không có sẵn trong siêu dữ liệu hoặc tiêu đề nội dung được lấy theo chương trình. – user1652054
Thuộc tính '' etag'' sẽ có dạng '' "797cc49509a9df16481fac4fae144e0a" '' trong khi thuộc tính '' md5'' sẽ là '' 797cc49509a9df16481fac4fae144e0a''. Lưu ý các dấu ngoặc kép kèm theo trong '' etag''. Bạn cần tính đến điều đó khi so sánh các giá trị. Khóa '' x-amz-meta-md5'' không phải là giá trị siêu dữ liệu S3 chuẩn mà là giá trị tùy chỉnh. Có lẽ nó đã được thêm vào bởi trình duyệt File S3? – garnaat
Một nhận xét khác. Tôi đã xem xét mã nguồn của boto và xác nhận rằng boto tự động kiểm tra giá trị của '' etag'' header bằng tính toán '' md5'' khi tải xuống một tệp. Nó sẽ nâng cao ngoại lệ '' S3DataError'' nếu chúng không khớp. – garnaat