"Kopf" - Befehl für aws s3 zum anzeigen der Datei-Inhalt
Auf Linux, verwenden wir im Allgemeinen, der Kopf/Schwanz-Befehle, um eine Vorschau des Inhalts einer Datei. Es hilft bei der Betrachtung einen Teil der Datei (prüfen Sie das format zum Beispiel), anstatt zu öffnen, bis die gesamte Datei.
Im Falle von Amazon S3, es scheint, dass es nur ls, cp, mv, etc. Befehle Ich wollte wissen, ob es möglich ist, zu anzeigen-Teil der Datei, ohne den Download der gesamten Datei auf meinem lokalen Rechner unter cp/BEKOMMEN.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie einen byte-range-beim abrufen der Daten von S3 zu Holen Sie sich die ersten N-bytes, die letzten N bytes oder irgendetwas dazwischen. (Dies ist auch hilfreich, da es ermöglicht Ihnen das herunterladen von Dateien in parallelen – starten Sie einfach mehrere threads oder Prozesse, von denen jeder ruft ein Teil der gesamten Datei).
Ich weiß nicht, welche von den verschiedenen CLI-tools direkt unterstützen, aber eine Reihe Abruf tut, was Sie wollen.
Der AWS-Befehlszeilen-tools ("aws-s3-cp" um genau zu sein) nicht erlauben Ihnen zu tun, Reichweite abrufen, sondern s3curl (http://aws.amazon.com/code/128) sollte den trick tun.(So macht Ebene locken, z.B. mit der --parameter "Bereich" aber dann würden Sie zu tun haben, die verlangen, die Unterzeichnung auf Ihrer eigenen.)
Eine Sache, die Sie tun können, ist cp das Objekt zu stout und leiten Sie es auf den Kopf:
Erhalten Sie eine broken pipe error am Ende, aber es funktioniert.
Können Sie die
range
wechseln Sie zu der älterens3api bekommen-Objekt
Befehl, um wieder die ersten bytes der s3-Objekt. (AFAICTs3
unterstützt nicht das wechseln.)Rohr
\dev\stdout
übergeben werden können, da die Ziel-Dateinamen, wenn Sie einfach nur wollen, um die S3-Objekt durch Rohrleitungen zuhead
. Hier ist ein Beispiel:aws s3api get-object --bucket mybucket_name --key path/to/the/file.log --range bytes=0-10000 /dev/stdout | head
Schließlich, wenn, wie mir, du bist den Umgang mit komprimierten
.gz
Dateien, die die oben genannten Technik funktioniert auch mitzless
damit Sie den Kopf der entpackten Datei:aws s3api get-object --bucket mybucket_name --key path/to/the/file.log.gz --range bytes=0-10000 /dev/stdout | zless
Einen Tipp mit
zless
: wenn es nicht funktioniert, erhöhen Sie die Größe des Bereichs.Wenn Sie nicht möchten, zum download der gesamten Datei, die Sie herunterladen können, einen Teil davon mit der
--Bereich
- option in dieaws s3api
Befehl und nach der Datei Teil heruntergeladen ist, führen Sie dann einehead
- Befehl auf diese Datei.Beispiel:
Erklärung:
Den
aws s3api get-object
downloads ein Teil der s3-Datei aus dem angegebenen Eimer und s3 Ordner mit der angegebenen Größe in--Bereich
zu einem bestimmten output-Datei.Die
&&
führt den zweiten Befehl nur aus, wenn der erste gelungen ist.Der zweite Befehl druckt die 10 ersten Zeile des zuvor erstellten Ausgabedatei.
Gibt es keine solche Funktion. Sie können Sie nur abrufen, das gesamte Objekt. Sie können HTTP-HEAD-request zum anzeigen von Objekt-Metadaten, aber das ist nicht, was Sie suchen.
Einfache Weise zu tun ist :-
Für die gz-Datei , die Sie tun können,
Wenn die Daten weniger, incerease die Menge der bytes, die erforderlich
Wenn Sie mit s3cmd, können Sie die
s3cmd get
und schreiben auf stdout und pipe es zu Kopf wie folgt:Wenn Sie wollen, um den Kopf einer gzip-Datei, pipe, stdout zu
gzip -d -
- und-an-Kopf:Wenn Sie sich langweilen mit diesem Rohrleitungen business, fügen Sie das folgende Skript aus, um Ihre
~/.bashrc
Nun Quelle der
~/.bashrc
- Datei.Einfach laufen
s3head s3://bucket/file
geben Sie die ersten 10 Zeilen der Datei.Wenn Sie wollen mehr Online, nur angeben -n, gefolgt von der Anzahl der Zeilen wie folgt: