あいしんくいっとオススメ商品レビュー

PowerShellでEC2インスタンスを起動させる方法(タグ名を使って)

本記事対象
PowerShellでEC2インスタンスを起動させる方法が知りたい方

ども。あいしんくいっと(@ithinkitnet)です。

ithinkit

PowerShellでEC2インスタンスを起動したい

前に「Windows端末にawscliを入れてEC2インスタンスを起動」といった記事を書きました。
【AWS】これさえあれば超快適!awscliを使って30秒でインスタンス起動!

今回はPowerShellスクリプトを使ってEC2を起動させてみたいと思います。

PowerShellでEC2インスタンス起動

PowerShellスクリプトを使ってEC2を起動させるのに必要なのは以下の通り。

起動に必要なもの

  • Powershell実行環境
  • ループ処理を入れてキチンとインスタンス起動確認
  • タグを引数にして実行させる(タグを覚えておくだけで簡単に起動♪)

Nameタグをつけておく

NameタグはEC2インスタンスを起動させる際のウィザード内で設定するはずなので、付いていない事は無いとは思いますが、一応確認しておきましょう。
AWSコンソールのタグ列

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
ちなみに引数のタグ指定を間違えると一応、エラーでコケるようにしています。

ec2-start-1

とりあえず、PowerShellでEC2インスタンスを起動することが出来ました。
停止や再起動といったものも欲しくなるのが人情ですが、それはまた別の機会に作ってみたいと思います。

以上、あいしんくいっとでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)