Ein Ordner in S3, der die boto3-Bibliothek verwendet, die ein API-Wrapper für Python to AWS ist [^ 1] Oder ich habe eine Funktion geschrieben, um zu überprüfen, ob die Datei existiert.
Es gab einen Prozess, den ich durch das Vorhandensein oder Fehlen eines Ordners in S3 unterscheiden wollte, aber im Internet ist es ein Prozess, der boto2 und eine Funktion verwendet, die derzeit nicht implementiert ist, oder er kann nur für "Dateien" in S3 verwendet werden Es gab nur wenige Methoden und es gab fast kein Existenzurteil für "Ordner".
Also habe ich es selbst gemacht.
import boto3
from botocore.exceptions import ClientError
client = boto3.client('s3')
bucket_name = 'hoge'
key = "fuga/piyo/bar/" # /Ich denke, es ist eine gute Idee, sich damit abzufinden. Es kann nicht notwendig sein. Ich bin mir nicht sicher.
result = client.list_objects(Bucket=bucket_name, Prefix=key)
#Als nächstes kommt Kimo. Wenn der obige Pfad nicht vorhanden ist, werden einige der zurückgegebenen Ergebnisse angezeigt
#Der Schlüssel namens Inhalt existiert nicht. Wenn Sie dies verwenden, können Sie die Existenz beurteilen.
if "Contents" in result:
exists = True
else:
exists = False
[^ 1]: Streng genommen kein Ordner. In S3 wird alles durch eine Kombination von Schlüsseln (wie Pfade) und Werten (Inhalt der Datei) verwaltet, wie in einem Wörterbuch in Python. In S3 wird der Schlüssel zufällig durch ein / Trennzeichen wie ein Pfad dargestellt, und im Browser interpretiert der AWS-Viewer ihn nur gut mit einem / Trennzeichen.
Recommended Posts