AWS CLIで標準入出力でS3オブジェクトを操作する方法

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はサポートされないみたい(当たり前だが)なので、いずれも要注意。

we are hiring

優秀な技術者と一緒に、好きな場所で働きませんか

株式会社もばらぶでは、優秀で意欲に溢れる方を常に求めています。働く場所は自由、働く時間も柔軟に選択可能です。

現在、以下の職種を募集中です。ご興味のある方は、リンク先をご参照下さい。