ファイル名に基づいてs3バケットのファイルをフィルタリングする

ファイル名に基づいてs3バケットのファイルをフィルタリングする

次の名前のファイルを含む s3 バケットがあります。

example_test_20200612010000   
example_test_20200612020000
example_test_20200612020000
example_control_20200612010000
example_control_20200612020000
example_control_20200612020000

このようなファイルは数分ごとにこのs3バケットに入ります。どのテストファイルが新しいものか(まだ処理されていない)を確認する必要があります。私のロジックは、次のことを行うことです。

aws s3 ls [s3 bucket name] --profile [profile name] | grep "test" | awk '$4 > 'example_test_20200612010000'

ファイルの命名は常に一貫しているため、このバケットでファイル名が処理した最新のファイルよりもアルファベット順に大きいすべてのテストファイルを確認してください(したがって、最後のタイムスタンプ部分の比較)。

ベストアンサー1

努力する

| awk -v ref=example_test_20200612010000 '/test/ && $4 > ref { print $4}'

日付ごとにオブジェクトを一覧表示できます(すべて1行に)。

aws s3api list-object --bucket ... 
   --query 'Contents[?LastModified>`2020-05-01`].{Key: Key,Size: Size}' 

2020-05-01もちろん、LastModified>を交換してください。

以下を使用してJSON結果を処理します。

| jq -r '.[].Key'

おすすめ記事