Tôi đã cố gắng tìm ra cách dọn sạch xô s3 của mình. Tôi muốn xóa tất cả các khóa cũ hơn X ngày (Trong trường hợp của tôi X là 30 ngày).Hết hạn đối tượng S3 bằng boto
Tôi không thể tìm ra cách xóa đối tượng trong s3.
Tôi đã sử dụng các cách tiếp cận sau, không có cách nào trong số đó hoạt động (Bằng cách làm việc, ý tôi là tôi đã cố gắng nhận đối tượng sau X ngày và s3 vẫn đang phục vụ đối tượng. nhắn
Tiếp cận 1:
k = Key(bucket)
k.key = my_key_name
expires = datetime.utcnow() + timedelta(seconds=(10))
expires = expires.strftime("%a, %d %b %Y %H:%M:%S GMT")
k.set_contents_from_filename(filename,headers={'Expires':expires})
Phương pháp 2:
k = Key(bucket)
k.key = "Event_" + str(key_name) + "_report"
expires = datetime.utcnow() + timedelta(seconds=(10))
expires = expires.strftime("%a, %d %b %Y %H:%M:%S GMT")
k.set_meta_data('Expires', expires)
k.set_contents_from_filename(filename)
Nếu bất cứ ai có thể chia sẻ mã mà đang làm việc cho họ, mà xóa đối tượng s3, mà có thể thực sự tuyệt vời
Tôi đã cố gắng để kiểm tra điều này, và tự hỏi nếu hết hạn có thể được kiểm tra bằng cách sử dụng phút/giây. Có vẻ như ngày = 1 là thời gian tối thiểu có thể được sử dụng – user2005798
Không có cách nào để sử dụng phút/giây.Tối thiểu là 0 ngày và đảm bảo duy nhất là AWS sẽ thực hiện hành động trước ngày hôm sau nửa đêm UTC theo [vòng đời của nhóm PUT] (http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html) . – MeSee
Vui lòng thay đổi LifeCycle thành Lifecycle trong "từ boto.s3.lifecycle import LifeCycle" vì Vòng đời là tên đúng của lớp. – AliBZ