2024-12-26 04:24:05 +00:00
|
|
|
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
|
2024-12-26 05:24:14 +00:00
|
|
|
# 必須環境変数リスト
|
|
|
|
REQUIRED_VARS=(
|
|
|
|
PG_HOST
|
|
|
|
PG_PORT
|
|
|
|
PG_USER
|
|
|
|
PG_PASSWORD
|
|
|
|
PG_DATABASE
|
|
|
|
S3_BUCKET
|
|
|
|
AWS_ACCESS_KEY_ID
|
|
|
|
AWS_SECRET_ACCESS_KEY
|
|
|
|
)
|
|
|
|
|
|
|
|
# 未設定の環境変数をチェック
|
|
|
|
for VAR in "${REQUIRED_VARS[@]}"; do
|
|
|
|
if [ -z "${!VAR}" ]; then
|
|
|
|
echo "エラー: 必須環境変数 '${VAR}' が設定されていません。" >&2
|
|
|
|
MISSING_ENV=true
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
if [ "$MISSING_ENV" = true ]; then
|
2024-12-26 04:24:05 +00:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# 環境変数の設定
|
|
|
|
export AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}"
|
|
|
|
export AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}"
|
|
|
|
export AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION:-us-east-1}"
|
|
|
|
|
|
|
|
# ダンプファイル名
|
|
|
|
DUMP_FILE="dump_$(date +%Y%m%d%H%M%S).sql"
|
|
|
|
|
|
|
|
# pg_dumpを実行
|
|
|
|
export PGPASSWORD="${PG_PASSWORD}"
|
|
|
|
pg_dump -h "${PG_HOST}" -p "${PG_PORT}" -U "${PG_USER}" -d "${PG_DATABASE}" -F c -b -v -f "${DUMP_FILE}"
|
|
|
|
|
|
|
|
# S3にアップロード
|
|
|
|
if [[ -n "${S3_ENDPOINT}" ]]; then
|
|
|
|
# カスタムエンドポイント指定時
|
|
|
|
aws --endpoint-url "${S3_ENDPOINT}" s3 cp "${DUMP_FILE}" "s3://${S3_BUCKET}/${DUMP_FILE}"
|
|
|
|
else
|
|
|
|
# デフォルトエンドポイント
|
|
|
|
aws s3 cp "${DUMP_FILE}" "s3://${S3_BUCKET}/${DUMP_FILE}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
# ローカルのダンプファイルを削除
|
|
|
|
rm -f "${DUMP_FILE}"
|
|
|
|
|
|
|
|
echo "バックアップとアップロードが完了しました。"
|