### プロジェクト概要
#### 目的、背景
- オンプレ既存システムの老朽化
- AWSの各種マネージドサービス利用による運用管理コストの低減
#### 規模感、チーム構成、担当した役割
- 規模感 : 2~3ヶ月
- チーム構成 : AWSチーム担当者は自分 1名、レビュア 1名
- 担当した役割 : AWSアーキテクチャ検討、見積もり、設計、構築、テスト
#### 使用技術や開発環境等
- CloudFront > ALB > EC2 Apache (AutoScaling) > EFSというアーキテクチャ
- 証明書管理は ACMを利用
- EC2への接続のために SSH over Session Managerを利用
- バックアップのために AWS Backup, メトリクス監視のために CloudWatchを利用
- これらの AWSリソースの開発環境構築、本番環境構築を IaC (terraform, userdata) で実施
### 取り組んだ課題
- 課題1
- CloudFrontや AutoScalingなどいくつかの AWSサービスに対する実績が部内になかった
- プロジェクト全体を通して対応できるよう、公式ドキュメントやハンズオンなどで予習しながらプロジェクトを進めた
- 課題2
- 開発環境で確認できたテスト結果を本番環境においても担保したかったため、可能な限り IaC (terraform, userdata) を利用して環境構築を行うようにしたかった
- terraformリソース数は 175個, userdata数は 5個という規模のシステムに対して IaCを適用したのは AWS主管部署にて初の試みだったが、スケジュールに遅延なく独力で対応することができた
- 課題3
- ドメイン管理は Route 53には移行しないお客様要件のため Route 53の Aliasレコードが使えず、Zone Apexの名前解決方法を検討する必要があった
- Zone Apexの名前解決は Global Accelerator向けの Aレコードで行い、Global Acceleratorのターゲットに ALBを指定、ALBの httpリダイレクト機能を利用することで解決した
- 課題4
- 開発期間中はセキュリティのため外部の不特定多数が Webへアクセスできないように制御したり、簡易な httpリダイレクトを設定したりしたかった
- CloudFront Functionsのスクリプトにてベーシック認証やリダイレクトを実装できるか検証し、解決した