0
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?

ハッカソン個人備忘録⑰:カジュアルな稼働確認で理解する!CloudFormationテンプレート解説【ECS on Fargate + RDS構成】

Posted at

はじめに

本記事では、AWS CloudFormationを使ってECS(Fargate)とRDS(MySQL)を組み合わせたシンプルなWebアプリケーション環境を自動的に構築するテンプレートの内容を紹介します。

個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。

開発・検証環境の立ち上げや、AWSにおけるモダンな構成の学習にも役立ちます。

書こうと思ったきっかけ

インフラのコード化(Infrastructure as Code)の学習を進める中で、CloudFormationにより自動化しています。

実際に手を動かしてテンプレートを作成することで、VPCやECS、RDSといった各リソースのつながりを深く理解することができたため、備忘録としてまとめようと思いました。

全体構成図

+--------------------------+
|      AWS Infrastructure |
+--------------------------+

     └─────────────────────────────────────────────┘
     │                VPC (10.0.0.0/16)            │
     │                                             │
     │  ┌─────────────┐   ┌─────────────┐          │
     │  │ Subnet A    │   │ Subnet C    │          │
     │  │ (Public AZ1)│   │ (Public AZ2)│          │
     │  └────┬────────┘   └────┬────────┘          │
     │       │                 │                   │
     │       ▼                 ▼                   │
     │   ECS Service (Fargate Tasks)               │
     │     - Dockerコンテナ                          │
     │     - HTTP:8000                             │
     │     - 環境変数にRDSの情報を添付                  │
     │                                             │
     │       ▼                 ▼                   │
     │       RDS Subnet Group (2AZに跨る)           │
     │         └→ RDS MySQL                        │
     │            - 非公開アクセス(PubliclyAccessible: false)│
     │            - ECSから接続可                    │
     └─────────────────────────────────────────────┘

            ↑
     Internet Gateway(パブリックサブネット経由)

主なリソースと役割

リソース名 説明
VPC 独自のネットワーク空間(10.0.0.0/16)
PublicSubnet1, PublicSubnet2 2つのAZにまたがるパブリックサブネット
InternetGateway, RouteTable ECSサービスを外部と通信させるためのルート
SecurityGroup, RDSSecurityGroup HTTP(80,8000)とMySQL(3306)用のアクセス制御
MyRDS パスワード付きMySQL RDS(パブリックアクセスなし)
DBSubnetGroup RDSに必要な複数AZ対応のサブネットグループ
ECSCluster Fargateタスクの実行先クラスター
ECSTaskDefinition 環境変数にRDS接続情報を含むDocker定義
ECSService タスクの実行と自動再起動(Fargate)

補足・改善ポイント

セキュリティ強化

  • MYSQL_PASSWORD は Secrets Manager などから取得する設計が推奨です。
  • RDSのポート(3306)は開発中以外では 0.0.0.0/0 にしないよう注意。

スケーリングを考慮

  • DesiredCount: 1 のままでは1インスタンスのみ。ALBを導入すれば将来的なオートスケーリングにも対応できます。

公開アクセスの調整

  • AssignPublicIp: ENABLED は検証用としてはOK。本番ではALB経由での非公開構成が推奨。

今後追加できる構成例

追加リソース 説明
ALB (Application Load Balancer) ECSの前段に配置。HTTPSやスケーリング対応が可能に
Secrets Manager DBパスワードやAPIキーを安全に管理・参照
CloudWatch Logs ECSやアプリケーションのログ収集・監視
EFS 状態を持つアプリケーションに便利な共有ストレージ
Private Subnet RDSやバックエンドアプリを非公開サブネットに配置

まとめ

このテンプレートは、シンプルながら拡張性のあるベース構成となっており、検証・開発環境として最適です。

本番環境へ発展させる際は、セキュリティやスケーラビリティへの配慮を加えることで、安全かつ堅牢なインフラを構築することができます。

CloudFormationを活用することで、AWSインフラの構築をスピーディかつ再現性のあるものにできるため、学習やチーム開発にも非常におすすめです!!

0
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
0
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?