我正在启动一个bash脚本,它将在S3中采用路径(如ls命令所指定),并将所有文件对象的内容转储到stdout
。本质上,我想复制cat /path/to/files/*
S3以外的其他语言,例如s3cat '/bucket/path/to/files/*'
。我首先看一下这些选项是将cp
命令用于一个临时文件,然后执行cat
该操作。
有没有人尝试过这种方法或类似方法,或者已经没有我找不到的命令?
Answers:
将所有文件对象的内容转储到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 --version
:aws-cli/1.15.40 Python/3.6.5 Darwin/17.7.0 botocore/1.10.40
)
您可以尝试使用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完成此操作,则必须调出外部应用程序,例如AWS Command-Line Interface(CLI)。它没有等效的CAT,因此您需要在本地复制文件,然后对其进行CAT。
另外,您可以使用/编写直接调用AWS开发工具包的应用程序,该应用程序可用于Python,PHP,Java等语言。通过使用SDK,可以在内存中检索文件内容,然后将其发送到stdout。