PowerShellからS3に同期
うーん。
なんというか文字コードに悩まされた。
後はタスクスケジューラに仕込んで動くかどうかだが・・・・。
ちなみにそのままAWSのツールインストールすると文字化けするので
PythonからAWSのCLIは入れなおしてます。
http://dev.classmethod.jp/cloud/aws/awscli-for-windows/
んで、PowerShellではまるとは・・・。
ISEだと文字化けしないけどPowerShellコンソールから
動かすと日本語ファイルがあると文字化けするんだよな~。
けどイベントビューアに出力するようにしたから
start-transcript $logfileと日本語文字化けのとこはいいや・・・。
タスクスケジューラに埋め込んで動かしたら問題なくトランスクリプト(コンソールログ)は文字列出力してくれたし、解決。ついでにイベントログ出力させるようにした。
最初に[New-EventLog -LogName S3Sync -Source S3Sync]しとく必要はある。
イベントログ出せたらコンソールログはコメントしといてもいいかもね。
switch文のところはbreak入れとかないとえらいことになります。
久しぶりに勉強になった。
なんというか文字コードに悩まされた。
後はタスクスケジューラに仕込んで動くかどうかだが・・・・。
ちなみにそのままAWSのツールインストールすると文字化けするので
PythonからAWSのCLIは入れなおしてます。
http://dev.classmethod.jp/cloud/aws/awscli-for-windows/
んで、PowerShellではまるとは・・・。
ISEだと文字化けしないけどPowerShellコンソールから
動かすと日本語ファイルがあると文字化けするんだよな~。
けどイベントビューアに出力するようにしたから
start-transcript $logfileと日本語文字化けのとこはいいや・・・。
$frompath = "C:\Users\Administrator\Desktop\work"
$tosite = "s3:S3バケット名"
$logfile = "C:\work\Console.log"
$pythonpPath = "C:\Python34\Scripts"
$errKeyword = "Completed 1 part(s) with ... file(s) remaining"
$worningKeyword = "Completed 0 part(s) with ... file(s) remaining"
start-transcript $logfile
cd $pythonpPath
$result = .\aws s3 sync $frompath $tosite
$result | Out-File $logfile -Append -Encoding utf8
stop-transcript
#S3から返されたエラーに応じた処理
switch ($result){
$errKeyword{
$ErrMsg = "S3Syncでエラーが発生しました。バゲット接続エラー。"+ "`n" + $result
Write-EventLog -LogName S3Sync -EntryType Error -Source S3Sync -EventId 100 -Message $ErrMsg
break
}
$worningKeyword{
$WornMsg = "バックアップ元フォルダの名前が変更されている可能性があります。"+ "`n" + $result
Write-EventLog -LogName S3Sync -EntryType Warning -Source S3Sync -EventId 200 -Message $WornMsg
break
}
default{
$defMsg = "S3にファイルを同期しました。" + "`n" + $result
Write-EventLog -LogName S3Sync -EntryType Information -Source S3Sync -EventId 0 -Message $defMsg
break
}
}
cd "C:\"
chcp 932
最初に[New-EventLog -LogName S3Sync -Source S3Sync]しとく必要はある。
イベントログ出せたらコンソールログはコメントしといてもいいかもね。
switch文のところはbreak入れとかないとえらいことになります。
久しぶりに勉強になった。
コメント
システム環境変数にAWSのキー類を埋め込んでやらないと動かないから要注意
http://www.task-notes.com/entry/20141026/1414322858