Ans*_*ngh 5 amazon-s3 docker docker-compose minio
我们正在使用 Minio 进行 S3 的本地测试,并且我们已经docker-compose file使用 Minio 创建了应用程序,并且我们的应用程序依赖项如下:
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:
Run Code Online (Sandbox Code Playgroud)
在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();
}
Run Code Online (Sandbox Code Playgroud)
有一次,我运行docker-compose file,我可以minio-ui在我的本地 Linux 机器上看到如下:
但我在 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
Run Code Online (Sandbox Code Playgroud)
当我尝试从本地 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.**
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
小智 9
该错误消息表明您在使用 mc 时需要使用 API 端口而不是控制台端口。
/usr/bin/mc config host add --quiet --api s3v4 local http://minio:9001 minio minio123;
Run Code Online (Sandbox Code Playgroud)
您需要使用端口 9000 而不是 9001。
| 归档时间: |
|
| 查看次数: |
6225 次 |
| 最近记录: |