AWS CLI を使用して S3 から最後に変更されたオブジェクトを取得する 質問する

AWS CLI を使用して S3 から最後に変更されたオブジェクトを取得する 質問する

プログラムで 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

おすすめ記事