🥷
PowerShellでEC2を素早く起動/停止する
はじめに
普段開発環境としてEC2を利用していますが、EC2は起動しているだけで料金がかかってしまうのでこまめに起動/停止するようにしています。
ただ毎回コンソールへログインしてEC2を起動/停止するのは面倒なので、EC2を起動/停止するPowerShellを作成してみました。
EC2の起動
AWS CLIの「start-instances」でEC2を起動しています。
ただ「start-instances」はリクエストを投げているだけなので、「instance-status-ok」で起動確認をおこなうようにしています。
また複数のインスタンスを同時に起動できるよう、起動するEC2を配列で指定できるようにしています。
ec2_start.ps1
$instanceIds = @("{EC2のインスタンスID}", "{EC2のインスタンスID}")
Write-Output "EC2「${instanceIds}」を起動します。"
# EC2の起動
aws ec2 start-instances --instance-ids $instanceIds
Write-Output "EC2起動中..."
# EC2の起動確認
aws ec2 wait instance-status-ok --instance-ids $instanceIds
Write-Output "EC2「${instanceIds}」が起動しました。"
EC2の停止
AWS CLIの「stop-instances」でEC2を停止しています。
「start-instances」と同様に「stop-instances」はリクエストを投げているだけなので、「instance-stopped」で停止確認をおこなうようにしています。
また複数のインスタンスを同時に停止できるよう、停止するEC2を配列で指定できるようにしています。
ec2_stop.ps1
$instanceIds = @("{EC2のインスタンスID}", "{EC2のインスタンスID}")
Write-Output "EC2「${instanceIds}」を停止します。"
# EC2の停止
aws ec2 stop-instances --instance-ids $instanceIds
Write-Output "EC2停止中..."
# EC2の停止確認
aws ec2 wait instance-stopped --instance-ids $instanceIds
Write-Output "EC2「${instanceIds}」が停止しました。"
まとめ
AWS CLIのインスタンス起動/停止コマンドをPowerShellで実行しているだけですが、このPowerShellを実行するだけですぐに作業が始めれるので重宝しています✨
AWS CLIのコマンドは豊富に用意されており、大体の操作はできるので、AWS CLIを利用して少しでも楽したいですね。
Discussion