前提
・Ubuntu 20.04がインストールされ、ディフォルトユーザにAWS CLI環境が設定済みであること
・Ubuntu 20.04にjqがインストールされていること
・Bashの実行OS:Ubuntu 20.04 On Windows
・Bashを起動する方法:Windows Bat
・WindowsのローカルAdministrator権限でタスクスケジューラに登録
下記の環境設定関連記事を参照:
WindowsでBashシェルを実行する!その1-WSL2にUbuntuをインストール
WindowsでBashシェルを実行する!その2-UbuntuにAWS CLIの環境設定
WindowsバッチファイルでBashを起動する方法
Ubuntu 20.04 On Windowsがインストールされ定る場合、Bash.exeは下記ディレクトリにあります。
C:\Windows\System32\
Bash.exeの場所が特定できれば、Bashを起動するバッチファイルを下記のように作成できます。
rem Bashの実行
cmd /c "C:\Windows\System32\bash.exe" --login -i -- /mnt/d/Shell/Get_VPCFlowLogs_OneDayAgo_EveryLogStream.sh
バッチファイルの内容
ファイル名:start_Get_VPCFlowLogs.bat
@echo off
rem Bashの実行
cmd /c "C:\Windows\System32\bash.exe" --login -i -- /mnt/d/Shell/Get_VPCFlowLogs_OneDayAgo_EveryLogStream.sh
rem 終了処理
echo bat_end_code:%errorlevel%
Bashシェルの内容(ファイル名:Get_VPCFlowLogs_OneDayAgo_EveryLogStream.sh)を下記のリンクを参照
nextBackwardTokenを使ってCloudWatch logsのログ(前日のみ)をlocalにdownloadするシェルを作成してみました。
タスクスケジューラに登録して動作確認を行う
タスクスケジューラに登録すると、設定する時間で実行できます。
今回は、VPCFlowLogsを例にシェルを作成して、毎日実行できるようにタスクスケジューラに登録してみました。
タスクスケジューラにBashシェルを起動するBatを登録
1. 画面下部に検索欄に「タスクスケジューラ」を入力すると、タスクスケジューラが表示されて、クリックします。
2. 「タスクスケジューラ」が表示され、「タスクスケジューラライブラリ」を右クリックし、メニューから「新しいフォルダ」をクリックします。フォルダ名にを[BashTest]指定します。
3.[BashTest]を右クリックし、「タスクの作成」をクリックします。
4.「全般」タブの「名前」に「Get_VPCFlowLogs」入力します。
「ユーザーがログオンしているかどうかにかかわらず実行する」を選択し、「最上位の特権で実行する」をチェックします。
5.「トリガー」タブの「新規」ボタンをクリックします。
6.「新しいトリガー」画面で赤枠のように設定し、「OK」をクリックします。
7.「トリガー」タブ画面に下記赤枠のように反映されます。
8.「操作」タブの「新規」ボタンをクリックします。
9.「新しい操作」画面で「参照」ボタンをクリックします。
10.下記の赤枠のように参照ファイルを選択し、「開く」ボタンをクリックします。
11.「新しい操作」画面に赤枠のようにファイルパスが表示され、「OK]ボタンをクリックします。
12.「操作」タブ画面に下記赤枠のように反映されます。
13.「条件」タブ画面に下記赤枠のようにチェックを外します。
□コンピューターをAC電源で使用している場合のみタスクを開始する
14.「設定」タブ画面で何も変更しないで「OK」ボタンをクリックします。
15.下記のうように管理者ユーザのパスワードを入力し、「OK」ボタンをクリックします。
※
「全般」タブで「最上位の特権で実行する」をチェックしている場合、パスワードが要求されます。
16.登録すると、下記のように登録されます。
タスクスケジューラで実行されることを確認
タスクが指定時間が実行されます。
18:30に実行され、18:32にログが出力されいることを確認できました。
参考
タスクスケジューラ「最上位の特権で実行する」設定 管理者ユーザーと一般ユーザーの権限の違い
【Windows/タスクスケジューラ】バッチを実行する際の3つの注意点