Đây là một số mã mẫu sao chép khóa S3. Có rất nhiều lý do bạn có thể muốn thực hiện việc này, một trong số đó là cập nhật siêu dữ liệu chính. Và trong khi điều này dường như là giải pháp được chấp nhận rộng rãi cho điều đó, thì có một vấn đề lớn. Vấn đề là khi tôi làm ví dụ dưới đây, tôi thực sự mất Content-Type của tôi, mặc định trở lại 'application/octet-stream' (không phải rất hữu ích nếu cố gắng để phục vụ hình ảnh trên web).boto.s3: copy() trên một đối tượng khóa mất metadata 'Content-Type'
# Get bucket
conn = S3Connection(self._aws_key, self._aws_secret)
bucket = conn.get_bucket(self._aws_bucket)
# Create key
k = Key(bucket)
k.key = key
# Copy old key
k.metadata.update({ meta_key: meta_value })
k2 = k.copy(k.bucket.name, k.name, k.metadata, preserve_acl=True)
k = k2
Bất kỳ ý tưởng nào? Cảm ơn.
'copy' chỉ trả về một bản sao nông của một đối tượng. Thử dùng 'deepcopy'. –
@ Jelel: boto không cung cấp bản in sâu. –