【小ネタ】AWS CLI を利用して S3 内の特定ファイル名にある ○○ のみを ●● する方法

コマンドオプション "--exclude" "--include" "--recursive" の組み合わせがポイントです。
2023.09.04

はじめに

テクニカルサポートの 片方 です。
お客様より、「AWS CLI を利用して S3 バケット内の特定ファイル名にある ○○ のみを ●● する方法を教えてください」 といったお問い合わせが稀にあるので、【小ネタ】として紹介します。

例)

  • S3 バケット内の特定ファイル名にある .CSV のみを「削除」する
  • S3 バケット内の特定ファイル名にある .CSV のみを同一アカウントにある別 S3 バケット内のファイルへ「移動」する

AWS CLI コマンド例

S3 バケット内の特定ファイル名にある .CSV のみを「削除」する

aws s3 rm s3://S3バケット名/特定ファイル名/ --exclude "*" --include "*.csv" --recursive


S3 バケット内の特定ファイル名にある .CSV のみを同一アカウントにある別 S3 バケット内のファイルへ「移動」する

aws s3 mv s3://対象S3バケット名/対象のファイル名/ s3://移動先S3バケット名/移動先ファイル名/ --exclude "*" --include "*.CSV" --recursive


補足

"--exclude" "--include" オプションはクライアント側でのフィルタリング処理を行うものであり、AWS CLI が行う処理量が増加します。 また、指定されたパス内のすべてのオブジェクトを再帰的に取得する "--recursive" オプションを使用しているため、多くのオブジェクトが存在している対象の S3 バケットの場合、処理が長くなる可能性に注意してください。

recursive
このオプションを使用すると、指定のディレクトリ内またはプレフィックス内のすべてのファイルやオブジェクトに対してコマンドが実行されます。

さいごに

参考例に記載した AWS CLI コマンドが誰かのお役に立てれば幸いです。

参考資料

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。