この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
本記事対象
PowerShellでEC2インスタンスを起動させる方法が知りたい方
ども。あいしんくいっと(@ithinkitnet)です。
ithinkit
PowerShellでEC2インスタンスを起動したい
前に「Windows端末にawscliを入れてEC2インスタンスを起動」といった記事を書きました。
【AWS】これさえあれば超快適!awscliを使って30秒でインスタンス起動!
今回はPowerShellスクリプトを使ってEC2を起動させてみたいと思います。
PowerShellでEC2インスタンス起動
PowerShellスクリプトを使ってEC2を起動させるのに必要なのは以下の通り。
起動に必要なもの
- Powershell実行環境
- ループ処理を入れてキチンとインスタンス起動確認
- タグを引数にして実行させる(タグを覚えておくだけで簡単に起動♪)
Nameタグをつけておく
NameタグはEC2インスタンスを起動させる際のウィザード内で設定するはずなので、付いていない事は無いとは思いますが、一応確認しておきましょう。
EC2起動スクリプト
PowerShellでEC2インスタンスを起動するスクリプトがこちら。
スクリプト実行時の引数にタグを指定することで、タグに紐づくEC2インスタンスを起動させます。
EC2起動スクリプト実行例
start-ec2.ps1 タグ>
EC2起動スクリプト「start-ec2.ps1」
# 引数チェック
if ($args[0] -eq $null){
Write-Output "引数がありません。"
exit
}
# 引数が有効なホスト名かチェック
Write-Output "ホスト名[$args]の確認"
$instanceid = aws ec2 describe-tags --filters "Name=tag:Name,Values=$args" "Name=resource-type,Values=instance" --query Tags[].ResourceId --output=text
if($instanceid -eq $null){
Write-Output "正しいホスト名を入力してください。"
exit 0
}
# 起動
aws ec2 start-instances --instance-ids $instanceid
# 起動確認
$i=0
$check_time=5
$span=3
$check_times=$check_time * 10
while ($i -lt $check_times){
$State = aws ec2 describe-instances --filters "Name=tag:Name,Values=$args" --query Reservations[].Instances[].State[].Name --output=text
if($State -eq "running" ) {
break
}else{
write-host "Waiting complete..."
sleep $span
$i++
}
}
EC2インスタンス動作確認
即興で作ったのでエラーハンドリングもあったものでは無いですが、たぶんこれでNameタグを引数にして動くと思います(汗)
ithinkit
あ、動いたw
ちなみに引数のタグ指定を間違えると一応、エラーでコケるようにしています。
とりあえず、PowerShellでEC2インスタンスを起動することが出来ました。
停止や再起動といったものも欲しくなるのが人情ですが、それはまた別の機会に作ってみたいと思います。
以上、あいしんくいっとでした。