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


90

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

誰かがこれまたは同様のことを試しましたか、それとも私が見つけていないコマンドがすでにありますか?


PHPとServices_Amazon_S3クラスを使用して、同様のことを行います。
誤解

回答:


147

すべてのファイルオブジェクトの内容を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

5
ただし、stdoutのプレースホルダーとしての「-」は、awscliのすべてのバージョンで機能するわけではないことに注意してください。たとえば、ubuntu LTS 14.04.2に付属するバージョン1.2.9ではサポートされていません。
antoniob 2015

同上。Ubuntu 12.xを使用していますが、bashのインスタンスでは機能しません。
Kode Charlie

この問題は、ファイルの特定のバージョンを取得できないことです。
Eamorr

macOS High Sierra 10.13.6でも動作しない(aws --versionaws-cli/1.15.40 Python/3.6.5 Darwin/17.7.0 botocore/1.10.40
MichaelChirico

この回答には、ファイルのコンテンツが端末にストリーミングされ、全体としてコピーされないという利点もあります。loige.co/aws-command-line-s3-content-from-stdin-or-to-stdout/…で
Khoa

47

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

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

--quiet次のような要約行が出力に追加されないようにフラグを設定することもできます。

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


1

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


-3

BASHを使用してこれを実現する場合は、AWSコマンドラインインターフェイス(CLI)などの外部アプリを呼び出す必要があります。同等のCATがないため、ファイルをローカルにコピーしてからCATする必要があります。

または、AWS SDKを直接呼び出すアプリを使用/作成することもできます。これは、Python、PHP、Javaなどの言語で利用できます。SDKを使用することで、ファイルの内容をメモリ内で取得し、stdoutに送信できます。


上記の回答では、2番目のファイル引数として「-」を指定した「cp」を使用して、ファイルをstdoutに出力できるようになっています。
Asfand Qazi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.