Как использовать AWS S3 CLI для сброса файлов в stdout в BASH?
я запускаю скрипт bash, который будет принимать путь в S3 (как указано в ls команда) и сбросить содержимое всех объектов файла в stdout
. По сути, я хотел бы повторить cat /path/to/files/*
за исключением S3, например s3cat '/bucket/path/to/files/*'
. Моя первая склонность, глядя на варианты, чтобы использовать cp
команда на временный файл, а затем cat
что.
кто-нибудь пробовал это или подобное или уже есть команда, которую я не нахожу, которая это делает?
5 ответов:
сбросьте содержимое всех объектов файла в stdout.
вы можете сделать это, если вы проходите
-
для назначения . Например,$ aws s3 cp s3://mybucket/stream.txt -
.то, что вы пытаетесь сделать, это что-то вроде этого? ::
#!/bin/bash BUCKET=YOUR-BUCKET-NAME for key in `aws s3api list-objects --bucket $BUCKET --prefix bucket/path/to/files/ | jq -r '.Contents[].Key'` do echo $key aws s3 cp s3://$BUCKET/$key - | md5sum done
Если вы используете версию AWS CLI, которая не поддерживает копирование в" -", вы также можете использовать /dev/stdout:
$ aws s3 cp --quiet s3://mybucket/stream.txt /dev/stdout
вы хотите
--quiet
флаг, чтобы предотвратить добавление к выводу сводной строки, такой как следующая:скачать: s3:/ / mybucket / stream.txt to ../../dev / stdout
Вы можете попробовать использовать s3streamcat, Он также поддерживает форматы bzip, gzip и xz.
установить с
sudo pip install s3streamcat
использование:
s3streamcat s3://bucketname/dir/file_path s3streamcat s3://bucketname/dir/file_path | more s3streamcat s3://bucketname/dir/file_path | grep something
Ах-ха!
https://pypi.python.org/pypi/s3cat/1.0.8
Я пишу больше символов, чтобы удовлетворить требование длины.
Если вы хотите выполнить это с помощью BASH, вам придется вызвать внешнее приложение, такое как интерфейс командной строки AWS (CLI). У него нет эквивалента CAT, поэтому вам нужно будет скопировать файл локально, а затем CAT.
кроме того, вы можете использовать/написать приложение, которое напрямую вызывает AWS SDK, который доступен для таких языков, как Python, PHP, Java. С помощью SDK содержимое файла может быть извлечено в памяти, а затем отправлено в stdout.