Ich starte ein Bash-Skript, das einen Pfad in S3 (wie im Befehl ls angegeben ) verwendet und den Inhalt aller Dateiobjekte an speichert stdout
. Im Wesentlichen möchte ich mit cat /path/to/files/*
Ausnahme von S3 replizieren , z s3cat '/bucket/path/to/files/*'
. Meine erste Neigung, die Optionen zu betrachten, besteht darin, den cp
Befehl für eine temporäre Datei zu verwenden und dann cat
das.
Hat jemand dies oder ähnliches versucht oder gibt es bereits einen Befehl, den ich nicht finde, der es tut?
bash
amazon-web-services
amazon-s3
aws-cli
Neil C. Obremski
quelle
quelle
Antworten:
Sie können dies erreichen, wenn Sie
-
als Ziel desaws s3 cp
Befehls übergeben. Zum Beispiel$ aws s3 cp s3://mybucket/stream.txt -
.Was Sie versuchen zu tun, ist so etwas? :: ::
quelle
aws --version
:aws-cli/1.15.40 Python/3.6.5 Darwin/17.7.0 botocore/1.10.40
)Wenn Sie eine Version der AWS-CLI verwenden, die das Kopieren nach "-" nicht unterstützt, können Sie auch / dev / stdout verwenden:
Möglicherweise möchten Sie auch, dass das
--quiet
Flag verhindert, dass eine Zusammenfassungszeile wie die folgende an Ihre Ausgabe angehängt wird:quelle
Sie können versuchen, s3streamcat zu verwenden . Es unterstützt auch die Formate bzip , gzip und xz.
Installieren mit
sudo pip install s3streamcat
Verwendung:
quelle
Ah ha!
https://pypi.python.org/pypi/s3cat/1.0.8
Ich schreibe mehr Zeichen, um die Längenanforderungen zu erfüllen.
quelle
Wenn Sie dies mit BASH erreichen möchten, müssen Sie eine externe App wie die AWS Command-Line Interface (CLI) aufrufen . Es gibt kein CAT-Äquivalent, daher müssten Sie die Datei lokal kopieren und dann CAT.
Alternativ können Sie eine App verwenden / schreiben, die direkt das AWS SDK aufruft, das für Sprachen wie Python, PHP und Java verfügbar ist. Mithilfe des SDK können Dateiinhalte im Arbeitsspeicher abgerufen und dann an stdout gesendet werden.
quelle