概要
近年のWebアプリに必要そうなインフラをCDKを用いて構築
リポジトリ
https://github.com/salt0000/portfolio/tree/main/infra
※これからもアップデート予定
環境
- Docker
- CDK(2.75.1)
詳細
全てCDKで構築しているわけではなく、一部マネコンを使っている
マネコンでの作業
- ドメイン取得
- ACMを使ってSSL/TSL証明書を取得
- GitHubアカウントの認証連携
- ParameterStoreでアプリの環境変数などを設定
- EC2のPemファイル作成
CDKで行っている事
- Route53
- ALBのレコード追加
- CloudFrontのレコード追加
- CodePipeline
- CodeStarを使ってGitHubとの連携
- CodeBuild
- Clientアプリのビルドとデプロイ
- APIのDocker BuildなどECSにデプロイするための準備
- CodePipelineのデプロイ
- ECSのサービスとタスクを更新
- ECS
- クラスター、タスク定義書、サービスの作成
- VPC
- 自動でパブリックサブネットが二つ作成されるようにしている(ALBを作成する都合上二つ必要)
- ALB
- CodePipelineでCI/CDするために必要
- EC2に新しいコンテナをデプロイするときにホストのポートが衝突してしまう
- それを防ぐためにALBの動的ポートマッピングを使っている
- ホスト側のランダムなポートとコンテナのポートを繋げて、ALBのTGでホストのポートを設定、更新する事でポートが衝突しない
- S3・CloudFront
- S3へのアクセスはCloudFrontに制限している
感想
僕が作ったようなCDKのサンプルってないなーと思って作成しました。
コードに直接AWSのパラメータを埋め込むからそれを公開はしな方がいいからサンプルリポジトリが少ないのかと、作ってる途中に思いました。
僕の場合は、ARNとか一部情報を伏せてGitHubにPushしています。(ローカルと差異があって、めっちゃやりづらい。。。)
かなり勢いで作成したので、たくさんメンテナンスが必要そう。。。
これからも随時更新していこうと思っています。