Angenommen, ich habe einen Computer, den ich in eine bestimmte Protokolldatei schreiben möchte, die in einem S3-Bucket gespeichert ist.
Der Computer muss also über Schreibfähigkeiten für diesen Bucket verfügen, aber ich möchte nicht, dass er Dateien in diesem Bucket überschreiben oder löschen kann (einschließlich der Dateien, in die er schreiben soll).
Grundsätzlich möchte ich, dass mein Computer nur Daten an diese Protokolldatei anhängen kann, ohne sie zu überschreiben oder herunterzuladen.
Gibt es eine Möglichkeit, meinen S3 so zu konfigurieren? Vielleicht gibt es eine IAM-Richtlinie, die ich anhängen kann, damit sie wie gewünscht funktioniert?
Antworten:
Das kannst du leider nicht.
S3 hat keine "Anhängen" -Operation. * Sobald ein Objekt hochgeladen wurde, kann es nicht mehr geändert werden. Sie können nur ein neues Objekt hochladen, um es zu ersetzen, das Ihren Anforderungen nicht entspricht.
*: Ja, ich weiß, dass dieser Beitrag ein paar Jahre alt ist. Es ist jedoch immer noch genau.
quelle
Wie die akzeptierte Antwort besagt, können Sie nicht. Die beste Lösung, die mir bekannt ist, ist:
AWS Kinesis Firehose
https://aws.amazon.com/kinesis/firehose/
Ihr Codebeispiel sieht kompliziert aus, aber Ihr Codebeispiel kann sehr einfach sein. Sie führen weiterhin PUT- (oder BATCH PUT-) Vorgänge für einen Kinesis Firehose-Übermittlungsdatenstrom in Ihrer Anwendung aus (mithilfe des AWS SDK) und konfigurieren den Kinesis Firehose-Übermittlungsdatenstrom so, dass Ihre gestreamten Daten an einen AWS S3-Bucket Ihrer Wahl gesendet werden (im AWS Kinesis Firehose-Konsole).
Es ist immer noch nicht so praktisch wie
>>
über die Linux-Befehlszeile, da Sie nach dem Erstellen einer Datei in S3 erneut das Herunterladen, Anhängen und Hochladen der neuen Datei durchführen müssen, dies jedoch nur einmal pro Zeilenstapel als für jede Datenzeile, sodass Sie sich aufgrund des Umfangs der Anhängevorgänge keine Gedanken über hohe Gebühren machen müssen. Vielleicht kann es gemacht werden, aber ich kann nicht sehen, wie es von der Konsole aus gemacht wird.quelle
Objekte in S3 können nicht angehängt werden. In diesem Fall haben Sie 2 Lösungen:
quelle
Wie bereits erwähnt, können S3-Objekte nicht angehängt werden.
Eine andere Lösung wäre jedoch, in CloudWatch-Protokolle zu schreiben und dann die gewünschten Protokolle in S3 zu exportieren . Dies würde auch verhindern, dass Angreifer, die auf Ihren Server zugreifen, aus Ihrem S3-Bucket gelöscht werden, da Lambda keine S3-Berechtigungen benötigt.
quelle
Falls jemand Daten an ein Objekt mit einem S3-ähnlichen Dienst anhängen möchte, unterstützt dies der Alibaba Cloud OSS (Objektspeicherdienst) nativ .
quelle
Ich hatte ein ähnliches Problem und das hatte ich gefragt
So hängen Sie Daten mit AWS Lambda an eine Datei an
Folgendes habe ich mir ausgedacht, um das oben genannte Problem zu lösen:
Verwenden Sie getObject, um von der vorhandenen Datei abzurufen
Schreibfunktion zum Anhängen in die Datei
Ich hoffe das hilft!!
quelle
writeToS3
Funktion überschreibt eine Datei und hängt sie nicht an.