Ich versuche, "gute" Python zu schreiben und einen S3 ohne solchen Schlüsselfehler zu erfassen:
session = botocore.session.get_session()
client = session.create_client('s3')
try:
client.get_object(Bucket=BUCKET, Key=FILE)
except NoSuchKey as e:
print >> sys.stderr, "no such key in bucket"
Aber NoSuchKey ist nicht definiert und ich kann es nicht auf den Import zurückführen, für den ich es definieren muss.
e.__class__
ist botocore.errorfactory.NoSuchKey
aber from botocore.errorfactory import NoSuchKey
gibt einen Fehler und from botocore.errorfactory import *
funktioniert auch nicht und ich möchte keinen generischen Fehler erfassen.
s3 = boto3.resource("s3")
) verwenden, können Sie über auf den Client und damit auf die Ausnahme zugreifens3.meta.client.exceptions.NoSuchKey
. Siehe stackoverflow.com/questions/38581465/…In boto3 konnte ich auf die Ausnahme im Meta-Client der Ressource zugreifen.
quelle
Ich denke, der eleganteste Weg, dies zu tun, ist in Boto3
Die Dokumentation zur Fehlerbehandlung scheint spärlich zu sein, aber im Folgenden werden die Fehlercodes gedruckt, für die dies funktioniert:
quelle