すでにメンバーの場合は

無料会員登録

GitHubアカウントで登録 Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

登録がまだの方はこちらから

Pikawakaにログイン

GitHubアカウントでログイン Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

お役立ち情報

更新日:

【初心者向け】AWSのECSの使い方を徹底解説!

ぴっかちゃん
ぴっかちゃん

ECSはDockerイメージをAWS上で実行できるサービスです。

この記事では、AWSのECS(Elastic Container Service)を使ってアプリをデプロイする方法 を、初心者向けにわかりやすく解説していきます。

特に初心者がつまずきやすいVPC(ネットワークの仕組み) やECR(アプリのイメージを保存する場所) といった基盤部分から、ECSサービスの作成までを順を追って解説していきます。この記事では「Hello World」という文字を表示させるまでを解説いたします。

以下のことが実装されていることを前提として解説をいたします。

  • AWSのアカウントを作成している
  • Dockerについて知識がある

全体像をつかもう

AWSでアプリを公開するには、複数のサービスが連携して動作しています。ECSにアプリをデプロイする際には、以下の主要なサービスが必要です。

ECR(Elastic Container Registry)

Dockerで作ったアプリのイメージを保存する場所です。ECSはここからイメージを取得してコンテナを起動します。

VPC(Virtual Private Cloud)

アプリが動くネットワーク空間です。インターネットとつなぐか、内部ネットワークだけで動かすかを決めます。

ECS(Elastic Container Service)

Dockerイメージ(コンテナ化されたアプリ)をAWS上で簡単に実行・管理できるサービス です。ECSを使うことで、複雑なサーバー管理や手動でのデプロイ作業を大幅に減らすことができます。
具体的には以下の役割を持っています。

  • コンテナの起動・停止
  • 複数のコンテナのスケーリング
  • タスク定義に基づいた動作管理

Fargate / EC2

ECSが実際にコンテナを動かす基盤です。ECSではどちらかを選んで使うことができます。

サービス名 説明
Fargate サーバー管理不要でコンテナを直接動かせる
EC2 自分で仮想サーバーを用意してコンテナを動かす

Dockerイメージの作成

まずは動かすアプリのDockerイメージを作成します。作成にはDocker Desktopが必要になります。
まだインストールしていない場合は、こちらからインストールしましょう。

今回はブラウザに「Hello World」と表示させるだけのシンプルな構成です。このファイルを作成するためのディレクトリを以下のコマンドで作成しましょう。

ターミナル
1
2
mkdir hello-world-ecs
cd hello-world-ecs

次に作成したディレクトリ内にindex.htmlファイルを作成し、以下の内容を記述します。

index.html
1
Hello World

次に以下の内容でDockerfileという名前のファイルを作成し、以下のコードを記述します。

Dockerfile
1
2
3
4
5
6
7
8
# Nginxという軽量なWebサーバーを使用
FROM nginx:alpine

# index.htmlをNginxの公開ディレクトリにコピー
COPY index.html /usr/share/nginx/html/

# ポート80でアクセスを待ち受ける
EXPOSE 80

最後にDocker Desktopを起動した状態で、以下のコマンドでDockerイメージをビルドします。

ターミナル
1
docker build --no-cache --platform linux/amd64 -t hello-world-ecs .

AWS CLIの設定

次に作成したDockerイメージをECRに保存します。
push(保存)するにはターミナルでawsコマンドを実行する必要があるので、AWS CLIが必要になります。
まだインストールしていない方は以下のコマンドでインストールしましょう。

ターミナル
1
brew install awscli

次にAWS CLIの設定を行います。その際、AWSアクセスキーとAWSシークレットアクセスキーといったものが必要になります。

この2つはAWSのコンソールで作成します。
右上の自分のユーザー名をクリックすると表示される「セキュリティ認証情報」をクリックします。

セキュリティ認証情報

遷移したページの「アクセスキー」で「アクセスキーの作成」をクリックします。

アクセスキーの作成

