You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 08:05:27