Hiện tại tôi đang sử dụng Amazon Web Services (AWS) và để mở thùng S3, lưu nội dung của nó vào thư mục trong EC2, sau đó tôi tạo tệp tar từ mọi thứ nằm trong thư mục đó và đẩy tập tin tar đó vào AWS Glacier. Bước cuối cùng mà tôi đã cố gắng thực hiện là có kịch bản chấm dứt khi tệp tar đã được tải lên thành công tới AWS Glacier (mất 3-5 giờ).Sử dụng Boto để biết khi nào một tệp đã được tải lên Glacier
Hiện tại tôi đang bối rối về cách lấy archive_id và hỏi vault nếu tệp tar đã được tải thành công.
Để tương tác với AWS Glacier Tôi đã sử dụng công cụ boto python. Tôi bao gồm mã python \ boto tải tệp lên sông băng và một số thử nghiệm nhanh mà tôi đã cố gắng chạy để chỉ tìm ra liệu mã đã được tải lên thành công hay chưa. Cho đến nay tất cả các thử nghiệm đều trả về false.
Tôi đã loại trừ một vài kiểm tra về mã status_code cũng trả về false cho mọi thứ và khi tôi cố gắng in ra bất kỳ cái nào trong số này chỉ chưa hoàn thành và đang tiến hành (Như mong đợi) in ra bất cứ thứ gì, nhưng khi tôi thử để khớp với archive_id hoặc retrieve_job với những gì được trả về trong danh sách công việc tôi không nhận được kết quả phù hợp. Một lưu ý bổ sung là danh sách mà chúng được lưu trong khi nó được in tất cả như nhau (Công việc (arn: aws: sông băng: us-east-1: 232412618534: hầm/sông băng-poc))
Cách trả lại đúng khi công việc được hoàn thành?
import boto
import sys
ACCESS_KEY_ID = "..."
SECRET_ACCESS_KEY = "..."
FILENAME = sys.argv[1]
GLACIER_VAULT_NAME = sys.argv[2]
connection = boto.connect_glacier(aws_access_key_id=ACCESS_KEY_ID, aws_secret_access_key=SECRET_ACCESS_KEY)
vault = connection.get_vault(GLACIER_VAULT_NAME)
archive_id = vault.upload_archive(FILENAME)
open("glacier.txt", "a").write(FILENAME + " " + archive_id + "\n")
retrieve_job = vault.retrieve_archive(archive_id)
a = vault.list_jobs(completed=True)
b = vault.list_jobs(completed=False)
print "Is In Completed List"
print archive_id in a
print "Is In NOT Completed List"
print archive_id in b
print "Is In Completed List"
print retrieve_job in a
print "Is In NOT Completed List"
print retrieve_job in b
Vì vậy, tôi không chắc chắn lý do tại sao nhưng tôi gặp sự cố với vấn đề này. Khi tôi đã cố gắng kiểm tra xem nếu nó hoàn thành tôi đặt nó vào một vòng lặp while để tiếp tục kiểm tra cho đến khi nó nhận được rằng retrieve_job.completed trả về true. Cho đến nay tôi đã thử 3 hoặc 4 cách khác nhau và chưa thành công. Bất kỳ mẹo hữu ích nào? Tôi không cố gắng tải xuống, chỉ cần kiểm tra xem liệu nó có còn ở đó không –