ECSでは状態を持たないdockerコンテナを起動させたりするので、同じく状態を持ちにくく低価格で扱えるスポットインスタンスと相性がいいです。
今回はEC2::SpotFleetをECSで使う方法の備忘録です。
ほぼ公式ドキュメントのまんまですが。
1. AWSコンソールのEC2のスポットリクエストを選択
ここから選択
2. スポットインスタンスをリクエストする
3. リクエストタイプを設定する
ここで注意しないといけないのはAMIが各リージョン毎にECSに最適化AMIがあるのでそちらを選ぶことです。最適化インスタンスは先程の公式ドキュメントにありますが、tokyo regionだとami-c393d6a4の模様。
4. ストレージの設定
ここは特にハマるところないですが、EBS最適化インスタンスを起動するは必要であればチェックしましょう。
5. インスタンスの詳細
ここでユーザデータに下記の設定をいれるとECSのインスタンスとして使えるようになります。your_cluster_name
は登録したいクラスターの名前に書き換えてください。
#!/bin/bash echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
6. キーペアおよびロールの設定
IAMインスタンスプロフィールにはAmazonEC2ContainerServiceforEC2Role
がついているものを選びましょう。この権限がないとECSへのインスタンス追加・削除等の権限ないためエラーになりそうです。
またIAMフリートロールはsws-ec2-spot-fleet-role
のままで大丈夫です。
7. ファイアウォールの設定
セキュリティグループですが、ALBにぶら下げて動的ポートマッピングをする場合は 32768 - 65535
のポートは空けたものにします。
※2017年2月20日追記
0 - 65535
と記述していましたが、ecsのエフェメラルポートレンジは 32768 - 65535
とご指摘いただいたので修正致しました。
ref.
http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task_definition_parameters.html
8. リクエスト有効時間の設定
ここはご都合に合わせた設定で
これでいけるかと思います。あとはSpotInstanceの入札が完了してインスタンスが起動したらECSに追加されるはずです。
おわり!