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

使用AWS SDK for Node.js连接本地MinIO服务器遇端点错误求助

解决方案

问题出在SDK的请求风格和MinIO端口的混淆,以下是修正步骤:

1. 修正MinIO的Endpoint地址

MinIO的9001端口是Web控制台端口,API请求必须使用9000端口。所以endpoint应该设置为http://localhost:9000,而不是9001。

2. 强制SDK使用路径风格访问

AWS SDK默认使用虚拟主机风格(bucket.endpoint.com)构造请求,但本地没有test.localhost的DNS解析,导致getaddrinfo ENOTFOUND错误。需要强制SDK使用路径风格(endpoint.com/bucket),添加forcePathStyle: true配置。

3. 修正环境变量判断逻辑

原来的代码只在生产环境(isReleaseVersion()为true)时配置endpoint,这完全搞反了——开发环境才需要指向本地MinIO,生产环境用AWS默认配置即可。

4. 添加必填的region参数

AWS SDK要求必须配置region,MinIO对区域没有严格限制,随便填一个兼容值(比如us-east-1)即可。

修正后的S3Client配置代码:

import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3';

#s3Client = new S3Client({
    credentials: {
        accessKeyId: config.getAwsStorageAccessKeyId(),
        secretAccessKey: config.getAwsStorageSecretAccessKey(),
    },
    ...(!globalConfig.isReleaseVersion() && {
        endpoint: 'http://localhost:9000', // 指向MinIO API端口
        forcePathStyle: true, // 强制路径风格,避免虚拟主机解析错误
        region: 'us-east-1' // 必填区域参数
    }),
});

额外检查项

  • 确认MinIO中已经创建了名为test的存储桶
  • 确认环境变量中的AccessKey和SecretKey与MinIO控制台配置的一致

内容的提问来源于stack exchange,提问作者Furman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:20:23