仕事上、AWS S3の操作をAWS CLIで行うことが多いので、 よく使うコマンドをシェアしたいと思います。 ※S3ではフォルダやファイルの概念はなく、すべて「オブジェクト」として管理されています。ここでは便宜上「フォルダ」「ファイル」と呼んでいます。 ■ 一覧表示 ----- aws s3 ls s3://bucket/path/ --recursive ----- これはファイルの有無を確認するのによく使います。 パイプラインでgrepコマンドに渡して特定のファイルがあるかを確認したりします。 ■ 条件を絞ってパス抽出 ----- aws s3api list-objects-v2 --bucket <bucket> --prefix <prefix> --query "Contents.[?contains(Key, <condition>)].[Key]" --output text ----- 特定の条件に合致するオブジェクトのパスだけを抽出したい時に重宝します。 これもパイプラインで後続のコマンドに渡しても良いですし、一旦変数に格納してから処理しても良いので便利です。 ■ 条件を絞ってフォルダの一覧取得 ----- aws s3api list-objects-v2 --bucket <bucket> --prefix <prefix> --delimiter "/" --query "CommonPrefixes.[?contains(Prefix, <condition>)].[Prefix]" --output text ----- そんなに使う場面は多くないと思いますが、 フォルダが大量にある場合に条件で絞ってフォルダ一覧を取得したいときに使います。 これも後続の処理に渡したりできるので、そういった場面になった場合に役立つと思います。 ■S3バケットにフォルダ作成 ----- aws s3api put-object --bucket <bucket> --key "folder/subfolder/" ----- このコマンドラインを使う場面としては、 AWSマネジメントコンソール上からの操作が行えないような制限のかかっているバケットに対して使います。 例えばS3バケットの操作が可能なIAMロールがアタッチされているEC2に接続してこのコマンドを実行したりしています。 他にもありますが、とりあえずここまでmm