最低限の設定でAmazon ECS(+EC2)なNginxを立ち上げる

aws.amazon.com

いまECSを使うならEC2インスタンスをホストとせずFargateを使うのが基本になりそう。
ここではFargateではなくEC2インスタンスを使う方法で進めます。

ちなみにECSは「Elastic Container Service」の略ですが、ひと昔前は「EC2 Container Service」でした。

大まかな流れ

  1. 新しいタスク定義の作成
  2. クラスターの作成
  3. サービスを作成してクラスターで実行・維持するタスク定義を指定

タスク定義

マネジメントコンソールでAmazon ECSの画面を開いたら左メニューから「タスク定義」を選択し「新しいタスク定義の作成」をします。
「起動タイプの互換性の選択」をする画面が表示されますが、ここではEC2を選択。

次は「タスクとコンテナの定義の設定」。 「タスク定義名」を適当に(nginx-taskとか)入力しましょう。

あと、少し下にスクロールして「コンテナの定義」から「コンテナの追加」をします。
「コンテナ名」はお好きにnginx-containerみたいに入力して。
「イメージ」は nginx:alpine とかするとDocker Hubからイメージをとってくるようになってます。

タグはドキュメントを参照してください。
https://hub.docker.com/_/nginx

「メモリ制限」は推奨されている最低値の300。
「ポートマッピング」はホスト、コンテナともに80としておきます。

これ以外の設定値は特に触らず、「作成」します。

クラスター作成

タスク定義できたらクラスターの作成です。

左メニューから「クラスター」を選んで「クラスターの作成」と進み、最初の「クラスターテンプレートの選択」は EC2 Linux + ネットワーキング を選びます。
「クラスター名」はなんでもいいです。nginx-clusterにしときます。
「EC2インスタンスタイプ」はお試し目的なのでt2.microとか小さいのにしとくといいでしょう。

最低限の設定はこれくらいです。
「作成」しましょう。

サービス作成

最後ですね。サービスの作成です。

クラスターの作成が終わると「クラスターの表示」というボタンが出てくるのでそれを押すか、クラスターの一覧から作成したクラスター選択します。
「サービス」というタブがあるので、そこから「作成」しましょう。

「起動タイプ」はEC2。
「タスク定義」と「クラスター」は先ほど作成したものが選択されていることを確認してください。
「サービス名」は例によってnginx-serviceとして、「タスクの数」は1としときます。

あとは触らずに「次のステップ」を押し続けます。
最後の確認画面で「サービスの作成」です。

動作確認

EC2インスタンスが作成されているので、そのパブリックIPを参照するか、クラスターの「タスク」タブを開いてタスクのリンクを押すと、下にコンテナが表示されており、そこに外部リンクが記載されています。

ブラウザからアクセスするとNginxのウェルカムページが表示されるはずです。やったね。