自動化の中でEC2インスタンスを起動させてから、Chefやらなんやらを投入していく流れになると思うが、AWS CLIではWaitが可能になっている。(その他SDKももちろん可能)
特にEC2インスタンス起動においてはdocの説明やコマンドのヘルプ等で見ると、2つの状態でWaitが可能。
- instance-running
- instance-status-ok
だが、instance-running
はサーバの電源ONに近いイメージで起動させただけの状態なので、当然OSも上がっておらず通信は出来ない。
なので、何をチェックしているかの詳細はわからないが、OSレベルでの起動確認までしている instance-status-ok
をWaitした方が良い。
起動と同時に上記2つをWaitさせた検証結果がこんな感じ。
EC2インスタンス起動
$ time aws ec2 start-instances --instance-ids i-XXXXXXXX
real 0m0.963s
user 0m0.375s
sys 0m0.073s
instance-runningでWait
$ time aws ec2 wait instance-running --instance-ids i-XXXXXXXX
real 0m15.993s
user 0m0.391s
sys 0m0.066s
instance-status-okでWait
$ time aws ec2 wait instance-status-ok --instance-ids i-XXXXXXXX
real 3m32.230s
user 0m0.471s
sys 0m0.071s
環境により実行時間に多少の誤差は出ると思われるが、15秒程度で返ってきている。
でも、instance-running
を信用して即座にSSH接続なりPingしても普通に返ってこない。。。存在価値があるのだろうか?