#!/bin/bash set -e # 必須環境変数リスト 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 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 "バックアップとアップロードが完了しました。"