Как использовать AWS S3 CLI для вывода файлов в stdout в BASH?
Я запускаю bash script, который примет путь в S3 (как указано в команде ls) и выгрузите содержимое всех файловых объектов в stdout
. По сути, я хотел бы реплицировать cat /path/to/files/*
за исключением S3, например. s3cat '/bucket/path/to/files/*'
. Мой первый взгляд на варианты состоит в том, чтобы использовать команду cp
для временного файла, а затем cat
, что.
Кто-нибудь пробовал это или подобное, или есть уже команда, которую я не нахожу, что это делает?
Ответы
Ответ 1
сбрасывает содержимое всех файлов в stdout.
Вы можете выполнить это, если вы передадите -
для назначения команды aws s3 cp
.
Например, $ 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
Ответ 2
Если вы используете версию AWS CLI, которая не поддерживает копирование на "-", вы также можете использовать /dev/stdout:
$ aws s3 cp --quiet s3://mybucket/stream.txt /dev/stdout
Также может потребоваться, чтобы флаг --quiet
не включал итоговую строку, как показано ниже:
скачать: s3://mybucket/stream.txt в.. /../dev/stdout
Ответ 3
Ага!
https://pypi.python.org/pypi/s3cat/1.0.8
Я пишу больше символов, чтобы удовлетворить требование длины.
Ответ 4
Вы можете попробовать использовать 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
Ответ 5
Если вы хотите выполнить это с помощью BASH, вам придется вызвать внешнее приложение, например Интерфейс командной строки AWS (CLI). У него нет CAT-эквивалента, поэтому вам нужно будет скопировать файл локально, а затем CAT его.
В качестве альтернативы вы можете использовать/написать приложение, которое напрямую вызывает AWS SDK, доступный для таких языков, как Python, PHP, Java. Используя SDK, содержимое файла может быть восстановлено в памяти, а затем отправлено на стандартный вывод.