ユースケースで「コマンドラインインターフェイス(CLI)を選択し、表示されるチェックボックスにチェックを入れ、次へをクリックします。

CLI

次に説明タグを設定します。「ECS-test」など管理しやすい名前をつけておきましょう。最後に右下の「アクセスキーを作成」をクリックします

説明タグ

すると以下のような画面になり、アクセスキーとシークレットアクセスキーを確認することが出来ます。この画面を閉じてしまうと二度とシークレットアクセスキーが確認できなくなってしまうので、必ず「.csvファイルをダウンロード」をクリックし、ファイルをダウンロードしておきましょう。

アクセスキー

作成をしたら、以下のコマンドでAWS CLIの設定を行います。
AWS Access Key IDには作成したアクセスキーを、AWS Secret Access Keyには作成したシークレットアクセスキーを入力しましょう。

ターミナル
1
2
3
4
5
6
7
aws configure

# 以下を入力
AWS Access Key ID: (作成したアクセスキー)
AWS Secret Access Key: (作成したシークレットアクセスキー)
Default region name: ap-northeast-1  # 東京リージョン
Default output format: json

これでAWS CLIの設定は完了です。

ECRにイメージを保存

AWSコンソールにログインし、ECRのコンソールを表示します。そして、左メニューの「Private registry」の「Repositories」をクリックし、「右上のリポジトリの作成」をクリックします。

リポジトリの作成

リポジトリ名は作成したアプリ名と一緒にしておくと管理が楽です。今回であれば「hello-world-ecs」と入力します。
入力後に、右下の「作成」をクリックします。

作成

作成後、以下の画面に遷移するので、作成したリポジトリ名の左のチェックを入れ、「プッシュコマンドを表示」をクリックします。

プッシュコマンドを表示

するとこのリポジトリにDockerイメージをプッシュするためのコマンドが表示されます。「2」はDockerイメージを作成するコマンドですが、すでに実行しているため実行は不要です。「1」のコマンド実行後、「Login Succeeded 」と表示されれば「3」、「4」と続けてコマンドを実行しましょう。

イメージをプッシュ

「4」のコマンド実行後、作成したリポジトリをクリックし、イメージが3つ保存されていればプッシュ成功です。

イメージの確認

これでECRの設定は完了です。

VPCの構築

AWS上でアプリを動かすためには、まずネットワーク環境を整える必要があります。AWSではこのネットワークを VPC(Virtual Private Cloud)と呼びます。
VPCとは、AWS上に作る専用のネットワーク空間です。マンションの専用エリアのようなもので、外部と隔離された安全な環境を提供します。クラウド上の「自分専用のネットワーク空間」と考えるとわかりやすいです。以下がVPCの役割になります。

  • アプリやデータベースが安全に動くための隔離された空間を提供
  • インターネットや他のネットワークと接続するかどうかを制御
  • サブネットやルートテーブル、セキュリティグループなどを使って通信を管理

サブネット

サブネットは、VPC内をさらに細かく区切った区画です。マンションの各階のようなものと考えてください。
VPCという大きなネットワークの中で、サブネットは小さなネットワーク単位として扱われます。
大きなネットワークを小さく分けることで、管理やセキュリティがしやすくなります。以下の2種類があります。

種類 役割
パブリックサブネット インターネットと直接通信可能。Webサーバーやロードバランサーを置く場所。
プライベートサブネット インターネットと直接通信しない。外部からアクセスしてほしくないデータベースや内部処理用のコンテナを置く場所。

こうして、公開していいサーバーと隠すべきサーバーを分けることができます。

サブネットには IPアドレスの範囲(CIDRブロック) を設定します。

例:10.0.1.0/24

このサブネットには10.0.1.1〜10.0.1.254のIPアドレスが使えます。
サブネットごとに異なるルートやセキュリティを設定できるため、管理がしやすくなります。

2つ作っておくと災害や障害時に対応ができるので、基本的に2つ作っておくと良いでしょう。

インターネットゲートウェイ

