我有用 Node.js 编写的应用程序服务器,它将文件上传到 AWS S3 存储。为此我正在使用https://www.npmjs.com/package/aws-sdk https://www.npmjs.com/package/aws-sdk当我连接并上传到我的 AWS 生产存储时,它工作正常。但是在开发过程中我想将文件上传到本地 MinIO 服务器(从 docker 镜像创建)https://hub.docker.com/r/minio/minio/ https://hub.docker.com/r/minio/minio/):
docker run -p 9000:9000 -p 9001:9001 \
quay.io/minio/minio server /minio --console-address ":9001"
MinIO 服务器本身工作正常,我可以在本地登录、创建存储桶等。但是,当我尝试使用适用于 Node.js 的 AWS SDK 将文件上传到本地 MinIO 存储时,我无法执行此操作:
import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3';
#s3Client = new S3Client({
credentials: {
accessKeyId: config.getAwsStorageAccessKeyId(), // from env variables
secretAccessKey: config.getAwsStorageSecretAccessKey(),
},
...(globalConfig.isReleaseVersion() && {
endpoint: config.getAwsStorageEndpoint(), // from env "http://localhost:9001"
}),
});
后来我尝试上传对象:
await this.#s3Client.send(new PutObjectCommand({
Bucket: config.getAwsStorageWebflowBucketName(), // from env "test" value
Key: 'example.json',
Body: body, // a buffer
}));
我收到错误:
ERROR EndpointError: Custom endpoint `test.127.0.0.1://9001/` was not a valid URI
不过我能够到达地址http://test.localhost:9001/ http://test.localhost:9001/从我的浏览器。当我尝试直接传递值时'http://localhost:9001/'
作为端点S3Client
配置,我收到错误:
ERROR Error: getaddrinfo ENOTFOUND test.localhost
看来我的 SDK 忽略了端口值。如何解决这个问题?
endpoint配置中的参数意味着它应该是可能的>