この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
先日投稿した以下のエントリはLinux環境にて稼働するシェルスクリプトのサンプルをご紹介しましたが、当エントリでは同じような内容をWindows PowerShellスクリプトで試してみたいと思います。
目次
AWS Tools for Windows PowerShellのインストール
Linux環境版ではAWS CLIを用いてAWSリソースへのアクセスを行っていましたが、今回は『AWS Tools for Windows PowerShell』を使ってみたいと思います。
公式ページにアクセスし、インストーラをダウンロード。
インストーラを起動し導入を行います。
使い方については以下リファレンスをご参照ください。
jqのインストール
『AWS Tools for Windows PowerShell』で取得した内容は、Linux版同様jqを用いてパースする事にします。こちらも公式ページからWindows版をダウンロード。
Windows版jqはそのままでも利用出来ます。今回はC:\app\jq\配下にツールを配置しました。
こちらが実行サンプルです。環境変数に通すなどしてみたりしましたがイマイチ上手く行かなかったので今回は実行時にフルパスを指定する事で対応してみたいと思います。
サンプルコード(PowerShell)
んで、こちらがPowerShellのサンプルコードとなります。インスタンスのステータスを取得してみてはいますが使ってはいません。停止中の停止処理、起動中の起動処理共に繰り返し処理しても指示が走るだけで影響無さそうだったのでその分の処理は端折ってます。PowerShellでその辺りステータス内容を確認して処理する必要があれば組み込んで見ようかな、というところです。
実行の際には以下エントリを参考にSet-ExecutionPolicyコマンドで実行ポリシーを設定する事を忘れずに。
ec2control.ps1
$parameterArgs = $Args[0]
$REGION="us-east-1";
$INSTANCE_ID="i-xxxxxxxx";
echo $parameterArgs
echo $REGION
echo $INSTANCE_ID
$INSTANCE_STATUS = Get-EC2InstanceStatus -Region $REGION -InstanceId $INSTANCE_ID | ConvertTo-Json | C:\app\jq\jq.exe -r '.InstanceState.Name.Value'
echo $INSTANCE_STATUS
if( $parameterArgs -eq $null ){
"argument is required( --start / --stop ). nothing to do."
} else {
if( $parameterArgs -eq "--start" ){
Write-Host "args is --start."
Start-EC2Instance -Region $REGION -InstanceId $INSTANCE_ID
Write-Host ""
Write-Host "instance starting..."
} elseif( $parameterArgs -eq "--stop" ){
Write-Host "args is --stop"
Stop-EC2Instance -Region $REGION -Instance $INSTANCE_ID
Write-Host ""
Write-Host "instance stopping..."
}
}
以下が実行サンプルです。
まとめ
以上、Windows環境版でのPowerShellスクリプト実行サンプル(EC2の起動・停止)でした。AWS CLIとは利用方法が若干異なるので使い勝手に慣れないといけない部分はありますが、Windows環境での利用ケースも最近増えて来ていますので色々使ってみようと思います。こちらからは以上です。