- はじめに
- キーワード解説
- cdk-pipelines との比較
- ファイル構成と役割
- 使用するAWSサービス
- 前提条件
- 作業順序
- 【重要】⓪ 自分のIPアドレスを確認する
- ① キーペアの作成
- ② プロジェクトのセットアップ
- ③ GitHub との接続を作成する(CodeConnections)
- ④ cdk.json の設定
- ⑤ コードを GitHub にプッシュする(重要!)
- ⑥ パイプラインスタックのデプロイ(初回のみ)
- ⑦ パイプラインの実行状況を確認する
- ⑧ アプリへアクセスする
- ⑨ CI/CD を体験する(アプリ変更を push で自動反映)
- ⑩ リソース削除
- CDK Pipelines + CodeDeploy のポイント解説
- トラブルシューティング
- まとめ
はじめに
「アプリのコードを push するだけで EC2 の Tomcat に自動デプロイされる仕組みを作りたい」——これを実現するのが CDK Pipelines + CodeDeploy の組み合わせです。
この記事では、CDK Pipelines ハンズオンで体験した インフラの CI/CD をさらに発展させ、Spring Boot(Java)アプリ(WAR ファイル)の自動デプロイまで含めた完全な CI/CD パイプラインを構築します。GitHub に push するだけで Maven ビルドが走り、CodeDeploy が EC2/Tomcat に WAR をホットデプロイします。
GitHub リポジトリ
↓ push(自動トリガー)
CodePipeline (my-cdk4-pipeline)
├── Source: GitHub (CodeConnections 経由)
├── Build(Synth): CodeBuild — cdk synth
├── Mutate: パイプライン自己更新(セルフミューテーション)
├── InfraDeploy: CloudFormation — VPC / EC2 / RDS / ALB / CodeDeploy 設定
└── BuildAndDeployApp: ← post step
CodeBuild: mvn package → webapp.war 生成
CodeDeploy: EC2/Tomcat に WAR をホットデプロイ
↓
[ALB: my-cdk4-alb]
↓
[EC2: my-cdk4-ap-instance] ← Tomcat + Spring Boot WAR
↓
[RDS: my-cdk4-rds-mysql] ← MySQL 8.0このハンズオンで体験できること:
git pushするだけで Maven ビルド → CodeDeploy → WAR ホットデプロイが自動実行される- インフラ(CloudFormation)とアプリ(CodeDeploy)の両方が push で自動更新される
- HTML を変更して push すると、数分でブラウザの表示が変わることを確認できる
この記事は CDK Pipelines ハンズオン(cdk-pipelines) の発展記事です。
CDK Pipelines の基本(セルフミューテーション・Stage・CodeConnections)を体験済みの方向けです。コード詳細は GitHub を参照してください。
-->
キーワード解説
| 用語 | 意味 |
|---|---|
| CodeDeploy | EC2 への Webアプリ(WAR/ZIP)のホットデプロイを管理するサービス。Tomcat を再起動せずに WAR を差し替えられる |
| appspec.yml | CodeDeploy のデプロイ手順を定義するファイル。ファイル配置先と各フェーズで実行するスクリプト(ライフサイクルフック)を記述する |
| デプロイバンドル | appspec.yml + WAR ファイル + スクリプトを ZIP にまとめたもの。S3 に置いて CodeDeploy に渡す |
| ライフサイクルフック | CodeDeploy デプロイの各フェーズ(ApplicationStop・BeforeInstall・AfterInstall 等)で実行するシェルスクリプト |
| env_from_cfn_outputs | CDK Pipelines で CloudFormation スタックの出力値(CfnOutput)をパイプラインの後続ステップへ環境変数として渡す仕組み |
| post step | CDK Pipelines でステージ(Stage)のデプロイ完了後に続けて実行するステップ。ここでは InfraDeploy 後にアプリをデプロイする |
cdk-pipelines との比較
| 比較項目 | cdk-pipelines | cdk-webapp-pipeline |
|---|---|---|
| 何を自動デプロイするか | インフラのみ(Tomcat は空で起動) | インフラ + Spring Boot WAR |
| アプリコード | なし | app/ 配下に Java/Spring Boot |
| ビルドステップ | cdk synth のみ | cdk synth + mvn package |
| デプロイ手段 | CloudFormation のみ | CloudFormation + CodeDeploy |
| push したとき | インフラが更新される | インフラ + アプリも更新される |
| 主な学習テーマ | CDK Pipelines の基本 | CodeDeploy / WAR デプロイ / env_from_cfn_outputs |
ファイル構成と役割
cdk-webapp-pipeline/
├── app.py ← CDK アプリ エントリポイント
├── cdk.json ← CDK 設定・Context 変数
├── appspec.yml ← CodeDeploy: WAR 配置手順とライフサイクルフック
├── scripts/
│ ├── stop_tomcat.sh ← CodeDeploy: ApplicationStop フック
│ ├── cleanup.sh ← CodeDeploy: BeforeInstall フック
│ └── start_tomcat.sh ← CodeDeploy: AfterInstall フック
├── app/ ← Spring Boot Webアプリ(Java)
│ ├── pom.xml
│ └── src/main/... ← ItemController / Item / ItemRepository / templates/
├── pipeline/
│ └── pipeline_stack.py ← CodePipeline + post step 定義
├── stages/
│ └── webapp_stage.py ← Stage(WebappStack を内包)
├── stacks/
│ └── webapp_stack.py ← インフラスタック(CfnOutput で値を公開)
└── components/
└── webapp_construct.py ← カスタム L3 Construct(CodeDeploy 設定含む)| ファイル | 役割 |
|---|---|
appspec.yml | CodeDeploy に「どこに WAR を置くか・何を実行するか」を指示する |
scripts/*.sh | Tomcat の停止・クリーンアップ・起動をフェーズごとに実行する |
pipeline_stack.py | InfraDeploy の post に BuildAndDeployApp ステップを追加。env_from_cfn_outputs でスタック出力を受け取る |
webapp_stack.py | CodeDeploy の設定(アプリ名・デプロイグループ名)を CfnOutput で公開する |
詳細なコードは GitHub を参照してください。
使用するAWSサービス
| サービス | 役割 | 料金 |
|---|---|---|
| VPC | カスタムネットワーク空間 | 無料 |
| EC2(t2.micro) | APサーバ(Tomcat + Spring Boot) | 月750時間まで無料枠あり |
| RDS MySQL(db.t3.micro) | マネージドDBサーバ | 月750時間まで無料枠あり |
| ALB | ロードバランサー | 約$0.008/時間 + LCU料金(無料枠なし) |
| CodePipeline | CI/CD パイプライン管理 | 月1パイプラインまで無料枠あり |
| CodeBuild | cdk synth・Maven ビルドを実行するビルド環境 | 月100分まで無料枠あり |
| CodeDeploy | EC2 への WAR ホットデプロイ | EC2 へのデプロイは無料 |
| S3 | パイプラインのアーティファクト・デプロイバンドル置き場 | 無料枠あり |
| SSM Parameter Store | DBパスワードの安全な保管 | スタンダード層は無料 |
| IAM | 各サービスの権限 | 無料 |
注意: ALBは無料枠がありません。ハンズオン後は必ずリソースを削除してください。
前提条件
| ツール | 確認コマンド |
|---|---|
| AWS CLI v2 | aws --version |
| Java 17 | java -version |
| Maven | mvn -version |
| Python 3.9 以上 | python --version |
| Node.js 18 以上 | node --version |
| CDK CLI | cdk --version |
| Git | git --version |
AWS 認証確認:
aws sts get-caller-identityCDK Bootstrap 確認(CDKToolkit スタックが存在すれば実施済み):
aws cloudformation describe-stacks ^
--stack-name CDKToolkit ^
--query "Stacks[0].StackStatus" ^
--output text ^
--region ap-northeast-1GitHub アカウントが必要です。
aws-learning-projectsリポジトリに push できる状態にしておいてください。
作業順序
⓪ 自分のIPアドレスを確認する
↓
① キーペアを作成する(AWS CLI で実施)
↓
② プロジェクトのセットアップ(Python 仮想環境)
↓
③ GitHub との接続を作成する(CodeConnections)
↓
④ cdk.json を設定する
↓
⑤ コードを全て GitHub にプッシュする(重要!)
↓
⑥ パイプラインスタックをデプロイする(初回のみ手動)
↓
⑦ パイプラインの実行状況を確認する
↓
⑧ アプリへアクセスする(/webapp/ 必須)
↓
⑨ CI/CD を体験する(アプリ変更を push で自動反映)
↓
⑩ リソース削除【重要】⓪ 自分のIPアドレスを確認する
curl https://checkip.amazonaws.com控えておく情報: 自分のIPアドレス(例: 203.0.113.1)
① キーペアの作成
aws ec2 create-key-pair ^
--key-name my-cdk4-key ^
--query KeyMaterial ^
--output text ^
--region ap-northeast-1 > %USERPROFILE%\.ssh\my-cdk4-key.pem
%USERPROFILE%\.ssh\が存在しない場合は先にmkdir %USERPROFILE%\.sshを実行してください。
② プロジェクトのセットアップ
cd C:\my-aws\aws-learning-projects\cdk-webapp-pipeline
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txtプロンプトの先頭に (.venv) が表示されれば仮想環境が有効になっています。
重要: CDK コマンド(synth / deploy / destroy)はすべてこの仮想環境が有効な状態で実行する必要があります。
ターミナルを開き直した際は必ず最初に以下を実行してください。cd C:\my-aws\aws-learning-projects\cdk-webapp-pipeline .venv\Scripts\activate
③ GitHub との接続を作成する(CodeConnections)
cdk-pipelines を実施済みの場合: 同じリポジトリ
aws-learning-projectsを扱うため、
既存の接続(my-github-connection)をそのまま再利用できます。
③ はスキップして、ARN の確認(③-4)から始めてください。
CodePipeline が GitHub リポジトリを監視するために、GitHub との接続(CodeConnections) を作成します。
重要: AWS コンソールと GitHub の操作は同じブラウザで行ってください。
別ブラウザで操作すると、AWS にリダイレクトされた際にデフォルトリージョン(バージニア北部等)でログインされる場合があります。
接続を作成する
- AWS コンソール検索(
Alt+S)でCodePipelineと入力 → CodePipeline を開く - 左サイドバー → 「設定」 → 「接続」
- リージョンが 東京(ap-northeast-1) になっていることを確認する
- 「接続を作成」をクリック
- プロバイダー: GitHub を選択
- 接続名:
my-github-connection(任意) - 「GitHub に接続する」をクリック
GitHub App をインストールする
クリック後、GitHub の OAuth 認証画面が開きます。
- 「Authorize」をクリック → AWS コンソールの「GitHub 接続設定」画面に自動で戻る
- 「新しいアプリをインストールする」をクリック → GitHub の「Install & Authorize」画面が開く
- 「Only select repositories」 を選択 →
aws-learning-projectsを追加 - 「Install & Authorize」をクリック(メール認証コードが求められる場合は入力)
- AWS コンソールに自動でリダイレクトされる → 「接続」ボタンをクリック
接続 ARN を確認する
接続一覧から接続の ARN をコピーします。
arn:aws:codeconnections:ap-northeast-1:123456789012:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx重要: ステータスが 「利用可能」 になっていることを確認してから次に進んでください。
控えておく情報: 接続 ARN(arn:aws:codeconnections:...)
④ cdk.json の設定
cdk.json の context セクションを自分の環境に合わせて編集します。
{
"context": {
"employee_id": "my",
"my_ip": "203.0.113.1/32",
"db_password": "Handson1234!",
"key_name": "my-cdk4-key",
"tomcat_version": "10.1.28",
"github_owner": "your-github-username",
"github_repo": "aws-learning-projects",
"github_branch": "main",
"connection_arn": "arn:aws:codeconnections:ap-northeast-1:..."
}
}| 設定項目 | 値 | 説明 |
|---|---|---|
employee_id | my | リソース名のプレフィックス(my-cdk4-xxx という名前になる) |
my_ip | ⓪で確認したIP /32 | EC2へのSSHを許可するIP |
key_name | my-cdk4-key | ①で作成したキーペア名 |
github_owner | GitHub ユーザー名 | リポジトリのオーナー名(または Org 名) |
github_repo | aws-learning-projects | リポジトリ名 |
github_branch | main | 監視するブランチ名 |
connection_arn | ③で確認した ARN | CodeConnections の接続 ARN |
cdk-pipelines(前回)と同時にデプロイしてもリソース名が競合しません。前回は
my-cdk3-xxx、今回はmy-cdk4-xxxというプレフィックスになります。
⑤ コードを GitHub にプッシュする(重要!)
cdk-pipelines との重要な違い: このハンズオンでは
cdk.jsonだけでなくプロジェクト全体を push する必要があります。CDK Pipelines は GitHub から取得したコードで
cdk synthを実行し、Maven ビルドも行います。
Java ソース(app/)・appspec.yml・scripts/がリポジトリに存在しないと、パイプラインのBuildAndDeployAppステップが失敗します。
cdk deployの前に必ずコード全体を push してください。
cd C:\my-aws\aws-learning-projects
git add cdk-webapp-pipeline/
git commit -m "feat: cdk-webapp-pipeline ハンズオンを追加"
git push origin main⑥ パイプラインスタックのデプロイ(初回のみ)
CDK Pipelines ではパイプライン自体を最初に1回だけ手動でデプロイします。以降はパイプラインが自動的に動作します。
cd C:\my-aws\aws-learning-projects\cdk-webapp-pipeline
.venv\Scripts\activate
cdk synth
cdk deploy my-WebappPipelineStack「Do you wish to deploy these changes?」に y を入力します。
所要時間: パイプラインスタック自体のデプロイは 3〜5 分。その後パイプラインが自動起動します。
デプロイ完了後、CodePipeline が自動起動します:
| ステージ | 内容 | 所要時間 |
|---|---|---|
| Source | GitHub から最新コードを取得 | 〜1分 |
| Build (Synth) | cdk synth でテンプレート生成 | 〜3分 |
| UpdatePipeline | パイプライン自己更新(セルフミューテーション) | 〜2分 |
| Deploy > InfraDeploy | CloudFormation で VPC/EC2/RDS/ALB/CodeDeploy 設定を構築 | 〜15分 |
| Deploy > BuildAndDeployApp | Maven ビルド → S3 → CodeDeploy で WAR デプロイ | 〜10分 |
RDS の起動に時間がかかるため、InfraDeploy は 10〜20 分かかることがあります。
⑦ パイプラインの実行状況を確認する
- AWS コンソール → CodePipeline を開く
my-cdk4-pipelineを選択- 各ステージが 「成功」 になるまで待つ
CloudFormation スタックの命名規則
CDK Pipelines でステージをデプロイすると、CloudFormation スタック名は以下の形式になります:
{StageName}-{StackName}| 要素 | このハンズオンでの値 |
|---|---|
| StageName | my-Deploy(pipeline_stack.py でステージを追加した際の名前) |
| StackName | WebappStack(webapp_stage.py の WebappStack(self, "WebappStack") のID) |
| 結果 | my-Deploy-WebappStack |
my-WebappPipelineStack(パイプライン)とmy-Deploy-WebappStack(インフラ)の 2つが別スタックとして CloudFormation に表示されます。
CloudFormation Outputs の確認
InfraDeploy ステージが完了したら、インフラスタックの Outputs を確認します。
aws cloudformation describe-stacks ^
--stack-name my-Deploy-WebappStack ^
--region ap-northeast-1 ^
--query "Stacks[0].Outputs"控えておく情報: ALBEndpoint、EC2PublicIP、RDSEndpoint
⑧ アプリへアクセスする
BuildAndDeployApp ステージが完了(全ステージが成功)したら、ALB 経由でアプリにアクセスします。
ALB の DNS 名を確認する
Outputs の ALBEndpoint をブラウザで開きます。
重要: URL のパスに
/webapp/が必要です。
http://<ALBEndpoint>/webapp/
http://<ALBEndpoint>/(ルートパス)では Tomcat のデフォルト画面が表示されます。
WAR がwebapp.warとしてデプロイされるため、アプリは/webapp/以下に配置されます。
または CLI で ALBEndpoint を確認:
aws cloudformation describe-stacks ^
--stack-name my-Deploy-WebappStack ^
--region ap-northeast-1 ^
--query "Stacks[0].Outputs[?OutputKey=='ALBEndpoint'].OutputValue" ^
--output textアプリの動作確認
以下が表示されれば正常です:
- 「Spring Boot + RDS Item Manager」というタイトルが表示される
- アイテムの追加・削除ができる
- ブラウザをリロードしてもデータが保持される(RDS への永続化が成功)
EC2 に SSH 接続する(オプション)
ssh -i %USERPROFILE%\.ssh\my-cdk4-key.pem ec2-user@(EC2PublicIP)EC2 接続後にログ確認などを行う場合(以下は EC2 上での操作):
sudo systemctl status codedeploy-agent # CodeDeploy エージェントの状態確認
sudo cat /opt/tomcat/logs/catalina.out # Tomcat のログ確認
sudo ls -la /opt/tomcat/webapps/ # デプロイされた WAR を確認EC2 から RDS への接続確認(オプション)
EC2 に SSH 接続後:
sudo dnf install -y mariadb105
DB_PASSWORD=$(aws ssm get-parameter \
--name /my/cdk4/db-password \
--query Parameter.Value \
--output text \
--region ap-northeast-1)
mysql -h <RDSEndpoint> -u admin -p${DB_PASSWORD} sampledb
mysql> SHOW TABLES;
mysql> exit⑨ CI/CD を体験する(アプリ変更を push で自動反映)
CDK Pipelines + CodeDeploy の醍醐味は「アプリのコードを push するだけで EC2 の Tomcat に自動デプロイされる」ことです。
アプリの HTML を変更する
app/src/main/resources/templates/index.html を開き、以下の行を変更します:
変更前:
<h1>Spring Boot + RDS Item Manager</h1>変更後:
<h1>Spring Boot + RDS Item Manager v2</h1>コミット&プッシュ
cd C:\my-aws\aws-learning-projects
git add cdk-webapp-pipeline/app/src/main/resources/templates/index.html
git commit -m "feat: update webapp UI to v2"
git pushパイプラインの自動起動を確認する
- AWS コンソール → CodePipeline →
my-cdk4-pipeline - push 後、数十秒以内にパイプラインが自動起動することを確認
BuildAndDeployAppステージが完了したらブラウザで/webapp/を更新する
変更前後の見出しが切り替わっていれば、アプリの CI/CD が正常に動作しています。
補足:
InfraDeployステージはインフラに変更がない場合は「変更なし」でスキップされ、高速に完了します。注意: CodePipeline は
mainブランチへの全ての push でトリガーされます。.mdファイルだけ変更した場合でもビルド・デプロイが走ります。本番環境ではブランチ戦略や CodePipeline V2 のトリガーフィルターで絞ることができます。
⑩ リソース削除
課金を止めるために、ハンズオン完了後は必ず削除します。
削除順序が重要です。パイプラインによってデプロイされたスタック(
my-Deploy-WebappStack)を先に削除してから、パイプラインスタック(my-WebappPipelineStack)を削除します。
1. アプリスタックを削除する
aws cloudformation delete-stack ^
--stack-name my-Deploy-WebappStack ^
--region ap-northeast-1
aws cloudformation wait stack-delete-complete ^
--stack-name my-Deploy-WebappStack ^
--region ap-northeast-1
echo WebappStack 削除完了RDS の削除に 10〜15 分かかります。
waitコマンドが完了するまでそのまま待ってください。
2. パイプラインスタックを削除する
aws cloudformation delete-stack ^
--stack-name my-WebappPipelineStack ^
--region ap-northeast-1
aws cloudformation wait stack-delete-complete ^
--stack-name my-WebappPipelineStack ^
--region ap-northeast-1
echo PipelineStack 削除完了3. SSM パラメータを削除する
aws ssm delete-parameter ^
--name "/my/cdk4/db-password" ^
--region ap-northeast-14. 仮想環境の終了
deactivate5. キーペアの削除
aws ec2 delete-key-pair ^
--key-name my-cdk4-key ^
--region ap-northeast-1
del %USERPROFILE%\.ssh\my-cdk4-key.pem6. GitHub との接続を削除する(オプション)
次のハンズオンでも使う場合はそのままでよいです。
CodePipeline → 設定 → 接続 → my-github-connection → 「削除」
削除確認
aws cloudformation list-stacks ^
--region ap-northeast-1 ^
--stack-status-filter CREATE_COMPLETE UPDATE_COMPLETE ^
--query "StackSummaries[?contains(StackName, 'my-')].StackName"空のリスト [] が返れば削除完了です。
削除されるリソース一覧
| リソース | 削除方法 |
|---|---|
| ALB・EC2・RDS・VPC・SG・S3(アーティファクト)・CodeDeploy | delete-stack my-Deploy-WebappStack で削除 |
| CodePipeline・CodeBuild | delete-stack my-WebappPipelineStack で削除 |
| SSM パラメータ(DBパスワード) | aws ssm delete-parameter で手動削除 |
| キーペア | aws ec2 delete-key-pair で手動削除 |
| GitHub との接続(CodeConnections) | CodePipeline コンソールから手動削除 |
CDK Pipelines + CodeDeploy のポイント解説
appspec.yml とライフサイクルフック
version: 0.0
os: linux
files:
- source: webapp.war
destination: /opt/tomcat/webapps/
overwrite: true
hooks:
ApplicationStop:
- location: scripts/stop_tomcat.sh # Tomcat 停止
BeforeInstall:
- location: scripts/cleanup.sh # 古い WAR・展開ディレクトリを削除
AfterInstall:
- location: scripts/start_tomcat.sh # Tomcat 起動CodeDeploy はこの順序でフックを実行し、Tomcat の再起動を伴わずに WAR を差し替えます。
env_from_cfn_outputs の仕組み
インフラスタック(webapp_stack.py)は CodeDeploy のリソース情報を CfnOutput で公開します:
self.deploy_app_name_output = CfnOutput(
self, "DeployApplicationName",
value=web.deploy_application.application_name,
)パイプライン(pipeline_stack.py)はこの出力をアプリデプロイステップの環境変数として受け取ります:
# pipeline_stack.py
build_and_deploy = CodeBuildStep(
"BuildAndDeployApp",
env_from_cfn_outputs={
"DEPLOY_APP_NAME": stage.deploy_app_name_output, # CloudFormation Output → 環境変数
},
commands=["aws deploy create-deployment --application-name $DEPLOY_APP_NAME ..."],
)これにより、パイプラインのコードにリソース名をハードコードせず、CloudFormation が実際に作成したリソース名を動的に参照できます。
post step の役割
pipeline.add_stage(stage, post=[build_and_deploy])post にステップを渡すことで、ステージ(InfraDeploy)の完了後に続けて BuildAndDeployApp が実行されます。これにより「インフラが確実に存在する状態でアプリをデプロイする」という順序が保証されます。
トラブルシューティング
| 症状 | 原因 | 対処 |
|---|---|---|
| Source ステージが「失敗」 | GitHub との接続が「保留中」のまま | CodePipeline → 設定 → 接続 → 承認して「利用可能」にする |
BuildAndDeployApp が mvn package で失敗 | Java ソースが GitHub に push されていない | git add cdk-webapp-pipeline/ で全ファイルを push してから再実行 |
| CodeDeploy が失敗する | EC2 の UserData が完了していない | EC2 起動後 1〜2 分待ってから再デプロイ。sudo systemctl status codedeploy-agent で確認 |
| ALB にアクセスすると 404 or 502 | WAR デプロイ未完了 または Tomcat 起動中 | BuildAndDeployApp ステージが完了するまで待つ |
/webapp/ で接続できない | URL パスが間違い | ルート URL(/)ではなく /webapp/ にアクセスする |
Tomcat の catalina.out に RDS 接続エラー | setenv.sh の DB_HOST が未設定 | EC2 に SSH して cat /opt/tomcat/bin/setenv.sh を確認する |
| パイプラインが自動起動しない | 接続が「保留中」または branch 名が違う | 接続を承認 / cdk.json の github_branch を確認 |
CodeDeploy 失敗時のログ確認:
AWS コンソール → CodeDeploy → アプリケーション → デプロイグループ → デプロイ履歴 → 失敗したデプロイ → 「ログの表示」
まとめ
| ステップ | 内容 |
|---|---|
| ①② | キーペア作成 + Python 仮想環境のセットアップ |
| ③ | CodeConnections で GitHub との接続を作成・承認(cdk-pipelines 実施済みなら再利用) |
| ④ | cdk.json に github_owner・github_repo・connection_arn・key_name を設定 |
| ⑤ | cdk-webapp-pipeline/ 全体を GitHub に push(Java ソース・appspec.yml も含む) |
| ⑥ | cdk deploy my-WebappPipelineStack(初回のみ手動)でパイプラインスタックをデプロイ |
| ⑦ | CodePipeline が自動起動 → Synth → Mutate → InfraDeploy(15〜20 分)→ BuildAndDeployApp(10 分) |
| ⑧ | http://<ALBEndpoint>/webapp/ でアプリにアクセスし、アイテムの追加・削除を確認 |
| ⑨ | HTML を変更して push → パイプライン自動起動 → ブラウザで変更を確認(アプリ CI/CD 体験) |
| ⑩ | delete-stack my-Deploy-WebappStack → delete-stack my-WebappPipelineStack の順で削除 |
CDK Pipelines + CodeDeploy を組み合わせることで、「インフラもアプリも、コードが唯一の変更手段になる」GitOps の世界を体験できました。インフラ変更は CloudFormation が、アプリ変更は CodeDeploy が、それぞれ自動で EC2 に反映します。
コンソールで3層構成を視覚的に学びたい場合は AWSコンソール版ハンズオン、CDK の基本は CDK版ハンズオン(cdk-alb-ec2-rds)、カスタム Construct は CDK カスタム Construct ハンズオン、インフラ CI/CD のみは CDK Pipelines ハンズオン を参照してください。
コメント