DNS Lookup Error时,上传到localhost(本地S3服务器)



在docker容器中,scality/s3server-image正在运行。我使用@aws-sdk/client-s3API与NodeJS连接到它。


S3Client设置如下:

const s3Client = new S3Client({
region: undefined, // See comment below
endpoint: 'http://127.0.0.1:8000',
credentials: {
accessKeyId: 'accessKey1',
secretAccessKey: 'verySecretKey1',
},
})

区域undefined:对类似问题的回答提到要将该区域排除在外,但是,使用await s3Client.config.region()访问该区域仍然显示eu-central-1,这是我在以前的版本中传递给构造函数的值。虽然我把它改为undefined,它仍然采取旧的配置。这和这个问题有关系吗?


可以成功创建一个bucket (test),并且可以通过运行ListBucketsCommand(await s3Client.send(new ListBucketsCommand({})))来列出它。


但是,正如标题中提到的,使用

上传内容或流到Bucket
bucketParams = {
Bucket: 'test',
Key: 'test.txt',
Body: 'Test Content',
}
await s3Client.send(new PutObjectCommand(bucketParams))

不工作,相反,我得到一个DNS解析错误(这似乎很奇怪,因为我手动输入了ip地址,而不是localhost

无论如何,这里是错误信息:

Error: getaddrinfo EAI_AGAIN test.127.0.0.1
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:72:26) {
errno: -3001,
code: 'EAI_AGAIN',
syscall: 'getaddrinfo',
hostname: 'test.127.0.0.1',
'$metadata': { attempts: 1, totalRetryDelay: 0 }
}

你对

有什么想法吗?
  • 为什么区域和/或
  • 为什么发生DNS查找/然后失败,但只有在上传时,而不是在检索有关桶的元数据/创建桶时?

对于第二个问题,我找到了一个解决方法:

不直接指定IP-Address,使用endpoint: http://localhost:8000(因此使用Hostname而不是IP-Address)修复DNS查找异常。然而,没有明显的理由说明为什么会发生这种情况。

相关内容

  • 没有找到相关文章

最新更新