topfans/backend/check_oss_config.sh
2026-04-07 22:29:48 +08:00

107 lines
3.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# OSS 配置检查脚本
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE}OSS 配置检查${NC}"
echo -e "${BLUE}========================================${NC}"
echo ""
# 检查环境变量
echo -e "${GREEN}[1/4] 检查环境变量${NC}"
OSS_REGION=${OSS_REGION:-"cn-shanghai"}
OSS_BUCKET_NAME=${OSS_BUCKET_NAME:-"top-fans-test"}
OSS_STS_ROLE_ARN=${OSS_STS_ROLE_ARN:-"acs:ram::1387642798143585:role/top-fans-oss-user"}
OSS_ACCESS_KEY_ID=${OSS_ACCESS_KEY_ID:-"LTAI5tNaAjTNiHnefMCG3q4J"}
OSS_ACCESS_KEY_SECRET=${OSS_ACCESS_KEY_SECRET:-"48wwZvNkUn1PO1xWjV4HuE5JjB6G7c"}
echo " OSS_REGION: ${OSS_REGION}"
echo " OSS_BUCKET_NAME: ${OSS_BUCKET_NAME}"
echo " OSS_STS_ROLE_ARN: ${OSS_STS_ROLE_ARN}"
echo " OSS_ACCESS_KEY_ID: ${OSS_ACCESS_KEY_ID:0:10}..."
echo " OSS_ACCESS_KEY_SECRET: ${OSS_ACCESS_KEY_SECRET:0:10}..."
echo ""
# 检查配置完整性
echo -e "${GREEN}[2/4] 检查配置完整性${NC}"
MISSING_CONFIG=false
if [ -z "$OSS_REGION" ]; then
echo -e "${RED} ✗ OSS_REGION 未设置${NC}"
MISSING_CONFIG=true
else
echo -e "${GREEN} ✓ OSS_REGION: ${OSS_REGION}${NC}"
fi
if [ -z "$OSS_BUCKET_NAME" ]; then
echo -e "${RED} ✗ OSS_BUCKET_NAME 未设置${NC}"
MISSING_CONFIG=true
else
echo -e "${GREEN} ✓ OSS_BUCKET_NAME: ${OSS_BUCKET_NAME}${NC}"
fi
if [ -z "$OSS_STS_ROLE_ARN" ]; then
echo -e "${RED} ✗ OSS_STS_ROLE_ARN 未设置${NC}"
MISSING_CONFIG=true
else
echo -e "${GREEN} ✓ OSS_STS_ROLE_ARN: ${OSS_STS_ROLE_ARN}${NC}"
fi
if [ -z "$OSS_ACCESS_KEY_ID" ]; then
echo -e "${RED} ✗ OSS_ACCESS_KEY_ID 未设置${NC}"
MISSING_CONFIG=true
else
echo -e "${GREEN} ✓ OSS_ACCESS_KEY_ID: 已设置${NC}"
fi
if [ -z "$OSS_ACCESS_KEY_SECRET" ]; then
echo -e "${RED} ✗ OSS_ACCESS_KEY_SECRET 未设置${NC}"
MISSING_CONFIG=true
else
echo -e "${GREEN} ✓ OSS_ACCESS_KEY_SECRET: 已设置${NC}"
fi
if [ "$MISSING_CONFIG" = true ]; then
echo ""
echo -e "${RED}❌ 配置不完整,请设置缺失的环境变量${NC}"
exit 1
fi
echo ""
# 检查 URL 格式
echo -e "${GREEN}[3/4] 检查 URL 格式${NC}"
HOST="https://${OSS_BUCKET_NAME}.oss-${OSS_REGION}.aliyuncs.com"
echo " OSS Host: ${HOST}"
echo ""
# 检查 Role ARN 格式
echo -e "${GREEN}[4/4] 检查 Role ARN 格式${NC}"
if [[ "$OSS_STS_ROLE_ARN" =~ ^acs:ram::[0-9]+:role/[a-zA-Z0-9_-]+$ ]]; then
echo -e "${GREEN} ✓ Role ARN 格式正确${NC}"
else
echo -e "${RED} ✗ Role ARN 格式错误${NC}"
echo -e "${YELLOW} 正确格式: acs:ram::账户ID:role/角色名${NC}"
fi
echo ""
echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE}配置检查完成${NC}"
echo -e "${BLUE}========================================${NC}"
echo ""
echo -e "${YELLOW}注意事项:${NC}"
echo " 1. 如果 Bucket 是私有的,上传的图片需要使用预签名 URL 访问"
echo " 2. 如果 AccessKey 失效,需要更新 OSS_ACCESS_KEY_ID 和 OSS_ACCESS_KEY_SECRET"
echo " 3. 确保 RAM 角色有 OSS 写入权限"
echo ""
echo -e "${YELLOW}测试上传:${NC}"
echo " bash test_oss_upload.sh"
echo ""