PowerShellスクリプトサンプル(Tableau ServerのバックアップファイルをS3にアップロード)

2015.01.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

小ネタです。

Tableau Serverでは、tabadminというコマンドを使ってパブリッシュしているコンテンツ等のバックアップを取る事が出来ます。バックアップ作業及びそのファイルの退避については、夜中の時間に自動で行ってしまいたい類の作業になって来るでしょう。そこで当エントリでは、それら作業を行う上で必要となるスクリプトのサンプル、及びそのサンプルスクリプトファイルをタスクスケジューラに登録する手順をご紹介して行きたいと思います。環境はWindows Server 2012、Tableau Server8.3を導入した状態で始めています。スクリプトに使う言語はPowerShellを用います。

目次

PowerShellによるバックアップファイル作成及びS3へのファイルアップロード

まずはスクリプトファイルのご紹介から。以下がそのファイル内容となります。ちなみにファイルのS3へのアップロードについてはWrite-S3Objectで実施していますが、認証情報(クレデンシャル)については特に設定をしておりません。これは、EC2に割り当てているIAM Roleの権限をEC2側で認識して取得しており(EC2起動後に特に何も設定していない状態であればIAM Roleの値を取って来るようです)、その権限情報を以って処理を実行しています。都度認証情報を設定せずとも使えるのは嬉しいところですね。

upload-tableau-server-backup-file.ps1

## リージョン設定.
Set-DefaultAWSRegion us-east-1
## バックアップフォルダRoot.
$backupFileDirectory = "D:\tableau_backup_files\tsbak\"
## S3バケット名
$S3BucketName ="cm-xxxxxxxxxxxxxxx"

## tabadminコマンドによるバックアップファイルの作成(日付情報を付与).
& 'D:\Tableau\Tableau Server\8.3\bin\tabadmin.exe' backup D:\tableau_backup_files\tsbak\tableau-server-contents -d

## フォルダ配下の最新日付バックアップファイル名を取得
$uploadBackupFileName = Get-ChildItem $backupFileDirectory | Sort-Object LastWriteTime -Descending | Select-Object Name -First 1

## S3ファイルアップロード用にフルパス生成.
$backupFileFullPath =  $backupFileDirectory + $uploadBackupFileName.Name

## for DEBUG.
echo $uploadBackupFileName
echo $backupFileFullPath

## S3バケットへファイルをアップロード
Write-S3Object -BucketName $S3BucketName -Key $uploadBackupFileName.Name -File $backupFileFullPath

## アップロードした元ファイルを削除
Remove-Item -Path $backupFileFullPath

(初回)実行時の為に実行ポリシーを設定後、powershellコマンドでファイルを起動してみます。

PS D:\tableau_backup_files> Set-ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y
PS D:\tableau_backup_files>
PS D:\tableau_backup_files> powershell .\upload-tableau-server-backup-file.ps1

以下の様にファイルが実行されました!

upload-tableau-serverbackup-file-01

実行完了後、所定のS3バケットを確認してみます。ちゃんとファイルがアップロードされてますね。

upload-tableau-serverbackup-file-02

PowerShellスクリプトのタスクスケジューラへの登録

では続けて、上記で実行したPowerShellスクリプトファイルをWindowsタスクスケジューラに登録してみましょう。管理ツールから『タスクスケジューラ』を選択。

set-task-scheduler-01

『基本タスクの作成』を選択。

set-task-scheduler-02

名前と説明を記入します。

set-task-scheduler-03

ここでは毎日夜中に起動する設定にしてみましょう。

set-task-scheduler-04

時刻を設定します。

set-task-scheduler-05

PowerShellを設定するのでここは『プログラムの開始』を選択。

set-task-scheduler-06

プログラム及び引数を設定。『プログラム』については、PowerShellの実行ファイルパスをフルパスで設定、また『引数の追加』にて実行するファイルを以下の形式で設定します。

  • プログラム:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • 引数:-c "D:\tableau_backup_files\upload-tableau-server-backup-file.ps1"

set-task-scheduler-07

『完了』押下で登録します。

set-task-scheduler-08

登録出来ました。

set-task-scheduler-09

所定の時間が来ました。ジョブがちゃんと実行されている事を確認出来ています。これで一連のタスクが自動化出来るようになり、作業も捗りますね!

set-task-scheduler-10

まとめ

以上、PowerShellによるTableau Serverコンテンツのバックアップ自動化についてのご紹介でした。今回はAWSの操作にAWS CLIで無くPowerShellを用いました。AWSとの連携も非常にスムーズに行えていますし、PowerShellの文法に慣れてくればとても使い勝手が良さそうだなと感じました。PowerShellを使ってTableau ServerやWindows環境での諸々の作業を効率化・自動化して行きたいところですね。こちらからは以上です。

参考情報