商品レビューまとめ記事

PowerShellでEC2インスタンスを起動(タグ名を使って)

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

ithinkit

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

さて、以前のエントリで手元のWindows端末にawscliを入れてEC2インスタンスを起動、といった事を書きました。

【AWS】これさえあれば超快適!awscliを使って30秒でインスタンス起動!

今回はちょっと志向を変えてpowershellスクリプトを使って起動させてみたいと思います。

PowerShellでEC2インスタンス起動

起動に必要なもの

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

タグをつけておく

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

起動スクリプト

PowerShellでEC2インスタンスを起動するスクリプトがこちら。
引数にタグを指定することで紐づくインスタンスを起動させます。

# 引数チェック
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タグを引数にして動くと思います(汗)
あ、動いたw
ちなみに引数のタグ指定を間違えると一応、エラーでコケるようにはしています。

ec2-start-1

起動だけしかないと、停止や再起動といったものも欲しくなるのが人情ですが、それはまた別の機会に作ってみたいと思います。

※余談

作成したスクリプトをそのまま記事内に埋め込んだところ、何故かインデントが消し飛んでしまう、といった事態に遭遇。
調べてところ、下記のブログで解決出来ました。

荒れ果てたWordPressコードを美しく整形してくれるツールまとめ

それではまた!

コメントを残す

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

*

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