AWS ECS (elastic container service)デビューした。
基盤には AWS Fargateを採用。
AWS ECSとは
Amazon Elastic Container Service (Amazon ECS) は、Docker コンテナをサポートする拡張性とパフォーマンスに優れたコンテナオーケストレーションサービスです。これにより、コンテナ化されたアプリケーションを AWS で簡単に実行およびスケールできます。Amazon ECS では、独自のコンテナオーケストレーションソフトウェアをインストールおよび操作したり、仮想マシンのクラスターを管理およびスケールしたり、それらの仮想マシン上のコンテナをスケジュールしたりする必要はありません。
Amazon Elastic Container Service (ECS - 高性能な Docker コンテナ管理) | AWS
- 基盤にEC2か、Fargateを選択することができる
EC2を選んだ場合、コンテナのタスクは自身のEC2インスタンス上で稼働する。
AWS Fargateとは
AWS Fargate は、サーバーやクラスターの管理の必要なしにコンテナを実行するための、Amazon ECS に対応したコンピューティングエンジンです。AWS Fargate を使用すると、コンテナを実行するために仮想マシンのクラスターをプロビジョニング、設定、スケールする必要がありません。これにより、サーバータイプの選択、クラスターをスケールするタイミングの決定、クラスターのパッキングの最適化を行う必要がなくなります。AWS Fargate により、サーバーやクラスターの操作や検討が不要になります。Fargate を使用すると、アプリケーションを実行するインフラストラクチャの管理ではなく、アプリケーションの設計や構築に注力できます。
AWS Fargate – サーバーやクラスターの管理が不要なコンテナの実行
たとえば、コンテナを動かすために割り当てるリソースと、EC2に確保したリソースとの辻褄合わせ作業が必要なくなるそうな。
とりあえずサンプルを立てた流れ
sample-app
というコンテナを動かしてみたのだけど、手順がフレンドリーすぎて画像を付けて解説とか必要ない。
↓に列挙した感じの流れで進めていったらできた。
- AWS ECSサービスをひらくと、今すぐ始める!というボタンがあったので押す
- Containerの設定
- 使用するコンテナイメージはなんなのか(sample-app)
- Taskの設定
- メモリ(512MB), vCPU(0.25)の設定
- Serviceの設定
- Clusterの設定
- ながれに任せて(名前付けたくらいしかしてない)
動作確認
Clusterが作られて、サービスの内容を確認するとグローバルIPが振られていることが確認できた。 そのIPにアクセスすると、HTMLドーンと表示されて完了。
ECSのコンテナを停止させる
sample-appの流れでは、タスクはサービスによって自動で起動されたもののため、 停止させようとしたら「サービスの設定を変更して止めるように」注意された。
サービスの設定で、タスクの必要数を0にしたところ、ちょっと待ったらタスクが処分されて停止した。
あばよクラスタ
クラスタの削除を敢行したら関連して作ってくれたVPCやらネットワークゲートウェイやらサブネットやらもりもり消していった。 綺麗な仕上がりである。
感想
ECS初めて見るのは思ってたより簡単だった。 コンテナ引っ張ってくるところに時間がかかるとかあるっぽいので、ECRにコンテナリポジトリを立てたら爆速になる?
Fargateになって、autoscalingでスケールアウトだけじゃなくスケールアップもできるようになってるはずだ! というなぞの確信があるので、minecraft on ECS (auto scale up/down)ができたら、 活躍できてないminecraft用VPS(2GBリソース)をたためるかなぁという気持ち。
minecraft畳んでmastodonを1GBリソースサーバから引っ越しさせたほうがいいか。
というかminecraftサーバ動いてないときほんっと動いてないのでEC2で寝かせてても良いところではある。 だれがkickupするのっていうところを解決できればなぁ~~。
あるいは常時稼働しても問題ないほどの資金が調達できればいい。