【AWS CLI】S3 sync コマンド: フォルダには効かない
$ aws s3 sync <source> <target> [--options]
上記で、<source>のファイル&フォルダを、S3バケットの<target>に同期します。
$ aws s3 sync <source> <target> --delete
上記のように--deleteオプションをつけると、
<source>に無いファイルは<target>から削除してくれるのですが、
フォルダには効かないことが分かりました。
(<source>に無いフォルダは、<target>からは削除されず、そのまま残されてしまう。)
解決方法:rmコマンドで全削除後、cpコマンドでコピーで対応
$ aws s3 rm <target> --recursive
$ aws s3 cp <source> <target> --recursive
--recursiveオプションで、サブディレクトリも削除やコピーの対象にします。
公式リファレンス
下記にPythonのコードも置いておくので、参考になれば。
*sourceフォルダをS3にコピーし、全ユーザにRead権限を付与する例
import subprocess as sp
import sys
res1 = sp.run(["aws", "s3", "rm", "destURL" "--recursive"], stdout=sp.PIPE)
res2 = sp.run(["aws", "s3", "cp", "source", ""destURL, "--recursive", "--acl", "public-read"], stdout=sp.PIPE)
sys.stdout.buffer.write(res1.stdout + res2.stdout)
以上ですーーー!
おやすみなさいぃぃ