💨

Next.js(SSR)アプリをCI/CDでECSへデプロイして独自ドメインでCloudFrontを立てるサンプル

2025/04/12に公開

こんにちは、今回はNext.jsのアプリをAWS環境でCI/CDでECSへデプロイして独自ドメインでCloudFrontを立てるサンプルを作ってみたので紹介します。
モチベーションとしては、以下です。

  • AWSを久々に触ってみたかった
  • WebアプリをAWS(ECS)にデプロイするときに必要なこと/ものを復習しておきたかった
  • 作り込んだサンプルを一つ用意しておきたい
  • ひとまず動くところまで作りたい

コード

https://github.com/dl10yr/my-nextjs-template/tree/main/terraform

https://github.com/dl10yr/my-nextjs-template?tab=readme-ov-file#terraformによるawsリソース構築

構成図

AWS Architecture

この構成では、以下のAWSサービスを利用しています:

  • VPC: アプリのネットワーク基盤
  • ECS (Fargate): コンテナ化されたNext.jsアプリケーションを実行
  • ECR: Dockerイメージのリポジトリ
  • ALB: HTTPトラフィックのロードバランシング
  • CloudFront: CDN
  • Route53: DNS
  • ACM: SSL/TLS証明書の管理
  • SSM Parameter Store: 環境変数や機密情報の管理
  • CodeBuild/CodePipeline: CI/CD
  • NATゲートウェイ: プライベートサブネットのECSからのインターネット接続

ハマった・今後改善したい

prisma使えない

https://zenn.dev/hirohokke/scraps/3d3c44b8d47c49
https://qiita.com/mstk_s/items/de3ce50eb7ba6fd02a1c

ひとまず、以下で動いた。

FROM node:20-slim

# 必要なライブラリをインストール
RUN apt-get update -y && apt-get upgrade openssl -y
...

環境変数の渡し方

なんか汚い

IAMのpolicy修正

resourceを絞りたい

Discussion