1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ECSの構築 [ 備考録 ]

Last updated at Posted at 2025-05-25

アーキテクチャー図

ecs-github-actions-learning.png

作成したリソース

リソース種別 リソース名 備考
VPC my-workspace-vpc 仮想ネットワーク
サブネット my-workspace-subnet-app-private1-a
サブネット my-workspace-subnet-app-public1-a
ルートテーブル my-workspace-rtb-private1-a
ルートテーブル my-workspace-rtb-public1-a
インターネットゲーテウェイ my-workspace-igw
ECS クラスター my-app-cluster
ECS タスク定義 my-app-frontend
IAMロール ecsTaskExecutionRole タスク定義を作成時に勝手に作られたもの
セキュリティーグループ my-app-frontend-sg ECSのタスク向け
ECS タスク なし nginxのコンテナを起動 (すぐに停止する)
ECS タスク定義 my-app-api
ECR Repository my-app-api
ECS サービス my-app-api-service
セキュリティーグループ my-app-api-sg

VPC, Subnetの作成

以下で作成
image.png

  • 10.0.0.0/20 - IPアドレス数は4096個
  • 10.0.0.0/24 - IPアドレス数は256個
  • 10.0.1.0/24 - IPアドレス数は256個

備考: プライベートIPアドレスの範囲 (決まっている)

  • 10.0.0.0 - 10.255.255.255
  • 172.16.0.0 - 172.31.255.255
  • 192.168.0.0 - 192.168.255.255

VPC

my-workspace-vpc
image.png

サブネット

my-workspace-subnet-app-private1-a
image.png

my-workspace-subnet-app-public1-a
image.png

パブリックサブネット
インターネットに直接アクセスできるサブネット。
サーバーは、グローバルIPを持つことで外部からアクセスできる。

プライベートサブネット
インターネットに直セスアクセスできないサブネット。

この時点では名前をつけただけなので機能上は変わっていない。

ルートテーブル, インターネットゲートウェイ

ルートテーブルの作成

AWSのルートテーブルは、VPC(Virtual Private Cloud)内でネットワークトラフィックの経路を制御する仕組みです。

トラフィックの経路決定
ルートテーブルは、サブネット内のリソースから送信されるネットワークトラフィックがどこに向かうべきかを決定します。IPアドレスの宛先範囲(CIDR)と、そのトラフィックを転送すべき次のホップ(ターゲット)の組み合わせで構成されています。

サブネットレベルでの制御
各サブネットは必ずひとつのルートテーブルに関連付けられます。明示的に指定しない場合は、VPCのメインルートテーブルが自動的に使用されます。

例えば、以下のようなルート設定があるとします:

  • 10.0.0.0/20 → local(VPC内通信)
  • 0.0.0.0/0 → igw-xxxxx(インターネットゲートウェイ経由でインターネットへ)

この設定により、VPC内のリソースは宛先IPアドレスに応じて適切な経路でトラフィックが転送されます。
ルートテーブルを適切に設定することで、セキュリティを保ちながら必要な通信のみを許可し、ネットワーク構成を柔軟に管理できます。

my-workspace-rtb-private1-a
private1-a向けのルートテーブルを作成。
image.png

my-workspace-rtb-public1-a
public1-a向けのルートテーブルを作成。
image.png

インターネットゲートウェイの作成とVPCへアタッチ

my-workspace-igw
作成
image.png

アタッチ
image.png

image.png
これでVPCにインターネットゲートウェイをくっつけることができた。

ルートテーブルにインターネットゲートウェイをくっつける

image.png

image.png

image.png

image.png

これでpublic向けのルートテーブルにインターネットゲートウェイをくっつけることができた。

ルートテーブルをサブネットにくっつける

private
image.png

image.png

image.png

public
image.png

image.png

image.png

ECSクラスターの作成

my-app-cluster
image.png
作成に失敗しても、CloudFormationに行き、再度試行すると作成される。

タスク定義を作成

image.png

my-app-frontend

image.png

  • タスク実行ロールは実際のタスクの作成やECRからイメージをpullしてくる際などの権限を与えるために利用する。今回使用する。
  • タスクロールはコンテナの中からS3や他のAWSサービスにアクセスする必要がある時に必要な権限をIAMロールを通じて何かしらの権限を与えることができる。今回は不要。

image.png
新しいロールの作成としておけば勝手に作ってくれる。

nginxのイメージURIを以下で検索
https://gallery.ecr.aws/nginx/nginx

実際のイメージURIはこちら。
public.ecr.aws/nginx/nginx:stable-perl

image.png

他はデフォルトで良いので作成をクリック。

image.png

Fargateにアプリをデプロイする ( + セキュリティーグループの作成)

image.png

image.png

まだ、ECSのタスク向けのセキュリティーグループを作成していないので、こちらで一緒に作る。
my-app-frontend-sg
image.png

セキュリティグループの説明も必須のようなので入力したのちに作成。

パブリックIPのオープンアドレスをクリックして、確認。
image.png

デプロイ成功。
image.png

先ほど作成したセキュリティーグループの確認。

image.png

お金がかかるので、タスクを停止する。
image.png


ここから下はspring bootのアプリをデプロイしていく。

タスク定義の作成 my-app-api

my-app-api
image.png

イメージURIはまだECRにあげていないのでここではダミーのnginxのコンテナを入れておく。
github actionsで後ほどCICDを作成する際にタスク定義ファイルも更新をかける時に名前やイメージURIも書き換わるので、一旦はダミーで大丈夫。ポートマッピングなども後ほど上書きされるのでそのままにしておく。
image.png
作成をクリック。

ECRの作成

image.png

ECS サービスの作成 ( + セキュリティーグループの作成 my-app-api-sg)

image.png

image.png

my-app-api-sgも同時に作成。

image.png
作成。


続きはこちら

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?