目前我正在使用 Amazon Web Services (AWS) 并打开一个 S3 存储桶,将其内容保存到 EC2 中的一个目录中,然后从该目录中的所有内容创建一个 tar 文件并将该 tar 文件推送到 AWS Glacier。我尝试完成的最后一步是在 tar 文件成功上传到 AWS Glacier 时终止脚本(这需要 3-5 小时)。
目前,我对如何获取 archive_id 并询问保险库是否已成功加载 tar 文件感到困惑。
为了与 AWS Glacier 交互,我一直在使用 python boto 工具。我包含了将文件上传到冰川的 python\boto 代码,以及我尝试运行的一些快速测试,以确定代码是否已成功上传。到目前为止,所有测试都返回 false。
我排除了一些关于 status_code 的测试,这些测试也对所有内容都返回 false,当我尝试打印其中任何一个时,只有未完成和正在进行(如预期)打印出任何内容,但是当我尝试匹配 archive_id或retrieve_job 到我没有匹配的作业列表中返回的内容。另一个注意事项是这些在打印时保存的列表它们都是相同的( Job(arn:aws:glacier:us-east-1:232412618534:vaults/glacier-poc) )
作业完成后如何返回true?
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