標準的なAWSリソースの説明をいたします。
# AWSにおけるWebアプリの標準的なデプロイ構成リソースまとめ
以下は、**Kubernetes(EKS)ベースでWebアプリケーションをAWSにデプロイ**する際の、主要なAWSリソースの役割と関連についての一覧です。
—
## ✅ 基盤インフラ関連リソース
### ● VPC(Virtual Private Cloud)
AWS上に独自のネットワーク空間を構成するためのリソース。
– Public / Private サブネットの分離
– インターネットゲートウェイ (IGW)、NAT Gateway の設定
– ルートテーブル・セキュリティ設定の管理
– **VPCエンドポイント**を使えば、S3などのサービスへプライベートアクセスも可能
—
### ● Security Group
仮想ファイアウォールとして、インスタンスやALBへの**インバウンド/アウトバウンド通信の制限**を管理。
– EKSノード、RDS、ALBそれぞれに個別設定
– IPアドレス・ポート範囲などで柔軟に制御可能
—
### ● IAM Role / IAM Policy
各サービスに対する**アクセス権限(認可)を制御**するリソース群。
– EKSクラスターロール/ノードロール
– GitHub Actionsなど外部CI/CDツール用にOIDC連携したIAMロール
– S3・ECR・RDSなど他サービスにアクセスする権限の付与もここで管理
—
## 🚀 アプリケーション実行基盤
### ● EKS(Elastic Kubernetes Service)
KubernetesクラスタをAWSでマネージド運用するサービス。
– クラスタ管理用のリソース(Control PlaneはAWS側が管理)
– **ノードグループ(EC2 or Fargate)**を設定してPodを実行
– `kubectl` 経由でデプロイ・スケーリング・更新を制御
—
### ● ECR(Elastic Container Registry)
Dockerコンテナイメージを保存・配信するための**プライベートレジストリ**。
– GitHub ActionsやCIツールからpush
– EKSクラスタからpullして実行可能
—
### ● ingress + ALB(Application Load Balancer)
KubernetesのIngressリソースで**ルーティングルール(パス・ホスト)**を記述し、ALBと連携して外部からのアクセスを制御。
– `ingress-nginx` や `aws-load-balancer-controller` を使用
– ACMのSSL証明書と連携してHTTPS対応
—
## 🧳 アプリ・データ管理
### ● S3(Simple Storage Service)
静的ファイル(画像・JS・PDFなど)やログなどの**オブジェクトストレージ**。
– VPCエンドポイントを通じてプライベートアクセス可能
– CloudFrontと連携して高速配信も可能
—
### ● RDS(Relational Database Service)
PostgreSQL、MySQLなどの**マネージドリレーショナルDB**。
– サブネットグループ・セキュリティグループでアクセスを制限
– バックアップ・スナップショットなども自動管理
—
## 🔒 セキュリティ・証明書関連
### ● ACM(AWS Certificate Manager)
HTTPS通信のための**SSL/TLS証明書の管理**。
– 自動で証明書を発行し、ALBにアタッチしてHTTPS対応
– Route 53と組み合わせることで自動認証も可能
—
## 🌐 ネーム解決
### ● Route 53
ドメインのDNSレコードを管理する**マネージドDNSサービス**。
– ALBのDNS名を自分のドメインにCNAME/Aレコードで紐付け
– ACMの証明書検証に必要なレコードもここで設定
—
## 🔄 補足:CI/CDとの連携
### ● GitHub連携用のIAM Role
GitHub Actions から AWSリソース(ECR, EKS など)へアクセスするための**OIDCベースのIAMロール**。
– `aws-actions/configure-aws-credentials` などで使用
– `sts:AssumeRoleWithWebIdentity` を許可する必要あり
—