
AWS CLIで標準入出力でS3オブジェクトを操作する方法
標準入力からアップロード
$ echo 'hogehoge' | aws s3 cp - s3://<bucket-name>/<object-key>
標準出力へダウンロード
$ aws s3 cp s3://<bucket-name>/<object-key> -
ご覧の通り、 -
を引数として渡すとそれぞれ標準入出力が使われます。既に周知かと思いますが、僕は知りませんでした。普段からちょっとしたファイルの操作をする時に、いちいち物理ファイルを経由していました。なので備忘録として残しておきます。
s3 cp
のヘルプを見ると一番最後に書いてあります(分かりづらい):
Uploading a local file stream to S3 ... The following cp command uploads a local file stream from standard input to a specified bucket and key: aws s3 cp - s3://mybucket/stream.txt Downloading an S3 object as a local file stream ... The following cp command downloads an S3 object locally as a stream to standard output. aws s3 cp s3://mybucket/stream.txt -
因みに、PowerShellで実行するとCRLFのエンコーディングが変更されたり、またはそれ自体が追加される事があるらしいです。また、ダウンロード時は --recursive
による、特定キー以下の再帰DLはサポートされないみたい(当たり前だが)なので、いずれも要注意。

優秀な技術者と一緒に、好きな場所で働きませんか
株式会社もばらぶでは、優秀で意欲に溢れる方を常に求めています。働く場所は自由、働く時間も柔軟に選択可能です。
現在、以下の職種を募集中です。ご興味のある方は、リンク先をご参照下さい。