プログラムで EC2 インスタンスを起動し、S3 から実行可能ファイルをコピーして実行し、インスタンスをシャットダウンする (ユーザーデータで実行) というユースケースがあります。S3 から最後に追加されたファイルのみを取得する必要があります。
S3バケットから最後に変更されたファイル/オブジェクトを取得する方法はありますか?AWS CLI道具?
ベストアンサー1
バケット内のすべてのオブジェクトを一覧表示するには、次のようにしますaws s3 ls $BUCKET --recursive
。
$ aws s3 ls $BUCKET --recursive
2015-05-05 15:36:17 4 an_object.txt
2015-06-08 14:14:44 16322599 some/other/object
2015-04-29 12:09:29 32768 yet-another-object.sh
これらはキーのアルファベット順に並べられていますが、最初の列は最終更新時刻です。簡単に日付sort
順に並べ替えるには次のようにします。
$ aws s3 ls $BUCKET --recursive | sort
2015-04-29 12:09:29 32768 yet-another-object.sh
2015-05-05 15:36:17 4 an_object.txt
2015-06-08 14:14:44 16322599 some/other/object
tail -n 1
最後の行を選択し、awk '{print $4}'
4 番目の列 (オブジェクトの名前) を抽出します。
$ aws s3 ls $BUCKET --recursive | sort | tail -n 1 | awk '{print $4}'
some/other/object
最後に、aws s3 cp
オブジェクトをダウンロードするには、それをドロップします。
$ KEY=`aws s3 ls $BUCKET --recursive | sort | tail -n 1 | awk '{print $4}'`
$ aws s3 cp s3://$BUCKET/$KEY ./latest-object