今日は EC2 Fleet (※動画) を試しましょう
その名の通り複数の EC2 インスタンスを統御する機能です(艦これみたいな感じ?よくわかりませんが)
こいつで10台だろうと100台だろうといっぺんに呼び出したり廃棄したりすることができます
いちインスタンスいちインスタンス、人の温かみのある指で心をこめてなんてめんどくさくて嫌ですからね。
自作ツールでも出来ないこともないでしょうがそんなつまらないfor文等は書きたくありませんのでこれでやります
さて こちら にあるとおり、
EC2 Fleet is available only through the API or AWS CLI.
本機能は API or AWS CLI
のみとのことですがですがそれで結構
冒頭のリンク先にある Deep Dive では デモも行われて おり、その際の ソースが Github で公開 されています。これをそのまま拝借すると話が早そうです
これでいきましょうか
https://github.com/awslabs/ec2-spot-labs/tree/master/ec2-fleet#turbo-boost-ec2-fleet-with-spot
作って消す、という一連の流れを体験できるようになってます
ここでは手順を スクリプト にすることにします ※記事本文に直書きから gist へ移動:2020/12/26
実験用のアカウントのクレデンシャルを取得し こいつ を実行してマネコンの方を観察してみると(適宜リロードしながら) ※反映に20分~の遅延が出るのを観測:2020/12/26
※上記のスクリプトは基本的に 1~6 のステップを踏襲しておりますが、設定ファイルをカスタマイズ ( $cli_input_json
) しています。エラー回避などのため。
※途中に適宜待機処理などを挟んでおります。人がマネコン側で推移を見守る余裕のため
※立ち上げたインスタンス分の料金はかかりますので注意しましょう(消し忘れると悲惨)
※リージョンはデフォルトです
備考
今回これをやろうと思ったのは、ある Lambda Function の動作確認をしたかったのがきっかけです。Lambda Function の内容は本題から逸れますので詳細は割愛しますが ec2 に関係する処理を書いてありまして、本番環境に展開する予定となっていました。しかし100台超のインスタンス群が既に稼働している本番環境にいきなり投入するのに少し不安があったため、sandbox として用意した別アカウント環境で、台数が多いという条件でも問題が無いかを確認しておきたいなぁと思ったのです。そうすると sandbox のほうにも同じ台数の実験用インスタンス群を実際に立てようと思うわけですが、そのオペレーションを容易にするための手段として EC2 Fleet を採用した、という次第です。
おまけに上述の #./exam_among_fleet.sh
の部分で任意にやりたいことを書けば、動作確認タスクそのものの明文化且つ自動化にもなろうかと思います。
用が済んだインスタンス群は当然ながら後始末もしないといけませんが本機能であればそれもご覧の通り簡潔な命令で済みますから消し忘れ、オペミス等の懸念も少なく助かります