インターネットゲートウェイとは、VPC内と外部のインターネットをつなぐ出入口です。
パブリックサブネット上のアプリに外部からアクセスできるようにするには、インターネットゲートウェイをVPCに接続する必要があります。

セキュリティグループ

セキュリティグループ は、ネットワークのファイアウォール(防火壁)です。マンションの入口で身分証をチェックする警備員のように、許可された通信のみを通す役割を果たします。

VPCの作成

それでは実際にVPCを作成していきます。
AWSのコンソールから「VPC」と検索し、VPCダッシュボードに移動します。
そして、ダッシュボードから「VPC」をクリックします。

VPC

画面右上の「VPCを作成」をクリックします。

VPCの作成

すると以下の画面になります。

VPC設定

以下が実際に入力する例です。

作成するリソースVPCのみ
名前タグtest
IPv4 CIDRブロックIPv4 CIDRの手動入力
IPv4 CIDR10.0.0.0/16
IPv6 CIDR ブロックIPv6 CIDRブロックなし
テナンシーデフォルト

IPv4 CIDR ブロック

ネットワーク用語としての「ブロック」は 「IPアドレスのまとまり」 という意味です。

IPv4

インターネットで使われている住所(IPアドレス)のこと。
例:192.168.0.1とか10.0.0.5とか。
家の住所のように「どのパソコン(サーバー)か」を特定するための番号です。

CIDR(Classless Inter-Domain Routing)

CIDR(サイダー) とは、ネットワークアドレスの範囲を指定する記法で「アドレスのまとまり(範囲)」を表すものです。住宅地で言うと「○○町1丁目から100丁目まで」のような区画指定と考えてください。

たとえば、以下のようなものになります。

10.0.0.0/16
192.168.1.0/24

この/16/24という部分が何個のIPアドレスを含む範囲かを決めています。

【具体例】
10.0.0.0/16
10.0.x.xがすべて使える(約 65,000 個のアドレスを含む)。

192.168.1.0/24
192.168.1.0から192.168.1.255まで使える(256 個のアドレスを含む)。

AWSで VPC(仮想ネットワーク) を作るときに「このVPCの中でどの範囲の住所を使うか?」を指定します。
→ これが IPv4 CIDR ブロックです。

たとえば VPC を作るときに10.0.0.0/16を選ぶと、そのVPC内のサブネットやインスタンスに10.0.x.xの住所が割り当てられます。

つまり「IPv4 CIDR ブロック」とは、『このネットワークで使える住所の範囲をまとめて表したもの』です。
CIDRブロックは10.0.0.0/16を指定すれば 広くて使いやすい無難な選択 になります。

10.0.0.0でなくても192.168.255.255までの範囲であればなんでもOKです。

IPAM 割り当ての IPv4 CIDR ブロック

IPAM (IP Address Management)は、AWSでVPCやサブネットに割り当てるIPアドレスを効率的に管理する仕組みです。
大規模ネットワークでは、どのIPをどこで使うか管理するのが大変なので、IPAMがそれを整理してくれます。

IPAMを使うのは、複数のVPCを作るような大規模な運用のときに便利です。今回はVPCを一つしか作成しないため、使いません。

IPv6 CIDR ブロック

IPv6

IPv410.0.0.1のように数字4つで表す(32ビット)のに対し、IPv62001:db8::1のように16進数で表します(128ビット)。

IPv4は世界中で足りなくなってきたため、IPv6が登場しました。
IPv6はアドレスが非常にたくさんあるため、ほぼ無限にIPを割り当てられます。

IPv6を使わなければ「IPv6 CIDR ブロックなし」を選択しましょう。

テナンシー

テナンシー(Tenancy)とは、VPC(仮想ネットワーク)の中で作るインスタンス(サーバー)が 「他の人と同じ物理サーバーを使うか、自分専用の物理サーバーを使うか」 を決める設定です。
言い換えると、「自分のサーバーを他の人と共有するか、専用に使うか」 を選ぶオプションです。

