[PYTHON] So fangen Sie den Boto3 S3 NoSuch Key-Fehler ab

In der boto3-Dokumentation heißt es, dass der Fehler "S3.Client.exceptions.NoSuchKey" auftritt, wenn das Objekt beim Abrufen eines S3-Objekts mit boto3 in Python nicht vorhanden ist. Ich wusste jedoch nicht, wie ich diesen Fehler in Python abfangen sollte, also habe ich es versucht und untersucht.

Aus irgendeinem Grund war das Verhalten von "get_object" und "head_object" unterschiedlich.

get_object

Ich konnte den Fehler mit den folgenden zwei Codemustern abfangen.

import boto3

s3_bucket = "..."
s3_key = "..."

session = boto3.session.Session()
s3_client = session.client("s3")

try:
    s3_client.get_object(
        Bucket = s3_bucket,
        Key = s3_key,
    )
except s3_client.exceptions.NoSuchKey as e:
    "NOT FOUND ERROR!"
import boto3
import botocore.exceptions

s3_bucket = "..."
s3_key = "..."

session = boto3.session.Session()
s3_client = session.client("s3")

try:
    s3_client.get_object(
        Bucket = s3_bucket,
        Key = s3_key,
    )
except botocore.exceptions.ClientError as e:
    if e.response["Error"]["Code"] == "NoSuchKey":
        "NOT FOUND ERROR!"
    else:
        raise

head_object

Ich konnte den Fehler mit dem folgenden Code abfangen.

Ich konnte nicht einmal s3_client.exceptions.NoSuchKey ausprobieren, indem ich get_object imitierte.

Der Haken bei "ClientError" unterscheidet sich aus irgendeinem Grund auch von "get_object", da die Zeichenfolge von "Code" lautet.

import boto3
import botocore.exceptions

s3_bucket = "..."
s3_key = "..."

session = boto3.session.Session()
s3_client = session.client("s3")

try:
    s3_client.head_object(
        Bucket = s3_bucket,
        Key = s3_key,
    )
except botocore.exceptions.ClientError as e:
    if e.response["Error"]["Code"] == "404":
        "NOT FOUND ERROR!"
    else:
        raise

Versionsinformation

$ pip list | grep boto 
boto3                   1.14.63
botocore                1.17.63

Recommended Posts

So fangen Sie den Boto3 S3 NoSuch Key-Fehler ab
Umgang mit SSL-Fehlern beim Herstellen einer Verbindung zu S3 mit Python boto
Verwenden Sie boto3, um zu S3 zu gelangen
So unterdrücken Sie Anzeigefehler in matplotlib
Verwenden Sie boto, um Dateien auf s3 hoch- / herunterzuladen.
Hinweise zum Implementieren des Schlüssels unter Amazon S3 mit Boto 3, Implementierungsbeispiel, Hinweise
[Go] So erstellen Sie einen benutzerdefinierten Fehler für Sentry
[Python] Lokal → Verfahren zum Hochladen von Dateien in S3 (boto3)
[Python] Umgang mit Pandas read_html Lesefehler
So installieren Sie Poesie (Fehlerbehandlung) in einer zsh-Umgebung
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Verwendung von virtualenv
Schaben 2 Wie man kratzt
Wie benutzt man Seaboan?
Verwendung von Image-Match
Wie man Shogun benutzt
So installieren Sie Python
Wie man PyPI liest
So installieren Sie pip
Verwendung von Virtualenv
Verwendung von numpy.vectorize
So aktualisieren Sie easy_install
So installieren Sie archlinux
Verwendung von pytest_report_header
Wie man Gunicorn neu startet
Wie zum virtuellen Host
Wie man Selen debuggt
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Wie man JSON liest
Verwendung von SymPy
Wie man x-means benutzt
Verwendung von WikiExtractor.py
So aktualisieren Sie Spyder
So installieren Sie BayesOpt
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Verwendung von iptables
Wie benutzt man numpy?
Verwendung von TokyoTechFes2015
Wie benutzt man venv
Verwendung des Wörterbuchs {}
Wie benutzt man Pyenv?
Wie man Dotfiles züchtet
S3 Uploader mit Boto
Verwendung der Liste []
Wie man Python-Kabusapi benutzt
"Wie man Fukashigi zählt"
So installieren Sie Nbextensions
Verwendung von OptParse
Verwendung von return
So installieren Sie Prover9
So bedienen Sie NumPy
Wie man Imutils benutzt
[AWS] Umgang mit dem Fehler "Ungültiger Codepunkt" in CloudSearch