Also, bevor jemand mir über die flache Struktur von S3 erzählt, weiß ich bereits, aber die Tatsache ist, Sie können 'Ordner' in S3 erstellen. Mein Ziel mit diesem Python-Code ist es, einen neuen Ordner zu erstellen, der das Datum des Laufens nennt und die Eingabe des Benutzers an diese anfügt (was die createS3Folder-Funktion ist) - Ich möchte dann einen Ordner in einem lokalen Verzeichnis mit diesem Ordner synchronisieren.Boto3 Ordner Sync unter neuen S3 'Ordner'
Das Problem ist, dass meine upload_files Funktion erstellt einen neuen Ordner in S3, die genau die Ordnerstruktur meiner lokalen Einrichtung emuliert.
Kann jemand vorschlagen, wie ich nur den Ordner in den neu erstellten synchronisieren würde, ohne Namen zu ändern?
import sys
import boto3
import datetime
import os
teamName = raw_input("Please enter the name of your project: ")
bucketFolderName = ""
def createS3Folder():
date = datetime.date.today().strftime("%Y") + "." +
datetime.date.today().strftime("%B") + "." +
datetime.date.today().strftime("%d")
date1 = datetime.date.today()
date = str(date1) + "/" #In order to generate a file, you must
put "/" at the end of key
bucketFolderName = date + teamName + "/"
client = boto3.client('s3')
client.put_object(Bucket='MY_BUCKET',Key=bucketFolderName)
upload_files('/Users/local/directory/to/sync')
def upload_files(path):
session = boto3.Session()
s3 = session.resource('s3')
bucket = s3.Bucket('MY_BUCKET')
for subdir, dirs, files in os.walk(path):
for file in files:
full_path = os.path.join(subdir, file)
with open(full_path, 'rb') as data:
bucket.put_object(Key=bucketFolderName, Body=data)
def main():
createS3Folder()
if __name__ == "__main__":
main()
Ich bin voll mit AWS vertraut, und ich verstehe die Idee der S3-Buckets vollständig.Während ich weiß, dass es sich um Objekte handelt (jede Vertrautheit mit der CLI und Boto3 würde dies selbst Anfängern in AWS klar machen), funktionieren diese konzeptionell als Ordner, daher der Begriff "Begrenzer": Ein Begrenzer ist eine Folge von einem oder mehreren Zeichen Wird verwendet, um die Grenze zwischen separaten, unabhängigen Regionen im Klartext oder anderen Datenströmen anzugeben. Ein Beispiel für ein Trennzeichen ist das Kommazeichen, das als Feldtrennzeichen in einer Folge von durch Kommas getrennten Werten fungiert. – BitLord
Abgesehen davon, dass dieses Konzept für Menschen schwer zu fassen ist. Ordner existieren in S3 nicht auf die gleiche Weise wie Ordner in einem Dateisystem. Tun Sie dies: 1) Erstellen Sie einen Ordner namens TEST/2) Laden Sie eine Datei mit diesem Pfad TEST/TESTFILE.TXT 3) Benennen Sie das Objekt TEST/in OTHER/um. Jetzt beachten Sie, dass Sie zwei Ordner "TEST /" und "OTHER /" mit der Datei TESTFILE.TXT jetzt in "OTHER /" befindet. Die meisten Leute erwarten, dass das Umbenennen des Verzeichnisses auch die untergeordneten Dateien mit in übernimmt. –