# test_minio_diag.py import os from minio import Minio from minio.error import S3Error print("=== 1. 环境变量检查 ===") print(f"Endpoint: {os.getenv('MINIO_ENDPOINT')}") print(f"Access Key: {os.getenv('MINIO_ACCESS_KEY')}") print(f"Secret Key: {os.getenv('MINIO_SECRET_KEY')[:3]}***") # 隐藏部分 print(f"Secure: {os.getenv('MINIO_SECURE')}") print(f"HTTP Proxy: {os.getenv('http_proxy', 'None')}") # 关键:检查是否有代理 print(f"HTTPS Proxy: {os.getenv('https_proxy', 'None')}") print("\n=== 2. 连接测试 ===") try: client = Minio( os.getenv("MINIO_ENDPOINT"), access_key=os.getenv("MINIO_ACCESS_KEY"), secret_key=os.getenv("MINIO_SECRET_KEY"), secure=os.getenv("MINIO_SECURE").lower() == "true" ) # 尝试列出 public/ 目录下的文件 print(">>> 尝试列出对象 (ListObjects)...") bucket = os.getenv("MINIO_BUCKET") objs = list(client.list_objects(bucket, prefix="public/", recursive=True)) if objs: obj_name = objs[0].object_name print(f"✅ 列表成功! 发现文件: {obj_name}") # 尝试下载该文件 print(f">>> 尝试下载对象 (GetObject): {obj_name}") stream = client.get_object(bucket, obj_name) print(f"✅ 下载成功! 文件大小: {len(stream.read())} bytes") else: print("⚠️ public/ 目录下没有文件") except S3Error as e: print(f"❌ S3 错误! Code: {e.code}") print(f" Message: {e.message}") if "AccessDenied" in str(e): print("\n💡 结论: 你的 minioadmin 账号缺乏读取权限。请检查 MinIO 控制台的用户策略。") except Exception as e: print(f"❌ 未知错误: {e}")