☁️ LightsailからS3へバックアップを送るための設定手順(IAM・AWS CLI・疎通確認)
🧭 はじめに
本記事では、Lightsail(Linux)上のBookStackバックアップをAmazon S3へ安全にアップロードするための設定手順を、 「作業 → 確認 → 正常判定」の流れでまとめる。 目的は以下の3点。
- Lightsail から S3 に書き込み可能な最小権限を用意する
- AWS CLI を使って確実にアップロードできる状態を作る
- cron 等で自動化する前に人間が検証できるところまで到達する
🧱 全体像(この手順でできること)
- IAMユーザー(S3専用・最小権限)を作成
- Lightsail に AWS CLI を導入
- 認証情報を安全に配置
aws s3 ls / syncで実際にS3へ書き込めることを確認
この時点では自動化しない。 まず「手で叩いて成功」を確認する。
🔐 1. IAMユーザーを作成する(S3専用・最小権限)
🧑💼 1-1. IAMユーザー作成
AWS マネジメントコンソール → IAM → ユーザー → 作成。
- ユーザー名例:
bookstack-backup - アクセス方法:プログラムによるアクセス(アクセスキー)
コンソールログインは不要。 付けない。
🧾 1-2. ポリシーを作成(最小権限)
対象バケットを1つに限定する。
ポリシー例(JSON)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowListBucket",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::YOUR_BUCKET_NAME"
},
{
"Sid": "AllowPutGetDeleteObject",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
}
]
}
YOUR_BUCKET_NAMEは実際のバケット名に置換
AdministratorAccess を付与しない。 バックアップ用途では過剰。
🔑 1-3. アクセスキーを控える
作成後に表示される以下2点を安全な場所に控える。
- Access Key ID
- Secret Access Key
Secret Access Key は再表示できない。 必ず保存。
🧰 2. LightsailにAWS CLIを導入する
🔍 2-1. 既に入っているか確認
aws --version
- バージョンが表示されればOK
📦 2-2. 無い場合のインストール(Ubuntu想定)
sudo apt update
sudo apt install -y awscli
確認:
aws --version
ここで aws コマンドが叩ければ次に進める。
🔐 3. 認証情報を安全に配置する
📁 3-1. 認証情報ファイルを作る(root専用)
cron から使う前提で、root のみに読ませる。
sudo mkdir -p /root/.aws
sudo nano /root/.aws/bookstack_env
中身:
AWS_ACCESS_KEY_ID=AKIA...
AWS_SECRET_ACCESS_KEY=xxxxxxxx
AWS_DEFAULT_REGION=ap-northeast-1
権限設定:
sudo chmod 600 /root/.aws/bookstack_env
600 以外は不可。 他ユーザーに読ませない。
☁️ 4. S3への疎通確認(最重要)
🪣 4-1. バケット一覧が取れるか
. /root/.aws/bookstack_env
aws s3 ls
正常例
2025-12-27 my-bookstack-backup-xxxx
この時点で IAM・認証・ネットワークはOK。
📂 4-2. バケット内を確認
aws s3 ls s3://YOUR_BUCKET_NAME/
- 空でもOK(エラーにならなければ成功)
⬆️ 4-3. テストファイルをアップロード
echo test > /tmp/s3_test.txt
aws s3 cp /tmp/s3_test.txt s3://YOUR_BUCKET_NAME/test/s3_test.txt
確認:
aws s3 ls s3://YOUR_BUCKET_NAME/test/
正常例
2025-12-27 03:12:00 5 s3_test.txt
Lightsail → S3 の書き込み成功。
🧹 4-4. テストファイル削除
aws s3 rm s3://YOUR_BUCKET_NAME/test/s3_test.txt
🔁 5. バックアップディレクトリを同期する(手動)
📦 5-1. 同期コマンド(初回)
aws s3 sync /var/backups/bookstack s3://YOUR_BUCKET_NAME/bookstack/
🔍 5-2. 正常確認
aws s3 ls s3://YOUR_BUCKET_NAME/bookstack/
ローカルにあるバックアップがS3に見えれば成功。
⚠️ 6. よくあるミスと注意点
cron で動かす前に、必ず手動で成功させる。
--delete は最初は使わない。 ミラー運用は後で。
アクセスキーを .bashrc や world-readable な場所に置かない。
✅ ここまでで達成できたこと
- Lightsail → S3 の認証が確立
- 最小権限でのアップロードが可能
- aws s3 sync が使える状態
次のステップは cron 化と「成功/失敗の機械判定」。