🥷

PowerShellでEC2を素早く起動/停止する

2023/11/24に公開

はじめに

普段開発環境として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を利用して少しでも楽したいですね。

https://docs.aws.amazon.com/ja_jp/cli/latest/index.html

コラボスタイル Developers

Discussion