Amazon EC2 Container Service(ECS)を管理コンソールからつついてみる

2015年4月にAmazon EC2 Container Service(ECS)が東京リージョンでも使えるようになったと聞いていた。

「そのうちAWSでDockerをうまく使えるようになっとかなくちゃ」

とずっと思ってたが(Beanstalkがdockerをサポートする前からw)、ずっと頭の中でペンディングしてる。。。というのが現状。
いわゆる、こっち方面では「初心者レベル」。
Dockerは使ってて、オフィスORA用redmineやgitlabなんかをEC2インスタンス上で稼働してたりするし、Dockerfileも自分のアプリ用にわりと書いてはいるけど。。。

そんな中、「オフィスORAのDevOpsな取り組み」が少しずつ進んでついに「IaaSやPaaSの現状チェックしなきゃ。。。あ、、、ってかまずDocker周辺を。。。あ、、、ってかAWSでのDockerの件…」となってて「ECSが東京リージョンでも。。。」の件を思い出して、いきなりつついてみたというわけだ。。

「よくわからず、いきなり触る」というアンチパターンを実践。
(「遠回りしてこそわかることもある」と、悔し涙をながしつつわざとこういうアプローチを取る傾向は個人的な趣向デス)

案の定、動かすところまでいったものの、「ただ動いただけ」でよく把握できなかった。。。

問題の1つは「言葉の定義」が曖昧でなにしてるのかよくわからないこと。
そこで、動いたECSを放置して、まずは「言葉の定義」をチェック。。。

What is Amazon EC2 Container Service?

AWSのECSドキュメントを開いた途端、いくつかの「言葉の定義」が記述されてた(やっぱり先にこれに目を通すべきだった)。

クラスタ
タスクを追加できるコンテナインスタンスの論理的グループ
コンテナインスタンス
クラスタの中に登録され、Amazon ECS Agentが走るEC2インスタンス
タスク定義
1つ以上のコンテナを含むアプリケーションの定義
スケジューラー
コンテナインスタンスにタスクを配置する為の手段(Serviceとして常にタスクが走るように監視するタイプと、ただTaskとして1度走らせるだけのタイプがあるっぽい)
タスク
コンテナインスタンス上で走るタスク定義のインスタンス
コンテナ
タスクの一部として作られるLinuxコンテナ

というわけで、なるほど納得。
Dockerだしコンテナはわかるよ。。って思ってたが、ECSが扱うのはあくまでLinuxコンテナ(Dockerのベース)だし、複数コンテナを含む枠としてタスクがあり、それをタスク定義で記述できて、コンテナインスタンスと呼ばれるEC2インスタンス内でECS Agentがタスク群をスケジューラーに沿って走らせるぞ。。。と、そういうわけですな。

管理コンソールで、なにもわからずゴソゴソした時点では、タスクとコンテナの違いがイマイチわからなかったし(なんでコンテナをタスクと呼ぶの?って感じでマチガッテタ)、スケジューラーがなんなんだか分からなかった。。けど、これで納得。

というわけで、AWSのECSドキュメントに目を通してから、クラスメソッドさんの

この辺を読みながら触ってみると、私みたいに「迷える駄馬」にならないで済むとおもわれる。

ちなみに「AWSでDocker」という意味で整理すると。。。。

  • ECSで
  • Elastic Beanstalkで
  • EC2インスタンスで独自に

の3パターンがあるわけで、Beanstalkも含めてこれで全部触ってみたわけだけど、まだ「CoreOSなEC2インスタンスを作って独自にやる」のがピンとくる感じ。

もう少し、いろいろ情報を整理しつつ、いじったりもしながら考察していこうと思う。

コメントを残す

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