Windowsのフォルダとs3バケットを定期的に同期させる

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

今回はWindowsのフォルダにあるファイルを定期的にs3バケットに同期させる方法について書きます。
ベタな内容とは思いますが、日頃はMacやLinuxな方には新鮮な内容かもしれません。

前提とする環境

・s3バケットは作成済み
・Windows Server 2012以降
・Windows上にawscliはインストール済み(インストーラ
・Windows上にaws configureで設定済み
・IAMユーザーにs3に対する適切な権限がある

やってみよう

下記の例では、system-aという仮のシステムに関するものです。
バケット名とかもsystem-aにしていますが、例なのでそこらへんは各自の名前に置き換えてください。

Step1.スクリプト作成

このスクリプトの機能は、2つです。
・指定したフォルダをs3バケットに同期する
・成功、失敗をWindowsイベントログに書き込む

下記スクリプト内の変数を調整していただければ、動くはずです。

ちなみに「EventId 0」は情報、「EventId 1」はエラーとして、イベントログに記録されました。
イベントログは私もまだよく理解していませんが、最低限の分類はできたかなと思います。

試しに一度実行してみましょう。

イベントログも見てみましょう。
「s3への同期に成功しました。」と確認できますね。(エラーとあるのは、失敗した時のログになります。)

Step2.タスクの作成

次に定期実行できるようにタスクスケジューラにStep1で作成したスクリプトを登録します。

タスクスケジューラを開く

まず、タスクスケジューラを開いたら、適当な名前でフォルダを作成します。(今回はCustom)

 

 

 

 

 

 

 

 

全般タブ

次にタスクの作成に入ります。
なお、今回はAdministratorユーザーで実行するので「最上位の特権で実行する」のチェックは外していますが、他のユーザーの場合は必要かもしれません。

 

 

 

 

 

 

 

 

トリガータブ

トリガーの設定をします。
ここでは毎時0分に動作するように設定してみました。

 

 

 

 

 

 

 

 

 

操作タブ

操作の設定をします。

プログラム/スクリプト
・%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe
引数の追加
・-c “C:\script\s3sync_system-a.ps1”

 

 タスクの保存

タスク設定を保存します。
ここでパスワードを求められます。

 

 

 

 

 

 

完成

 

 

 

 

終わりに

冒頭に書いた通り、ベタですが、よく使える感じのスクリプト・手順が書けたのではないかと思います。
今後のステップとしては、ログをフィルタして通知といったところでしょうか。
AWS & Windows も、なかなかいいですね。

AWS運用自動化サービス「Cloud Automator」