Chapter04 コンテナを構築する(基礎編)
ハンズオンのサンプルコード
▼ハンズオンの手順
ネットワークの構築
CloudFormation...スタックでVPC、サブネット、セキュリティグループ、インターネットゲートウェイ、ルートテーブルを構築
アプリケーションの構築
Cloud9
環境を起動し、適切なセキュリティグループを割り当て
frontend/backendのリポジトリをclone、必要なライブラリをインストール
サンプルアプリケーションの構成
frontend
TypeScript
Blitx.jsでSSR
O/RマッパとしてPrismaを利用
backend
Golang
echoフレームワーク
コンテナレジストリ構築
ECR...コンテナ用リポジトリ作成(frontend/backendそれぞれ作成)
VPCエンドポイント
ECRアクセス用に作成
インタフェース型
com.amazonaws.ap-northeast-1.ecr.api (ECR API呼び出し用)
com.amazonaws.ap-northeast-1.ecr.dkr (Dockerクライアントコマンド呼び出し用)
ゲートウェイ型
com.amazonaws.ap-northeast-1.s3 (Dockerイメージの取得)
各エンドポイントにはVPC、サブネット、セキュリティグループを設定
Cloud9
ECRログインのためIAMポリシーとIAMロールを作成し、Cloud9に作成したIAMロールをアタッチ
dockerイメージを作成、コンテナイメージへタグ付け
ECRに登録するには決められた形式でタグ登録する必要がある
オーケストレータの構築
1. CloudWatchのインタフェース型VPCエンドポイント作成
2. フロントアプリからのリクエスト取得用ALB作成
Blue/Greenそれぞれターゲットグループとリスナー作成
Blue/Greenデプロイ用IAMロール作成
3. ECSのタスク定義、クラスターとサービスの作成
タスク定義
frontend/backendそれぞれ作成
起動タイプはFargate
コンテナを追加
クラスター作成
サービス作成
タスク定義、クラスター、デプロイ設定
VPC、サブネット、セキュリティグループも設定
ロードバランサー設定
ターゲットグループ設定
ロードバランサのターゲットグループ設定
ECSタスクのプライベートIPをコピー
ターゲットグループへコピーしたIPアドレスを入力→ステータスが「healty」になればOK
CodeDeployの設定
「アプリケーション」にECSから作成されたアプリケーションを選択できる
4. ECSがECRからコンテナを取得してFargateにデプロイ
データベース構築
Auroraインスタンス構築
サブネットグループ設定
サブネットをdbクラスター側から識別するため
データベース認証は「パスワード認証」
インスタンス作成直後に出てくる「接続の詳細を表示」から、パスワードをメモ(のちの「Cloud 9からDBに接続」で利用)
「削除保護の有効化」で操作ミスによる削除を防止
Cloud9からDBに接続し、ユーザ、テーブル、データ作成
Secret Manager
アプリケーションからデータベースに接続するための認証情報を設定
Secrets Manager用のIAMポリシーを作成し、「ecsTaskExecutionRole」にポリシーをアタッチ
Secrets ManagerへのVPCエンドポイント追加
バックエンドアプリの認証情報変更
ECSタスク定義→コンテナ定義でDB認証情報を設定
設定にはSecret Managerに追加したシークレットのARNが必要
タスク定義で新しいリビジョンを作成→「アクション」から「サービスの更新」を選択
CodeDeployのデプロイのステータスで「トラフィックの再ルーティング」を選択