リモート開発メインのソフトウェア開発企業のエンジニアブログです

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

← 前の投稿

Laravelのテンプレートbladeでの@include @yield @sectionの違い

次の投稿 →

ECSの機能でSSMのParameter Storeに格納した機密情報をTaskDefinitionに埋め込む

コメントを残す