【问题标题】:An error occurred (InvalidArgument) when calling the ListBuckets operation: S3 API Requests must be made to API port调用 ListBuckets 操作时发生错误(InvalidArgument):S3 API Requests must be made to API port
【发布时间】:2022-09-23 13:32:02
【问题描述】:

我们正在使用 Minio 对 S3 进行本地测试,并且我们使用 Minio 创建了docker-compose file,我们的应用程序依赖项如下:

Docker-撰写文件:

version: \"2.1\"

services:
  minio:
    image: minio/minio
    container_name: minio
    ports:
      - 9001:9001
    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;
      /usr/bin/mc config host add --quiet --api s3v4 local http://minio:9001 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:

在java代码中,我已经配置了MINIO URL 作为 S3 端点如下:

 @Bean
    public AmazonS3 getS3Client() {
        return AmazonS3ClientBuilder.standard()
                .withClientConfiguration(new ClientConfiguration().withMaxConnections(maxConnections)
                        .withConnectionTimeout(connectionTimeout).withMaxErrorRetry(maxRetry))
            .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(\"http://minio:9001\", \"us-east-1\"))
                .build();
    }

有一次,我运行docker-compose file,我可以在我的本地Linux 机器上看到minio-ui,如下所示:

但是我在 Minio 中没有看到任何数据,相反,我在 minio 中上传数据时看到了以下错误:

Attaching to minio-data
minio-data             | Removed `local` successfully.
minio-data             | Added `local` successfully.
minio-data             | mc: <ERROR> Unable to make bucket `local/somebucketname1/`. S3 API Requests must be made to API port.
minio-data             | mc: <ERROR> Unable to set policy `public` for `local/somebucketname1`. S3 API Requests must be made to API port.
minio-data             | `/tmp/hello.txt` -> `local/somebucketname1/hello.txt`
minio-data             | mc: <ERROR> Failed to copy `/tmp/hello.txt`. S3 API Requests must be made to API port.
minio-data             | Total: 0 B, Transferred: 0 B, Speed: 0 B/s

当我尝试从本地 linux 主机列出 MINIO 数据时,我甚至看到同样的错误:

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:9001 s3 ls

**An error occurred (InvalidArgument) when calling the ListBuckets operation: S3 API Requests must be made to API port.**

有人可以帮忙吗?

    标签: docker amazon-s3 docker-compose minio


    【解决方案1】:

    错误信息表明您在使用 mc 时需要使用 API 端口而不是控制台端口。

    /usr/bin/mc config host add --quiet --api s3v4 local http://minio:9001 minio minio123;
    

    您需要使用端口 9000 而不是 9001。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-06
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 2023-03-06
      相关资源
      最近更新 更多