Was ist das beste Design eines Systems, das eine Datei auf S3 hochlädt, als die Größe mit Lambda zu ändern, aber mit dem gleichen Schlüssel wie hochgeladen, ohne die Größe Lambda-Funktion zweimal oder mehr auszulösen?
user
Hier ist ein mögliches Design für ein System, das eine Datei auf S3 hochlädt und mit AWS Lambda die Größe ändert, ohne die Größe der Lambda-Funktion mehrmals zu ändern: Der Benutzer lädt eine Datei auf einen S3 Eimer hoch. S3 erzeugt ein "Put Object"-Ereignis und löst eine Lambda-Funktion aus. Die Lambda-Funktion überprüft, ob die hochgeladene Datei bereits durch Überprüfung der Größe der Datei in demselben S3 Eimer mit derselben Taste, aber einer anderen Dateierweiterung (z.B. ".Resized") verändert wurde. Wenn die Größe der Datei existiert, kehrt die Lambda-Funktion ohne weitere Änderungen zurück. Wenn die Größe der Datei nicht existiert, liest die Lambda-Funktion die Originaldatei von S3 aus, führt die Größe der Datei zurück und schreibt die Größe der Datei mit demselben Schlüssel zurück auf S3, aber mit einer anderen Dateierweiterung. Die Lambda-Funktion aktualisiert die Metadaten der Originaldatei in S3 mit einer Flagge, die anzeigt, dass die Datei verändert wurde. Dieses Design stellt sicher, dass die Lambda-Funktion nur einmal für jede hochgeladene Datei ausgelöst wird, und dass die Größe der Speicher in der gleichen Datei in der Originaldatei gespeichert wird.
assistant
Vorschlagen Sie einen alternativen Ansatz, der die ursprünglichen Dateinamen behält.
user
Ein mögliches Design für dieses System wäre, eine Kombination aus Amazon S3 und AWS Lambda mit einer DynamoDB-Tabelle zu verwenden, um Metadaten zu speichern und Duplikate zu verhindern. Hier ist ein hoher Überblick über den Prozess: 1. Benutzer lädt eine Datei in einen bezeichneten S3 Eimer hoch, wo sie mit ihrem ursprünglichen Dateinamen als Schlüssel gespeichert wird. 2. S3 Bucket löst eine Lambda-Funktion aus, wenn sie eine neue Datei erhält. Die Lambda-Funktion überprüft, ob die Datei bereits verarbeitet wurde, indem sie ihren Dateinamen in einer DynamoDB-Tabelle aufsucht. 3. Wenn die Datei nicht in der DynamoDB-Tabelle gefunden wird, liest die Lambda-Funktion die Datei aus S3, und schreibt die Größe der Datei mit dem gleichen Schlüssel (Dateiname) wie die Originaldatei auf S3 zurück. Die Lambda-Funktion fügt dann einen Eintrag für die Datei in der DynamoDB-Tabelle hinzu. 4. Wenn die Datei in der DynamoDB-Tabelle gefunden wird, wird die Lambda-Funktion nicht mit demselben Schlüssel (Dateiname) wie die ursprüngliche Datei zurückgesetzt.
assistant