web-dev-qa-db-ja.com

AWS S3 CLIを使用してファイルをBASHの標準出力にダンプする方法は?

S3のパス( ls コマンドで指定)を使用して、すべてのファイルオブジェクトの内容をstdoutにダンプするbashスクリプトを開始しています。基本的に、S3を除き、cat /path/to/files/*を複製します。 s3cat '/bucket/path/to/files/*'。オプションを見る最初の傾向は、cpコマンドを一時ファイルに使用してから、catを使用することです。

誰もこれを試しましたか、類似していますか、それを見つけられないコマンドがすでにありますか?

79

すべてのファイルオブジェクトの内容を標準出力にダンプします。

-コマンドの宛先に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
122
quiver

「-」へのコピーをサポートしないバージョンのAWS CLIを使用している場合は、/ dev/stdoutも使用できます。

$ aws s3 cp --quiet s3://mybucket/stream.txt /dev/stdout

--quietフラグを使用して、次のような概要行が出力に追加されないようにすることもできます。

ダウンロード:s3://mybucket/stream.txt to ../../dev/stdout

33
Drew

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
0
samarth