現在、私はAmazon Web Services(AWS)を使用しています.S3バケットを開き、その内容をEC2のディレクトリに保存してからtarファイルを作成しますそのディレクトリにあるすべてのものをタールファイルをAWS Glacierにプッシュします。私が達成しようとしていた最後のステップは、tarファイルがAWS Glacier(3〜5時間かかる)に正常にアップロードされたときにスクリプトを終了させることでした。ファイルが正常に氷河にアップロードされたことをBotoで確認する
現在、私はarchive_idを取得し、tarファイルが正常に読み込まれた場合にボールトに尋ねる方法について困惑しています。
AWS Glacierと対話するために、私はpython botoツールを使用しています。私はファイルを氷河にアップロードするpython \ botoコードと、コードが正常にアップロードされたかどうかを判断するために実行しようとしていたクイックテストを含めました。これまでのところ、すべてのテストはfalseを返します。
私はstatus_codeに関するいくつかのテストを除外しました。すべての場合でもfalseを返していました。これらのうちのどれかを印刷しようとすると、完了していない状態と進行中(期待どおり)は何も印刷しません。 archive_idまたはretrieve_jobとジョブのリストで返されるものを一致させるために、一致するものは見つかりません。追加の注記は、これらが印刷されたときに保存されるリストです(ジョブ(arn:aws:氷河:us-east-1:232412618534:vaults/glacier-poc)
戻す方法仕事が完了したら本当ですか?
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
私はなぜこれが問題になっているのか分かりません。 retrieve_job.completedがtrueを返すまで、チェックを継続するためにwhileループに入れたかどうかをチェックしようとしていました。これまで私は3つまたは4つの方法を試してきましたが、成功していませんでした。役に立つヒント?私はそれをダウンロードしようとしていない、ただそれがまだそこにあるかどうかを確認する –