Attualmente sto usando Amazon Web Services (AWS) e per aprire un bucket S3, salvare il suo contenuto in una directory in un EC2, quindi creare un file tar da tutto ciò che è in quella directory e spingere quel file tar su AWS Glacier. L'ultimo passaggio che stavo cercando di realizzare era terminare lo script quando il file tar è stato caricato correttamente su AWS Glacier (che richiede 3-5 ore).Usare Boto per dire quando un file è stato caricato con successo su Glacier
Attualmente sono perplesso su come prendere l'archive_id e chiedere al vault se il file tar è stato caricato correttamente.
Per interagire con AWS Glacier, ho utilizzato lo strumento boto python. Ho incluso il codice python \ boto che carica il file sul ghiacciaio e alcuni dei test rapidi che ho provato a eseguire per capire se il codice è stato caricato con successo o meno. Finora tutti i test restituiscono false.
Ho escluso alcuni test sullo status_code che restituiva anche false per tutto e quando provo a stampare uno di questi solo il non completato e in corso (As expect) stampa nulla, eppure quando provo per abbinare l'archive_id o il retrieve_job a ciò che viene restituito nell'elenco dei lavori non ottengo corrispondenze. Una nota aggiuntiva è le liste in cui vengono salvate quando sono stampate tutte uguali (Lavoro (arn: aws: glacier: us-east-1: 232412618534: vaults/glacier-poc))
Come restituire vero quando il lavoro è completato?
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
Quindi non sono sicuro del perché, ma sto avendo problemi con questo. Quando ho provato a verificare se è completo, l'ho inserito in un ciclo while per continuare a controllare fino a quando non è stato restituito true retrieve_job.completed. Finora ho provato 3 o 4 modi diversi e non ho avuto alcun successo. Qualche suggerimento utile? Non sto cercando di scaricarlo, basta controllare per vedere se è ancora lì –