デフォルト

デフォルトを選ぶと「共有」になります。他のAWSユーザーのサーバーと同じ物理マシンに置かれます。
コストが安いのが特徴です。ほとんどのケースはこちらで問題ありません。

専有

自分専用の物理サーバーにインスタンスが配置されます。
セキュリティ面や規制の関係で他のユーザーと物理的に共有したくない場合に使います。
その分コストは高めです。

以下のように全て入力したら画面右下の「VPCを作成」をクリックします。

VPCを作成

これでVPCの完成です。

サブネットの作成

次はサブネットの作成です。サブネットを作成するにはまず、左メニューから「サブネット」を選び、「サブネットを作成」をクリックします。

サブネットの作成

すると以下の画面になるので、どのVPCの中にサブネットを作成するかを選択します。先ほど作成したVPCを選びましょう。

VPCの選択

選択するとサブネットの設定をすることができます。

サブネットの設定

以下が実際に入力する例です。

サブネット名test~publicsubnet-1a
アベイラビリティゾーンap-northeast-1-zg-1
IPv4 VPC CIDR ブロック10.0.0.0/16
IPv4 サブネット CIDR ブロック10.0.0.0/20
キーName
値 - オプションtest-public-subnet-1a

サブネット名

サブネットの名前です。test-public-subnet-1aというように末尾は次に説明するアベイラビリティゾーンを合わせましょう。
publicというのはインターネットと通信できるサブネットという意味です。一目でpublicのサブネットというのがわかるように名前をつけておくと良いでしょう。

アベイラビリティゾーン

アベイラビリティーゾーン(AZ) とは、AWSの異なるデータセンターのことです。地震や停電などの災害時に備えて、複数の場所にサーバーを分散配置することで、一箇所で問題が起きても他の場所でサービスを継続できます。
映画館に例えると、「1番スクリーン」と「2番スクリーン」のように、同じ映画を複数の場所で上映することで、一つが故障してももう一つで上映を続けられるような仕組みです。

アベイラビリティゾーン

ここで選択したアベイラビリティゾーンの末尾の1aなどをサブネット名に入れておきましょう。

IPv4 VPC CIDRブロック

先ほど作成したVPCCIDRブロックを選択します。

IPv4 サブネット CIDR ブロック

サブネットはVPC内の小さなネットワークの区画(部屋やブロック)です。
サブネットごとに使えるIP範囲を決めるのが サブネットCIDRブロックです。
VPCCIDR範囲の中からどれだけ使いますかという設定です。
VPC内で重ならない範囲なら自由に決められます。

(例)
VPC(10.0.0.0/16) = 「○○マンション全体」(10.0.0.010.0.255.255のIPが使える)
サブネット1(10.0.1.0/24) = 「1階部分」(10.0.1.1~10.0.1.254が使える)
サブネット2(10.0.2.0/24) = 「2階部分」(10.0.2.1~10.0.2.254が使える)

ここには10.0.0.0/20などという数値を入れておきましょう。

その後、右下の「サブネットを作成」をクリックします。

サブネットを作成

インターネットゲートウェイの作成

作成したサブネットは、まだインターネットにアクセスできない状態です。「パブリックサブネット」にするためにインターネットゲートウェイを作成します。インターネットゲートウェイ は、VPCとインターネットを繋ぐ「玄関ドア」の役割を果たします。

左メニューの「インターネットゲートウェイ」から「インターネットゲートウェイの作成」をクリックします。

インターネットゲートウェイ

「名前タグ」にはインターネットゲートウェイの名前をつけます。末尾にインターネットゲートウェイを表すigwをつけておくとわかりやすいです。入力後、右下の「インターネットゲートウェイの作成」をクリックします。

インターネットゲートウェイ

VPCへアタッチ

作成しただけだと意味がないので、VPCとの紐付けを行うため「VPCへアタッチ」をクリックします。

VPCへアタッチ

使用可能なVPCはインターネットに繋げたいVPCを選択し、「インターネットゲートウェイのアタッチ」をクリックします。

