Tôi có một tệp chứa trong khóa trong thùng S3 của mình. Tôi muốn tạo một khóa mới, sẽ chứa cùng một tệp. Có thể thực hiện mà không tải xuống tệp đó không? Tôi đang tìm một giải pháp trong Python (và tốt nhất là thư viện boto).Làm thế nào để sao chép một khóa trong Amazon S3 bằng cách sử dụng Python (và boto)?
Trả lời
S3 cho phép đối tượng theo bản sao đối tượng. Thao tác CopyObject tạo bản sao của đối tượng khi bạn chỉ định khóa và nhóm của đối tượng nguồn và khóa và nhóm của đích đích. Không chắc chắn liệu boto có thực hiện nhỏ gọn hay không.
Duyệt qua mã nguồn của boto Tôi thấy rằng đối tượng Key có phương thức "sao chép". Cảm ơn bạn đã đề xuất về hoạt động CopyObject.
đâu xô là xô đến:
bucket.copy_key(new_key,source_bucket,source_key)
Điều này thực sự đọc chìa khóa và đặt nó trong thùng mới - đó không phải là những gì bạn muốn. Lấy làm tiếc. –
Tôi không tin điều này là chính xác. Đây là câu trả lời hay nhất IMO. Phương thức 'copy_key' chuyển tiêu đề' x-amz-copy-source' trong một yêu cầu PUT, cho phép S3 sao chép trực tiếp từ vùng này sang vùng khác, mà không cần tải xuống máy của bạn. – sergiopereira
Đây là tài liệu của họ: http://boto.cloudhackers.com/en/latest/ref/s3.html#boto.s3.bucket.Bucket.copy_key – creimers
Mặc dù không ai hỏi, tôi nghĩ rằng nó có thể liên quan đến hiển thị như thế nào để làm điều này với simples3
:
>>> b.copy("my_bucket/file.txt", "file_copy.txt", acl="public")
Tôi không chắc chắn những gì Boto có ở đây, nhưng đáng chú ý là các quyền (ACL) sẽ không được sao chép bởi S3, nó sẽ được đặt lại thành "riêng tư" nếu không có gì khác được chỉ định. Để sao chép ACL, trước tiên bạn phải yêu cầu.
Tôi thứ hai nhận xét này liên quan đến các quyền (sau khi gặp lỗi) 'dest_bucket .copy_key (key.name, src_bucket_name, key.name, preserve_acl = True) ' – nsof
Lưu ý rằng phương thức 'copy' trên đối tượng Key có tham số "preserve_acl" (False theo mặc định) sẽ sao chép ACL của nguồn vào đối tượng đích.
from boto.s3.key import Key
#Get source key from bucket by name
source_key = source_bucket.get_key(source_key_name)
#Copy source key to a new bucket with a new key name (can be the same as source)
#Note: source_key is Key
source_key.copy(dest_bucket_name,dest_key_name)
#The signature of boto's Key class:
def copy(self, dst_bucket, dst_key, metadata=None,
reduced_redundancy=False, preserve_acl=False,
encrypt_key=False, validate_dst_bucket=True)
#set preserve_acl=True to copy the acl from the source key
- 1. Boto Amazon S3: Làm cách nào để đổi tên một tệp trong một nhóm?
- 2. Sử dụng Boto để kết nối với S3 bằng Python
- 3. Amazon S3 boto - cách xóa thư mục?
- 4. Làm thế nào tôi có thể sử dụng boto để truyền tệp ra khỏi Amazon S3 tới Cloudspace của Rackspace?
- 5. Sao chép dữ liệu từ S3 sang AWS bằng cách sử dụng python và psycopg2
- 6. Làm thế nào để sao chép hiệu quả tất cả các tệp từ một thư mục này sang thư mục khác trong thùng chứa aazon S3 bằng boto?
- 7. sao chép tệp từ amazon s3 sang hdfs bằng cách sử dụng s3distcp không thành công
- 8. Cách tạo url tạm thời để tải tệp lên Amazon S3 bằng thư viện boto?
- 9. Làm thế nào để xóa một phiên bản s3 từ một xô sử dụng boto và trăn
- 10. Làm thế nào để lập trình có được MD5 Checksum của Amazon S3 tập tin sử dụng boto
- 11. Phân trang trong Amazon DynamoDB bằng Boto
- 12. Tải lên Amazon S3 bằng cách sử dụng cURL/libcurl
- 13. Làm thế nào để cấu hình django-máy nén và django-staticfiles với S3 của Amazon?
- 14. Làm thế nào để xác định quyền ở Amazon s3
- 15. Làm cách nào để sao chép các tệp từ S3 sang Amazon EMR HDFS?
- 16. Làm cách nào để sao chép/sao chép một thư mục trên S3?
- 17. Làm thế nào để sao chép một khu vực hình ảnh bằng cách sử dụng opencv trong python?
- 18. Tải xuống tệp từ s3 đệ quy bằng boto python.
- 19. Hết hạn đối tượng S3 bằng boto
- 20. Làm thế nào để nhận được tin nhắn được đếm trong SQS của Amazon bằng cách sử dụng thư viện boto bằng Python?
- 21. Cách tải tệp lên thư mục trong thùng S3 bằng boto
- 22. Làm thế nào để sao chép/sao chép một điều khiển (với điều khiển con) bằng cách sử dụng asp.net?
- 23. Làm thế nào để sao chép một lớp python?
- 24. Sử dụng s3distcp với Amazon EMR để sao chép một tệp đơn
- 25. Python: Amazon S3 không thể lấy xô: nói 403 Forbidden
- 26. Đặt tệp vào Amazon S3 bằng cách sử dụng tính năng tải lên nhiều phần
- 27. Sử dụng PHP để tải lên Amazon S3
- 28. Làm thế nào để sử dụng boolean 'và' bằng Python
- 29. Tôi có thể truy cập Amazon AWS S3 bằng cách sử dụng GSOAP cho C và C++ như thế nào?
- 30. Cách thay đổi siêu dữ liệu trên một đối tượng trong Amazon S3
Trợ giúp về phương pháp bản sao trong mô-đun boto.s3.key: 'bản sao (bản thân, dst_bucket, dst_key, siêu dữ liệu = None, reduced_redundancy = False, preserve_acl = False, encrypt_key = False) 'phương pháp boto. s3.key.Key instance Sao chép Khóa này vào một nhóm khác. –