#!/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 ""