アーキテクチャー図
作成したリソース
| リソース種別 | リソース名 | 備考 |
|---|---|---|
| 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の作成
-
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-subnet-app-private1-a

my-workspace-subnet-app-public1-a

パブリックサブネット
インターネットに直接アクセスできるサブネット。
サーバーは、グローバル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向けのルートテーブルを作成。

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

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

これでVPCにインターネットゲートウェイをくっつけることができた。
ルートテーブルにインターネットゲートウェイをくっつける
これでpublic向けのルートテーブルにインターネットゲートウェイをくっつけることができた。
ルートテーブルをサブネットにくっつける
ECSクラスターの作成
my-app-cluster

作成に失敗しても、CloudFormationに行き、再度試行すると作成される。
タスク定義を作成
my-app-frontend
- タスク実行ロールは実際のタスクの作成やECRからイメージをpullしてくる際などの権限を与えるために利用する。今回使用する。
- タスクロールはコンテナの中からS3や他のAWSサービスにアクセスする必要がある時に必要な権限をIAMロールを通じて何かしらの権限を与えることができる。今回は不要。
nginxのイメージURIを以下で検索
https://gallery.ecr.aws/nginx/nginx
実際のイメージURIはこちら。
public.ecr.aws/nginx/nginx:stable-perl
他はデフォルトで良いので作成をクリック。
Fargateにアプリをデプロイする ( + セキュリティーグループの作成)
まだ、ECSのタスク向けのセキュリティーグループを作成していないので、こちらで一緒に作る。
my-app-frontend-sg

セキュリティグループの説明も必須のようなので入力したのちに作成。
先ほど作成したセキュリティーグループの確認。
ここから下はspring bootのアプリをデプロイしていく。
タスク定義の作成 my-app-api
イメージURIはまだECRにあげていないのでここではダミーのnginxのコンテナを入れておく。
github actionsで後ほどCICDを作成する際にタスク定義ファイルも更新をかける時に名前やイメージURIも書き換わるので、一旦はダミーで大丈夫。ポートマッピングなども後ほど上書きされるのでそのままにしておく。

作成をクリック。
ECRの作成
ECS サービスの作成 ( + セキュリティーグループの作成 my-app-api-sg)
my-app-api-sgも同時に作成。
続きはこちら






























