S3: Wie eine partielle Lesen / suchen, ohne das herunterladen der kompletten Datei?
Zwar ähneln Sie Dateien, Objekte in Amazon S3 sind nicht wirklich "Dateien", genau wie die S3-buckets sind nicht wirklich Verzeichnisse. Auf einem Unix-system kann ich verwenden head
um eine Vorschau der ersten Zeilen einer Datei, egal wie groß es ist, aber ich kann dies nicht auf einem S3. Also, wie mache ich eine teilweise gelesen auf S3?
Du musst angemeldet sein, um einen Kommentar abzugeben.
S3-Dateien können riesig sein, aber Sie nicht zu Holen die ganze Sache, nur das Lesen der ersten paar bytes. Die S3-APIs Unterstützung des HTTP -
Range:
header (siehe RFC 2616), die eine byte-range-argument.Fügen Sie einfach ein
Range: bytes=0-NN
- header, um Ihre Anfrage S3, wobei NN die angeforderte Anzahl von bytes zu Lesen, und Sie Holen nur jene bytes, sondern Lesen Sie die gesamte Datei. Jetzt können Sie eine Vorschau, die 900 GB CSV-Datei, die Sie Links in einen S3-bucket, ohne zu warten, für die ganze Sache herunter zu laden. Lesen die fullObjekt
docs auf Amazons developer docs.AWS .Net SDK zeigt nur nur fester endete Reichweiten möglich sind (RE:
public ByteRange(long start, long end)
). Was ist, wenn ich starten will in der Mitte und bis zum Ende Lesen? Eine HTTP-Bereich vonRange: bytes=1000-
vollkommen akzeptabel ist für "start 1000 und bis zum Ende Lesen:" ich glaube nicht, dass Sie erlaubt haben, dies in der .Net-Bibliothek.Mit Python können Sie die Vorschau für die ersten Aufzeichnungen der komprimierten Datei.
Verbindung mit boto.
Lies die ersten 20 Zeilen von gzip-komprimierte Datei
Es ist also ein äquivalent zu einem der folgenden Unix-Befehl ein: