概要
この記事では、ECSの入門としてECSでApacheを構築し、Webからアクセスする手順を紹介します。
手順はこうなります。
- ECSタスク定義を作成(httpdのdockerを定義)
- ECSクラスターを定義
- ECSクラスターでECSタスクをサービスとして実行(デプロイ)
- 動作確認
ECSタスクを定義
Amazon Elastic Container Serviceの左サイドバーから「タスク定義」を押し、「新しいタスク定義の作成」を押します。
タスク定義とは、docker-compose.ymlを作成するイメージです。
タスク定義とコンテナの設定画面で、次の通り入力します。
タスク定義の設定 | |
・タスク定義ファミリー | 任意のタスク定義ファミリー名を入力する。 ex)httpd-family1 |
コンテナ - 1 | |
・名前 | 任意のコンテナ名を入力する。 ex)httpd-container |
・イメージ URI | httpd と入力する。 |
・コンテナポート | 80 が設定されてることを確認する。 |
入力して、次へボタンを押します。
環境、ストレージ、モニタリング、タグの設定画面で、次の通り入力します。
環境 | |
・アプリケーション環境 | AWS Fargate(サーバーレス) |
モニタリングとログ記録 | |
・ログ収集の使用 | チェック外すと料金節約できます。 どちらでも良いです。 |
入力して、次へボタンを押します。
確認して作成画面で、入力内容を確認して、次へボタンを押すと、
タスク定義が作成されます。
ECSクラスターを定義
Amazon Elastic Container Serviceの左サイドバーから「クラスター」を押し、「クラスターの作成」を押します。
クラスターの作成画面で、次の通り入力します。
クラスター設定 | |
・クラスター名 | 任意のクラスター名を入力する。 ex)httpd-cluster |
ネットワーキング | |
・VPC | デフォルトVPCでOKです。 任意のVPCにデプロイしたい場合は、それを選択します。 |
入力して、作成ボタンを押します。
クラスターが作成されていればOKです。
ECSクラスターでサービスを起動
作成されたクラスターを押します。
クラスターは環境定義みたいなものです。
クラスター=環境ができたので、環境に対してアプリをデプロイするため、デプロイボタンを押します。
デプロイ画面で、次の通り入力します。
デプロイ設定 | |
・アプリケーションタイプ | 常駐型のサービス(httpサーバー)であるため、 サービス を選択します。 |
・ファミリー | タスク定義で作成したファミリーを選択します。 |
・サービス名 | 任意のサービス名を入力します。 ex)httpd-service |
ロードバランシング | |
・ロードバランサーの種類 | Application Load Balancer を選択します。 新しいロードバランサーの作成 を選択します。 |
・ロードバランサー名 | 任意のロードバランサー名を入力します。 ex)httpd-service-lb |
・ポート | 80 HTTP であることを確認します。 |
・ターゲットグループ名 | 任意のターゲットグループ名を入力します。 ex)httpd-service-tg |
ネットワーキング | デフォルトでOKです。 |
入力して、デプロイボタンを押します。
サービスが起動されていること(ステータス=アクティブ)を確認します。
サービス名を押すと、サービスの詳細が見れます。
DNS namesに、URLが表示されていますね。
最後に、Webからアクセスできるよう、ロードバランサーのセキュリティグループで、80のインバウンドを許可します。
Load balancers の青色リンクを押して、セキュリティーグループ設定してあげましょう。
既存のルールがあればそれを使用しても良いですし、なければ上記のようなセキュリティグループを作成します。
作成したセキュリティグループを、load balancerにアタッチします。
これで準備OKです。
Webからアクセスして動作確認
サービスの詳細のDNS names を開いて、「It works!」と表示されていることを確認してください。
これで、ECS on FargateでApacheを起動できました。
以上です。
始めてECSを動かすのも一苦労でした。