如何使用 AWS S3 CLI 将文件转储到 BASH 中的标准输出?
How to use AWS S3 CLI to dump files to stdout in BASH?
我正在启动一个 bash 脚本,该脚本将采用 S3 中的路径(如 ls 命令所指定)并将所有文件对象的内容转储到 stdout
.本质上我想复制 cat /path/to/files/*
除了 S3,例如s3cat '/bucket/path/to/files/*'
。我查看这些选项的第一个倾向是对临时文件使用 cp
命令,然后 cat
那个。
有没有人试过这个或类似的,或者是否已经有一个我找不到的命令?
啊哈!
https://pypi.python.org/pypi/s3cat/1.0.8
我正在写更多字符以满足长度要求。
如果您希望使用 BASH 完成此操作,则必须调出外部应用程序,例如 AWS Command-Line Interface (CLI)。它没有等效的 CAT,因此您需要在本地复制文件,然后对其进行 CAT。
或者,您可以 use/write 一个直接调用 AWS SDK 的应用程序,它适用于 Python、PHP、Java 等语言。通过使用 SDK,可以在内存中检索文件内容,然后将其发送到标准输出。
dump the contents of all of the file objects to 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
如果您使用的 AWS CLI 版本不支持复制到“-”,您也可以使用 /dev/stdout:
$ aws s3 cp --quiet s3://mybucket/stream.txt /dev/stdout
您可能还需要 --quiet
标志来防止像下面这样的摘要行被附加到您的输出中:
download: 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
我正在启动一个 bash 脚本,该脚本将采用 S3 中的路径(如 ls 命令所指定)并将所有文件对象的内容转储到 stdout
.本质上我想复制 cat /path/to/files/*
除了 S3,例如s3cat '/bucket/path/to/files/*'
。我查看这些选项的第一个倾向是对临时文件使用 cp
命令,然后 cat
那个。
有没有人试过这个或类似的,或者是否已经有一个我找不到的命令?
啊哈!
https://pypi.python.org/pypi/s3cat/1.0.8
我正在写更多字符以满足长度要求。
如果您希望使用 BASH 完成此操作,则必须调出外部应用程序,例如 AWS Command-Line Interface (CLI)。它没有等效的 CAT,因此您需要在本地复制文件,然后对其进行 CAT。
或者,您可以 use/write 一个直接调用 AWS SDK 的应用程序,它适用于 Python、PHP、Java 等语言。通过使用 SDK,可以在内存中检索文件内容,然后将其发送到标准输出。
dump the contents of all of the file objects to 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
如果您使用的 AWS CLI 版本不支持复制到“-”,您也可以使用 /dev/stdout:
$ aws s3 cp --quiet s3://mybucket/stream.txt /dev/stdout
您可能还需要 --quiet
标志来防止像下面这样的摘要行被附加到您的输出中:
download: 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