リポジトリは以下.イメージはcohalz/cron-s3-sync
で利用可能.
以下のように実行するとyour-bucket
というS3バケットにあるファイル群を/tmp/dir/
以下に同期することができる.
docker run --init \ -e "AWS_ACCESS_KEY_ID=xxxxxxxxxx" \ -e "AWS_SECRET_ACCESS_KEY=xxxxxxxxxx" \ -e "S3_BUCKET=your-bucket" \ -e "LOCAL_DIR=/tmp/dir/" \ -e "SYNC_TYPE=PULL" \ cohalz/cron-s3-sync
同期は毎分実行され,変更のあったファイルだけが更新される.
逆にS3へバックアップしたいときにはSYNC_TYPE=PUSH
とすることで,毎分S3へ同期させることができる.
主な用途として,別のコンテナで使うファイルを更新させたい場合に使える.このコンテナをサイドカーとして動かしボリュームを共有することで,その別のコンテナには手を加えずS3経由でファイルを更新することができる.
例えばEnvoyのDynamic configurationではファイルの更新を検知して再読込ができる*1ので,設定変更がEnvoyコンテナの入れ替えやコントロールプレーンの実装なしに実現できるようになる.*2