1. はじめに
背景
今回実務で即戦力となるような、スケーラビリティとセキュリティを両立させたAWS構成を実践で設計・構築しました!
その際の設計思想や各サービスの選定理由について、備忘録を兼ねてまとめていきたいと思います。
記事の対象読者
- AWSの各サービスをどのように組み合わせてシステムを構築するか悩んでいる方
- セキュアなネットワーク設計(パブリック/プライベートサブネットの分離など)を学びたい方
- 実運用を意識したインフラ構成に興味がある方
2. 全体構成図
今回の構成では、フロントエンドに Amplify と CloudFront + S3 を採用し、バックエンドには ECS Fargate を中心としたコンテナ基盤を構築しています。また、インフラ管理には Terraform を使用し、IaC化を徹底しています。
3. アーキテクチャの設計ポイント
① ネットワーク設計とセキュリティ
- サブネットの分離: ECSタスクやRDSなどのリソースは、すべてプライベートサブネットに配置し、インターネットからの直接的な接触を遮断しています。
- WAFの導入: パブリックな入り口にはAWS WAFを配置し、アプリケーション層での防御を固めています。
- Session Managerによる運用: 踏み台サーバへのSSH接続(ポート22)を解放せず、IAM権限を利用したセキュアなアクセス経路を確保しました。
② フロントエンドとコンテンツ配信
- 静的コンテンツの最適化: 頻繁に更新されるフロントエンドはAmplify、画像などの静的コンテンツはS3+CloudFrontと役割を分けることで、効率的な配信を目指しています。
- SSL/TLS証明書: ACM(AWS Certificate Manager)を活用し、Route 53と連携させることで証明書の管理と自動更新を行っています。
③ 疎結合な非同期処理
- SQSとSESの連携: メール配信などの重い処理や、即時レスポンスが不要な処理はSQSにキューイングし、SESで配信する形をとっています。これにより、アプリケーションの応答性を高め、障害の切り分けも容易にしています。
4. SSO(シングルサインオン)と認証管理
運用面においては、AWS IAM Identity Center を活用したSSO環境の構築を重視しています。
個別のIAMユーザーを作成せず、既存のIDプロバイダーと連携させることで、メンバーの入退社に伴う権限管理の煩雑さを解消し、最小権限の原則(PoLP)を徹底させています。
5. 構築を通じて得られた知見
- ECSのオートスケーリング: 実際のトラフィックを想定したしきい値設定の難しさと、その調整過程について。
- Secrets Managerの活用: 環境変数やDBの認証情報をハードコードせず、安全に注入するためのベストプラクティスを実践しました。
6. まとめ
今回は、実稼働を強く意識したAWSのフルスタックな構成をご紹介しました!
インフラ構成に絶対的な正解はないと思いますが、セキュリティ、コスト、可用性のバランスを考慮しながら、継続的に改善を続けることが重要だと感じています。
これからも実践と積極的なアウトプットを通して、インフラ領域に対しての感性を磨いていく所存です![]()
