亚马逊s3上的zcat

rai*_*sch 12 amazon amazon-s3

我想知道是否可以捕获存储在amazon s3上的gzip文件.也许使用一些流媒体客户端.你怎么看?

我们正在寻找类似的操作 zcat s3://bucket_name/your_file | grep "log_id"

Har*_*ari 7

您还可以使用s3cat,它是Tim Kay的AWS命令行工具包的一部分:

http://timkay.com/aws/

为了得到相同的zcat FILENAME | grep "log_id",你会做:

> s3cat BUCKET/OBJECT | zcat - | grep "log_id"


unt*_*ght 7

来自S3 REST API»对象操作»GET对象:

要使用GET,您必须具有对该对象的READ访问权限.如果您授予匿名用户READ访问权限,则可以在不使用授权标头的情况下返回该对象.

如果是这种情况,您可以使用:

$ curl <url-of-your-object> | zcat | grep "log_id"
Run Code Online (Sandbox Code Playgroud)

要么

$ wget -O- <url-of-your-object> | zcat | grep "log_id"
Run Code Online (Sandbox Code Playgroud)

但是,如果您未在对象上授予匿名READ访问权限,则需要创建并发送授权标头作为GET请求的一部分,这与curl/相比有些繁琐wget.幸运的是,有人已经做到了,这就是由蒂姆·凯的Perl脚本AWS作为推荐的哈.请注意,您不必将Tim Kay的脚本放在您的路径上或以其他方式安装它(除了使其可执行),只要您使用以...开头的命令版本aws.

$ ./aws cat BUCKET/OBJECT | zcat | grep "log_id"
Run Code Online (Sandbox Code Playgroud)


小智 5

今天找到了这个话题,并且喜欢Keith的答案。快进到今天的aws cli已完成:

aws s3 cp s3://some-bucket/some-file.bz2 - | bzcat -c | mysql -uroot some_db
Run Code Online (Sandbox Code Playgroud)

可能会节省别人一点时间。