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.
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.
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