インターネットゲートウェイのアタッチ

これで先ほど作成したVPCが外の世界と繋がることができるようになりました。

ルートテーブル

ルートテーブル は、ネットワークの「道案内表」です。「この宛先に行くにはどの道を通ればいいか」を記録しています。VPC内のデータ(パケット)がどこに行けばいいかを示してくれます。
ルートテーブルがなければ、ネットワーク内のコンピュータは「どこに送ればいいか分からない」状態になります。

  • VPCは 街全体
  • サブネットは 街の区画(住宅地やオフィス街)
  • ルートテーブルは 道路標識

「ここから外に出たいときは、この道(インターネットゲートウェイ)を通れ」、「同じ区画内なら、この道でOK」などいうように道案内をしてくれるのがルートテーブルです。

ルートテーブルの作成

先ほど作ったサブネットからインターネットゲートウェイに向かって通信をするための設定がルートテーブルの作成になります。さきほどVPCにインターネットゲートウェイをアタッチしましたが、サブネットはインターネットゲートウェイがどこにあるかわからないため、その外部へと出るための場所に導いてあげなければ外部との通信ができません。ルートテーブルはそのための道案内役となります。

ルートテーブルを作成するには、左メニューの「ルートテーブル」から「ルートテーブルの作成」をクリックします。

ルートテーブルの作成

名前には案内するサブネット名の後に-rtとつけるとわかりやすいです。今回は「test-rt」としました。
VPCは先ほど作成したVPCを選び、「ルートテーブルを作成」をクリックし、作成します。

作成

ルートの追加

作成後、ルートを確認すると以下のように10.0.0.0/16 localという設定がデフォルトでされています。これは、紐付けたVPC内(10.0.0.0/16の範囲)であれば、自由に通信できることを意味します。今回はインターネットに接続したいので、別途ルートを設定する必要があります。設定するには、「ルートを編集」をクリックします。

ルートの編集

クリックすると以下の画面になるので、「ルートを追加」をクリックします。

ルートを追加

ここでは、インターネットに向かう通信を設定します。
送信先はすべての IP アドレスを表す0.0.0.0/0を指定し、ターゲットには「インターネットゲートウェイ」を選択します。
先ほど作成したインターネットゲートウェイが表示されるので、それを選択してください。
最後に「変更を保存」をクリックします。

ルートの追加

これで「通信はインターネットゲートウェイに向かって進んでください」という道案内の設定ができました。

サブネットの関連付け

次はこのルートテーブルをどのサブネット内で有効にするかという設定を行います。「サブネットの関連付け」のタブを選択し、「サブネットの関連付けを編集」をクリックします。

サブネットの関連付けを編集

今回はVPC内には一つだけしかサブネットを作成していないので一つだけ表示されました。複数あればその分だけ表示されます。関連づけるサブネットのチェックボックスにチェックを入れて「関連付けを保存」をクリックします。

保存

これでネットーワーク関連の設定は完了です。

クラスター

次はVPCのサービスからECSのサービスに移動してクラスターを作成します。
AWSのコンソールから「ECS」と検索し、Elastic Container Serviceを選択しましょう。

ECSを選択

クラスター とは、複数のコンピュータ(サーバー)をグループ化して管理する仕組みです。
簡単に言うと 「コンテナをまとめて管理する入れ物」 です。
クラスターの中には、複数のタスク(Task)やサービス(Service)が所属します。

クラスターの作成

左メニューから「クラスター」をクリックし、右上の「クラスターの作成」をクリックします。

クラスターの作成

「クラスター名」にはわかりやすい名前をつけます。
今回「インフラストラクチャ」は「Fargate のみ」を選択します。

作成

AWS Fargate

AWS Fargate(ファーゲート)とは、サーバーの管理をAWSが代行してくれるサービスです。通常コンテナを動かすにはサーバー(EC2など)を用意して、OSやDocker環境を管理する必要があります。

