【发布时间】:2020-11-23 13:51:07
【问题描述】:
我从一家公司获得了对象存储服务,他们使用 aws s3 结构。所以您可以使用为 aws s3 设计的库来连接到那里的存储(如 boto3 用于 python 和 aws-sdk 用于 javascript 的库)。我使用 aws -sdk。
我需要使用一个 IP 地址来访问存储,所以我需要将端点设置为他们的 IP 地址,它工作正常。问题是这家公司的文件存储系统与aws有点不同。虽然 aws 使用存储桶名称作为子域,但该公司在文件路径中使用存储桶名称。
aws:bucket.amazon.com
他们的:/public/bucket/...
使用 boto3 时它很好,但是当我使用 aws-sdk 并在参数中设置存储桶时,aws-sdk 将存储桶设置为 IP 地址的子域,它不再工作了。
因为它在使用 boto3 时可以正常工作,所以我认为它也必须与 aws-sdk 一起使用。所以我正在寻找一种方法来防止 aws-sdk 将存储桶设置为子域并以不同的方式使用它。
const AWS = require("aws-sdk");
const ep = new AWS.Endpoint("http://<ip address>");
global.s3 = new AWS.S3({
apiVersion: "2006-03-01",
endpoint: ep,
});
const params = {
Bucket: `${process.env.AWS_BUCKET}`,
Prefix: `${_path}`,
};
const result = await s3.listObjects(params).promise();
上面代码的结果是这个错误:
Inaccessible host: <bucket>.<ip address>. This service may not be available in the us-east-1' region.'
whick 是正确的,因为该地址不存在。但是我该如何解决这个问题。
当我获取存储桶列表并且未设置存储桶时,它可以正常工作。
【问题讨论】:
标签: javascript node.js amazon-s3 aws-sdk