Minio本地S3测试遇API端口错误:无法操作存储桶求助
问题解决:Minio S3 API请求端口错误
错误原因
你把Minio的**控制台端口(9001)**当成了S3 API端口使用。Minio默认的S3 API端口是9000,--console-address ":9001"仅用于指定Web控制台的访问端口,所有S3 API请求必须发送到9000端口,否则会触发"S3 API Requests must be made to API port"错误。
修复步骤
1. 修正docker-compose配置
需要同时映射API端口9000和控制台端口9001,并调整数据填充服务的API地址:
version: "2.1" services: minio: image: minio/minio container_name: minio ports: - 9000:9000 # S3 API端口 - 9001:9001 # Web控制台端口 volumes: - minio_storage:/data environment: MINIO_ACCESS_KEY: minio MINIO_SECRET_KEY: minio123 MINIO_REGION: us-east-1 command: server /data --console-address ":9001" mem_limit: 512m populate-minio-data: container_name: "minio-data" image: minio/mc volumes: - ./hello.txt:/tmp/hello.txt entrypoint: > /bin/sh -c " /usr/bin/mc config host rm local; # 改为Minio的API端口9000 /usr/bin/mc config host add --quiet --api s3v4 local http://minio:9000 minio minio123; /usr/bin/mc mb --quiet local/somebucketname1/; /usr/bin/mc policy set public local/somebucketname1; /usr/bin/mc cp /tmp/hello.txt local/somebucketname1/hello.txt; " depends_on: - minio archive-api-app: image: openjdk:11 container_name: "archive-api-app" ports: - 8091:6001 volumes: - /home/apcuser/dev/projects/ea-archive-service-v2/projects/application/archive-api:/app command: [ 'java', '-jar', '/app/build/libs/archive-api-1.0.0.jar' ] env_file: - ./vars/default.env volumes: minio_storage:
2. 修正Java代码中的S3端点
将API地址改为Minio的9000端口:
@Bean public AmazonS3 getS3Client() { return AmazonS3ClientBuilder.standard() .withClientConfiguration(new ClientConfiguration().withMaxConnections(maxConnections) .withConnectionTimeout(connectionTimeout).withMaxErrorRetry(maxRetry)) // 调整为9000端口 .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("http://minio:9000", "us-east-1")) .build(); }
3. 本地AWS CLI调用修正
使用9000端口作为API端点:
export AWS_ACCESS_KEY_ID=minio export AWS_SECRET_ACCESS_KEY=minio123 export AWS_REGION=us-east-1 aws --endpoint-url http://127.0.0.1:9000 s3 ls
4. 验证修复
停止并重启服务:
docker-compose down docker-compose up -d
此时populate-minio-data容器会成功创建Bucket并上传文件,本地AWS CLI能正常列出Bucket,Web控制台仍可通过http://127.0.0.1:9001访问。
内容的提问来源于stack exchange,提问作者Anshita Singh
相关产品推荐
相关产品推荐

