🫠

【AWS】EC2環境でのファイル自動更新とバージョン管理手順まとめ

2024/12/23に公開

はじめに

今回はAWS EC2 環境で、Git を活用したファイルのバージョン管理と自動更新方法について解説します。この手法を用いることで、リモートリポジトリの変更を EC2 インスタンスに反映させ、プロジェクトの最新状態を維持することができます。


1. 環境設定

まずは EC2 インスタンスをセットアップします。

必要な環境

  • EC2 インスタンス(Amazon Linux 2023 推奨)
  • Git のインストール
sudo yum update -y
sudo yum install git -y

Git の設定を行います。

git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"

リポジトリのクローン

cd /home/ec2-user

git clone <リポジトリのURL>
cd <プロジェクト名>

2. 手動での Git 操作

リモートリポジトリからの更新を手動で確認します。

現在の状態を確認

git status

変更を適用

git pull origin <branch_name>

競合が発生した場合、対象ファイルを解決し git add で変更をステージングした後にコミットします。


3. 自動更新の仕組み

変更を自動で反映するには、inotify-tools を使用します。このツールを用いることで、ファイルシステムイベント(変更、作成、削除など)を監視できます。

inotify-tools のインストール

sudo yum install inotify-tools -y

4. inotify-tools の活用

変更があった場合に Git の更新を自動実行するスクリプトを作成します。

自動更新スクリプト

以下のスクリプトを auto_pull.sh として保存します。

#!/bin/bash

WATCH_DIR="/home/ec2-user/<プロジェクト名>"
LOG_FILE="/home/ec2-user/auto_pull.log"

while inotifywait -r -e modify,create,delete $WATCH_DIR; do
  cd $WATCH_DIR
  git stash
  git pull origin <branch_name> >> $LOG_FILE 2>&1
  git stash pop
  echo "Changes pulled and applied at $(date)" >> $LOG_FILE
done

スクリプトに実行権限を付与します。

chmod +x auto_pull.sh

5. crontab での自動起動設定

EC2 インスタンス起動時に自動で auto_pull.sh を実行するよう設定します。

crontab の設定

crontab -e

以下を追加します。

@reboot /home/ec2-user/<プロジェクト名>/auto_pull.sh

crontab を再起動します。

sudo systemctl restart crond

6. トラブルシューティング

問題: git pull で競合が発生

解決方法:

競合ファイルを解決し、以下のコマンドを実行します。

git add .
git rebase --continue

問題: inotify-tools が動作しない

解決方法:

スクリプトのパスや実行権限を確認してください。また、ログファイルを確認してエラーメッセージを確認します。

tail -f /home/ec2-user/auto_pull.log

これで AWS EC2 環境における自動更新の仕組みが完成です。この手順を活用すれば、効率的にリモートリポジトリの変更をインスタンスに反映できます。

Discussion