[AWS S3] Confirmation de l'existence de dossiers sur S3

Aperçu

Un dossier sur S3 [^ 1] utilisant la bibliothèque boto3, qui est un wrapper d'API pour Python vers AWS. Ou j'ai écrit une fonction pour vérifier si le fichier existe.

Motivation

Il y avait un processus que je voulais distinguer par la présence ou l'absence d'un dossier sur S3, mais sur le net c'est un processus qui utilise boto2 et utilise une fonction qui n'est pas actuellement implémentée, ou il ne peut être utilisé que pour des "fichiers" sur S3 Il n'y avait que quelques méthodes, et il n'y avait presque pas de jugement d'existence pour les «dossiers».

Alors je l'ai fait moi-même.

Exemple de code

import boto3
from botocore.exceptions import ClientError

client = boto3.client('s3')
bucket_name = 'hoge'
key = "fuga/piyo/bar/" # /Je pense que c'est une bonne idée à mettre en place. Cela peut ne pas être nécessaire. Je ne suis pas sûr.

result = client.list_objects(Bucket=bucket_name, Prefix=key)

#Vient ensuite Kimo. Si le chemin ci-dessus n'existe pas, certains des résultats renvoyés seront
#La clé appelée Contenu n'existe pas. Si vous utilisez ceci, vous pouvez juger de l'existence.
if "Contents" in result:
    exists = True
else:
    exists = False

[^ 1]: Ce n'est strictement pas un dossier. Sur S3, tout est géré par une combinaison de clés (comme les chemins) et de valeurs (contenu du fichier), comme un dictionnaire en Python. Dans S3, la clé se trouve être représentée par un délimiteur / comme un chemin, et dans le navigateur, le visualiseur AWS l'interprète simplement bien avec un délimiteur /.

Recommended Posts

[AWS S3] Confirmation de l'existence de dossiers sur S3
Existence du point de vue de Python
Étudiez l'effet des valeurs aberrantes sur la corrélation
Vérifier l'existence du fichier avec python
Publier le sujet de Gmail sur Twitter
[AWS] Jugez de l'existence du prochain jeton et prenez toutes les valeurs [boto3]
Afficher le graphique de tensorBoard sur Jupyter
Changer l'ordre de PostgreSQL dans Heroku
Préparer l'environnement de Chainer sur l'instance spot EC2 avec AWS Lambda
Mettez à jour les données en les téléchargeant sur s3 d'aws avec une commande, et supprimez les données utilisées (en chemin)
Changer la clé de l'objet sur S3 du format de date normal au format Hive
[Linux] Examen des commandes de déploiement sur AWS
Le comportement de signal () dépend de l'option de compilation
[2020July] Vérifiez l'UDID de l'iPad sous Linux
Utilisez la dernière version de PyCharm sur Ubuntu
Calculer la probabilité de valeurs aberrantes sur les moustaches de la boîte
Au moment de la mise à jour de python avec ubuntu
Changer la résolution d'Ubuntu s'exécutant sur VirtualBox
Jupyter sur AWS
Installez la dernière version de CMake sur Ubuntu 18.04.4 LTS
Peut-être ai-je surestimé l'impact de Shell Shock sur CGI
[AWS CLI] Activez l'AWS CLI sur Red Hat Enterprise Linux 8
Essayez d'estimer le nombre de likes sur Twitter
Dessinez sur Jupyter en utilisant la fonction de tracé des pandas
Prise en charge de l'environnement d'exécution Python 2.7 sur AWS Lambda (à partir de 2020.1)
Tweetez le triple pronostic de la course de bateaux sur Twitter
Vérifier l'existence de tables BigQuery en Java
Faites défiler le japonais jusqu'à la LED du RaspberryPi Sense HAT
Une réflexion sur la visualisation du champ d'application du modèle de prédiction
Annonce de la disponibilité de Java 11 LTS sur Amazon Linux 2