Comment attraper l'erreur de clé boto3 S3 NoSuch

La documentation de boto3 indique que l'erreur S3.Client.exceptions.NoSuchKey se produira si l'objet n'existe pas lors de la récupération d'un objet S3 avec boto3 en Python. Cependant, je ne savais pas comment détecter cette erreur en Python, alors je l'ai essayée et étudiée.

Pour une raison quelconque, le comportement de get_object et head_object était différent.

get_object

J'ai pu détecter l'erreur avec les deux modèles de code suivants.

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

J'ai pu détecter l'erreur avec le code suivant.

Je ne pouvais même pas essayer s3_client.exceptions.NoSuchKey en imitant get_object.

La capture avec ClientError est également différente de get_object pour une raison quelconque car la chaîne de caractères de Code l'est.

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

information sur la version

$ pip list | grep boto 
boto3                   1.14.63
botocore                1.17.63

Recommended Posts

Comment attraper l'erreur de clé boto3 S3 NoSuch
Comment gérer l'erreur SSL lors de la connexion à S3 avec Python boto
Utilisez boto3 pour accéder à S3
Comment supprimer l'erreur d'affichage dans matplotlib
Utilisez boto pour charger / télécharger des fichiers vers s3.
Comment obtenir la clé sur Amazon S3 avec Boto 3, exemple de mise en œuvre, notes
[Go] Comment créer une erreur personnalisée pour Sentry
[Python] Local → Procédure de téléchargement de fichiers vers S3 (boto3)
[Python] Comment gérer l'erreur de lecture pandas read_html
Comment installer la poésie (gestion des erreurs) dans l'environnement zsh
Comment utiliser xml.etree.ElementTree
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser virtualenv
Grattage 2 Comment gratter
Comment utiliser Seaboan
Comment utiliser la correspondance d'image
Comment utiliser le shogun
Comment installer Python
Comment lire PyPI
Comment installer pip
Comment utiliser Virtualenv
Comment utiliser numpy.vectorize
Comment mettre à jour easy_install
Comment installer Archlinux
Comment utiliser pytest_report_header
Comment redémarrer gunicorn
Comment héberger virtuel
Comment déboguer le sélénium
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment lire JSON
Comment utiliser SymPy
Comment utiliser x-means
Comment utiliser WikiExtractor.py
Comment mettre à jour Spyder
Comment installer BayesOpt
Comment utiliser virtualenv
Comment utiliser Matplotlib
Comment utiliser iptables
Comment utiliser numpy
Comment utiliser TokyoTechFes2015
Comment utiliser venv
Comment utiliser le dictionnaire {}
Comment utiliser Pyenv
Comment faire pousser des fichiers dot
Téléchargeur S3 avec boto
Comment utiliser la liste []
Comment utiliser python-kabusapi
"Comment compter Fukashigi"
Comment installer Nbextensions
Comment utiliser OptParse
Comment utiliser le retour
Comment installer Prover9
Comment utiliser NumPy
Comment utiliser pyenv-virtualenv
Comment utiliser imutils
[AWS] Comment gérer l'erreur "Point de code non valide" dans CloudSearch