1. はじめに
WebアプリやWordPressの更新時、いちいちEC2にSSHでログインして git pull するのは面倒ですよね。
人間がやる以上、コマンド打ち間違いやブランチ間違いなどのヒューマンエラーも発生します。
そこで今回は、AWSサービスを組み合わせて完全自動デプロイを構築しました。
これにより、CodeCommitへpushするだけでEC2に自動反映され、さらにSNS通知まで飛ぶようになります。
2. システム構成図

- Client(開発PC) → Git Push
- CodeCommit(ソース管理) → pushイベント発火
- Lambda(デプロイスクリプト実行) → SSM経由でEC2接続
- EC2(
git pull) - SNS(結果通知)
3. 各サービスの役割
| サービス | 役割 |
|---|---|
| CodeCommit | Gitリポジトリとしてソース管理 |
| Lambda | pushイベントをトリガーに実行、SSMを使ってEC2へコマンド送信 |
| SSM(Session Manager) | Lambdaから安全にEC2へ接続(鍵不要) |
| EC2 | 実際のWebアプリ/WordPress稼働環境。git pullで最新化 |
| SNS | デプロイ完了通知をメール等で送信 |
4. 実装手順
4.1 CodeCommitリポジトリ作成
- AWSマネジメントコンソール → CodeCommit → 「リポジトリの作成」
- IAMユーザーでGit認証情報を設定
4.2 Lambda関数作成&Layer登録



- ランタイム:Python 3.12
- 環境変数に
BRANCHやDEPLOY_PATHを設定
4.3 IAMロール設定
Lambdaロールに以下を付与
AmazonEC2RoleforSSM相当のポリシーSNS:Publishの権限(通知する場合)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"ssm:SendCommand",
"ssm:GetCommandInvocation"
],
"Resource": "*"
}
]
}4.4 LambdaからEC2へgit pull実行
import boto3
import os
ssm = boto3.client('ssm')
instance_id = os.environ['INSTANCE_ID']
commands = [
f"cd {os.environ['DEPLOY_PATH']}",
f"git fetch origin {os.environ['BRANCH']}",
f"git reset --hard origin/{os.environ['BRANCH']}"
]
ssm.send_command(
InstanceIds=[instance_id],
DocumentName="AWS-RunShellScript",
Parameters={'commands': commands}
)4.5 動作確認
- ローカルで
git push origin master - CloudWatch Logs で Lambda 実行ログを確認
- SNS通知が届くか確認

こんなメールが届き、成否がわかります。
5. ポイント&注意点
- 最小権限の原則
Lambda → EC2 への権限は必要最小限に - ブランチ運用
main/master/develop等、目的に応じたデプロイのみを対象にすると安全 - ログ監視
CloudWatch Logs でLambdaの実行結果を常にチェック
6. まとめ
今回の構成により、CodeCommitへのpushだけでEC2環境が自動更新され、手動デプロイの手間とミスを大幅に削減できます。
同じ構成はステージング・本番環境にも容易に展開可能ですが、ホットデプロイには向いていませんので、そういった用途の場合、AWS CodeDeployを利用した方が良いと思います。
この方法はあくまでも「簡易的な自動デプロイ」と考えています。

図解 Amazon Web Servicesの仕組みとサービスがたった1日でよくわかる

AWSの基本・仕組み・重要用語が全部わかる教科書 (見るだけ図解)

Amazon Web Services基礎からのネットワーク&サーバー構築改訂4版

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)
安達棒とアンバサダーで色々釣りたいおじさん。
Macでプログラムを書いて暮らしています。 趣味はルアーフィッシング、ギター、アクアリウムとストリートファイター(格ゲー) 。
宮崎県在住。