Fargateを使うと 「サーバーの準備や管理はAWSに任せる」 ことができ、コンテナの実行に集中できます。

タグは以下のように「キー」にName、「値」に先ほど名付けたクラスター名を設定をし、「作成」をクリックします。作成には少し時間がかかるので、待ちましょう。

作成

これでクラスターの作成は完了です。

タスク定義

次はタスク定義を作成します。
タスク定義とはECSでコンテナを動かすための設計図のようなものです。「どのコンテナを使うか」「どれくらいのCPUやメモリを割り当てるか」「どのポートで通信するか」などをここで決めます。タスクはタスク定義をもとに実際に起動したコンテナのことを指します。

(例)
タスク定義 = 「カレーを作るレシピ」
・ 材料(コンテナのイメージ)
・ 分量(CPU・メモリ)
・ 調理方法(コマンドや環境変数)

タスク = 実際に作ったカレーの鍋
・ レシピに従って料理を作ると、いつも同じ味になる
・ タスク定義をもとに複数のタスクを起動できる

タスク定義の作成

左メニューの「タスク定義」をクリックし、「新しいタスク定義の作成」をクリックします。

タスク定義の作成

「タスク定義ファミリー」にはタスク定義名を入力します。今回は「test-task-definition」と入力しました。

タスク定義名

次はインフラストラクチャの要件を設定します。
今回は以下のように設定します。

インフラストラクチャ

今回は画面に表示されるか確認するだけなので、CPUとメモリは最低限のものにします。高性能なものを選択するほど料金が高くなります。

「タスクロール」はタスク内のアプリケーションが AWS リソースにアクセスするためのロールです。

(具体例)
・RailsアプリからS3にファイルを保存
SQSにメッセージを送信
DynamoDBにデータを書き込む

ここで指定したロールの権限をアプリが使えるようになります。
今回は外部サービスにアクセスしないので空で大丈夫です。

「タスク実行ロール」はタスクがコンテナイメージを取得したり、ログを書き込むためにECSが使うロールです。

(具体例)
ECRからDockerイメージをプルする権限
CloudWatch Logsにログを送信する権限

ECSがタスクを起動する際に必要です。「新しいロールの作成」を選んでおけばこれらの基本的な権限を付与してくれます。

コンテナの設定

次はコンテナの設定です。
名前にはわかりやすい名前をつけましょう。今回は「test-eginx」と入力しました。

イメージURIはECRにプッシュしたイメージのURIを入力します。
「ECRイメージを閲覧」をクリックすると選択することができます。

ECRイメージを閲覧

プライベートリポジトリは先ほど作成したものを選びます。するとイメージにプッシュしたものが表示されるので、「latest」をチェックし、「イメージダイジェストを選択」をクリックします。

ECRイメージの選択

あとはデフォルトのままで大丈夫です。

最後にタグをつけておきましょう。
「タグの追加」をクリックし、「キー」にName、「値」に「タスク定義ファミリー」でつけたtest-task-definitionを入力し、「作成」をクリックします。

タグの追加

これでタスク定義の完成です。

サービス

サービス とは、指定したタスク定義に基づいて、コンテナを継続的に動かし続ける機能です。レストランの店長のように、常にスタッフ(コンテナ)が適切な人数で働いているかを監視し、問題があれば新しいスタッフを配置してくれます。

サービスが主にやってくれることは以下の通りです。

常に指定した数のタスクを稼働させる

・(例)2つのタスクを常に動かしたい → サービスが2つ動いているか監視してくれる
・タスクが止まったら自動で再起動する

ロードバランサーと連携してアクセスを分散

・(例)ブラウザからアクセスがあったら、サービスがタスクに振り分けて応答させる
・ユーザーがどのタスクに当たるか気にしなくてOK

デプロイ(更新)を安全に行う

・新しいバージョンのタスクを追加 → 古いタスクと置き換えながら更新
・途中で止まることなく、サービス全体は稼働し続ける

サービスの作成

