本リポジトリは、AWS Fargate 上でエンタープライズ向けの Web アプリケーションをホストするためのリファレンス実装です。Amazon ECS、AppConfig、DynamoDB、Direct Connect などのマネージドサービスを組み合わせ、マルチ AZ の可用性、ハイブリッド接続、運用性を高めたアーキテクチャをコード化しています。クラウド移行のベースライン、もしくは新規サービスの標準化された基盤として活用できます。
図は、VPC・サブネット構成、インターネット向けおよびオンプレミス向け接続、ECS/Fargate サービス、運用ノード、CI/CD パイプラインの関連性を示しています。
- Amazon ECS on AWS Fargate: コンテナ基盤をサーバレスで提供し、ホスト管理を不要化。タスク定義には AppConfig の設定値と DynamoDB アクセス権限が組み込まれています。
- Application Load Balancer: 公開エンドポイントを集約し、リクエストを Fargate サービスへルーティング。ヘルスチェックとリスナールールを通じて可用性を確保します。
- EC2 Step Server: バッチジョブやメンテナンス作業を実行する運用ノードとして配置されています。
- VPC / サブネット: パブリックおよびプライベートサブネットをマルチ AZ で展開し、NAT Gateway 経由でセキュアに外部アクセスを提供します。
- Direct Connect + DX Gateway: オンプレミスと AWS 間のハイブリッド接続を実現し、低遅延・高信頼の通信を提供します。
- Route 53 / Customer Gateway: ネームリゾリューションとルーティング制御を担います。
- Amazon DynamoDB: アプリケーションが参照する設定情報(アプリケーション名、言語、テーマカラー等)を格納します。
- AWS AppConfig: DynamoDB テーブル名などの動的パラメータを配信し、アプリケーション設定を安全に反映します。
- Amazon CloudWatch: メトリクス、ログ、アラームを集約し、運用監視を強化します。
- AWS CloudTrail: 操作ログを取得し、コンプライアンス要件への対応を支援します。
- IAM / Security Groups: 最小権限ポリシーとネットワーク制御により、セキュリティを強化します。
- AWS CodePipeline: ソース取得からビルド、ECS デプロイまでを自動化します。必要に応じてステージング環境および手動承認ステップを挿入できます。
- AWS CodeCommit: インフラ構成とアプリケーションコードを管理します。
- AWS CodeBuild: Docker イメージのビルドと ECR へのプッシュを実行します。
buildspec.yamlがビルド手順を定義します。 - Amazon ECR: ビルド済みコンテナイメージを保管し、ECS へ配信します。
- マルチ AZ / ハイブリッド設計: 高可用性とオンプレミス連携を両立。
- Infrastructure as Code: CloudFormation により、VPC からアプリケーションまでを一貫してプロビジョニング。
- 運用自動化: AppConfig と DynamoDB 連携、カスタムリソースによる初期データ投入、CodeBuild/CodePipeline の統合で運用負荷を軽減。
- セキュリティ統合: IAM、Security Group、CloudTrail、暗号化バケットポリシーなど、エンタープライズ向けの制御を実装。
ECS-Fargate-Web-App-Stack.yml: インフラ一式を構築する CloudFormation テンプレート。app.py: Flask で実装されたサンプルアプリケーション。AppConfig と DynamoDB を参照します。config_helper.py: AppConfig のフェッチとキャッシュを担うヘルパークラス。Dockerfile: アプリケーションコンテナのビルド手順。buildspec.yaml: CodeBuild 用のビルド定義。requirements.txt: アプリケーション依存ライブラリ。ECS-Fargate-Web-App-Stack.png: アーキテクチャ図。
- 前提準備: AWS CLI / CDK / SAM など任意のデプロイツール、Docker、AWS 認証情報を用意します。
- コンテナイメージのビルド:
buildspec.yamlを利用する CodeBuild プロジェクト、もしくはローカル Docker から Amazon ECR へプッシュします。 - インフラのデプロイ:
ECS-Fargate-Web-App-Stack.ymlを CloudFormation スタックとしてデプロイし、VPC・ECS クラスター・CI/CD パイプラインを構築します。 - アプリケーションの更新: CodeCommit へのプッシュをトリガーに CodePipeline が実行され、ECS サービスへ継続的に反映されます。
- Terraform や AWS CDK による IaC テンプレートの追加提供。
- 環境分割(Dev / Staging / Prod)とマルチテナント構成のベストプラクティス公開。
- AWS App Mesh やサービスメッシュ基盤の統合検討。
- OIDC / SSO 連携を含むアイデンティティ管理の強化。