サービスはクラスターから作成できます。左メニューから「クラスター」をクリックし、先ほど作成したクラスターをクリックします。

クラスターをクリック

すると以下の画面になるので、サービスの「作成」をクリックします。

作成

クリックするとサービス作成画面に遷移します。

サービスの詳細

「タスク定義ファミリー」は先ほど作成したタスク定義を選択します。
「タスク定義のリビジョン」はタスク定義のバージョンを指定します。タスク定義はリビジョンといい、既存のタスク定義を編集することが出来ます。編集を保存すると新たなバージョンとして保存されます。今回は編集は行なっていないので、最新のバージョンは1となっています。サービス名はタスク定義ファミリーを選ぶと自動で入力されます。

詳細

環境

次は環境の設定です。

環境

「コンピューティングオプション」とはECSのタスク(コンテナ)を どのコンピューターで、どの方式で動かすかを決める設定です。
ECSではタスクを動かすために コンピューティング環境(サーバー) が必要ですが、その方法を選ぶのが「コンピューティングオプション」です。

サービス作成時に選べるコンピューティングオプションは2つあります。

キャパシティプロバイダー戦略(Capacity provider strategy)

・ タスクをどの「コンピューティング環境」に載せるかを決める
FARGATE / FARGATE_SPOT / EC2 の割合などを指定できる
・(例)
「通常はFARGATE、余裕があればFARGATE_SPOTを使う」
・「平日は軽自動車、週末は普通車、繁忙期は高級車を複数台」のような複雑な運用
・コスト最適化は可能だが、設定と管理が複雑

起動タイプ(Launch type)

・タスクを動かす方法そのもの
・主にFARGATEEC2を選びます
・(例)
FARGATE → AWS がサーバーを自動で用意
EC2 → 自分でEC2インスタンスを用意
・「軽自動車にする」「普通車にする」「高級車にする」のようにシンプルに1つを選択
・分かりやすく、管理が簡単なので初心者に推奨

今回は「起動タイプ」を選びます。

環境

ネットワーキング

次はネットワーキングの設定です。

ネットワーキング

VPC」は作成したVPCを選びます。するとそのVPC内にあるサブネットが自動で追加されます。
「セキュリティグループ」は「新しいセキュリティグループの作成」を選びます。
「セキュリティグループ名」にはわかりやすい名前をつけましょう。今回は「test-sg」とつけました。
「セキュリティグループのインバウンドルール」はタイプを「HTTP」、ソースはどこからでもアクセスできるよう「Anywhere」を選びます。

「パブリックIP」はオンにします。
パブリックIPはインターネット上からアクセスできる IP アドレスのことです。
ブラウザからアクセスしたい場合、この IP が必要になります。そのため、オフにしてしまうと自動で割り当てができないため、アクセスできなくなります。

ネットワーキング

その他の箇所は今回は触れなくて大丈夫なので、一番下にある「作成」をクリックします。

サービスの作成

するとサービスのデプロイが開始します。完了まで数分かかるので、待ちましょう。

デプロイのかいし

ブラウザでアクセス

デプロイが完了するとタスクが作成されます。「タスク」タブをクリックし、作成したタスクをクリックします。

タスクをクリック

「設定」タブのパブリックIPの右に表示されている「オープンアドレス」をクリックします。

パブリックIPアドレス

するとパブリックIPのアドレスでブラウザが開きます。ブラウザに「Hello World」が表示されていれば成功です。

Hello Worldの表示

まとめ

このようにECSを使用することで、作成したDockerイメージをAWS上で実行することが出来ました。それにはECSの知識だけでなく、Dockerイメージを管理するECR、アプリを動かすためのネットワーク空間であるVPCの知識が必要になります。

この記事を参考に、ぜひデプロイするまでの基本的な流れをマスターしましょう。

この記事のまとめ

  • ECSはAWS上でDockerイメージを実行できるサービスです。
  • DockerイメージはECRで管理します。
  • クラスター、タスク定義、サービスを作成する必要があります。