我从Node.js项目中的Amazon S3 SDK中收到错误,如下所示。
{ Error: getaddrinfo EAI_AGAIN ***.s3-accelerate.amazonaws.com:443
at Object._errnoException (util.js:992:11)
at errnoException (dns.js:55:15)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26)
message: 'getaddrinfo EAI_AGAIN ***.s3-accelerate.amazonaws.com:443',
code: 'NetworkingError',
errno: 'EAI_AGAIN',
syscall: 'getaddrinfo',
hostname: '***.s3-accelerate.amazonaws.com',
host: '***.s3-accelerate.amazonaws.com',
port: 443,
region: 'us-east-1',
retryable: true,
time: 2018-12-14T05:46:18.649Z }
error: There was an error viewing your album: getaddrinfo EAI_AGAIN ***.s3-accelerate.amazonaws.com:443
我知道这是DNS问题。但是错误偶尔会发生。如果我尝试一次又一次运行代码,则可能不会显示此错误。
S3位于美国东部地区,我正在从亚洲访问。但是据我所知,Amazon S3地区没有参与其中。
部分代码如下:
仅供参考:我承诺提供S3 SDK
const s3 = new AWS.S3({useAccelerateEndpoint: true});
const bucket_name = s3Storage.bucketName;
s3getImageV2: async function (albumPhotosKey) {
albumPhotosKey = albumPhotosKey.toString();
try {
const s3 = new AWSP.S3({useAccelerateEndpoint: true});
const bucket_name = s3Storage.bucketName;
if (!albumPhotosKey) {
return {
status: false,
message: 'Album name is not given.'
};
}
const data = await listImageObjects(s3, bucket_name, albumPhotosKey);
var photos = [];
logger.debug('S3:data.Contents: ', data.Contents.length);
for (let i = 0; i < data.Contents.length; i++) {
const photo = data.Contents[i];
if (photo.Key.endsWith("/")) continue;
const params = {
Bucket: bucket_name,
Key: photo.Key,
Expires: config.cache.ttl || 86400
};
logger.silly(`iteration:, ${i}`);
// skiniq:s3
const resp = await s3.getSignedUrlProm('getObject', params);
photos.push(resp);
}
logger.debug('S3:OUTPUT: ', photos);
return photos;
} catch (e) {
console.error(e);
return null;
}
答案 0 :(得分:0)
是的,我们也开始获得这些。对于我们而言,它们并不是太严重,以至于一旦我们检测到故障,我们就可以重新启动节点进程,但是它们非常令人惊讶。我们看不到逻辑上的解释(在我们的示例中,我们启动了64个相同的Pod,而一两个在启动时就收到了该错误)。
答案 1 :(得分:0)
我最近也遇到了同样的问题,经过很长时间的搜索之后,我找到了一个解决方案,该解决方案指出应从初始化中删除REGION参数,然后就可以了。我做到了并且工作了。我希望这可以帮助遇到此错误的任何人。
答案 2 :(得分:0)
我们正在执行 deleteObject,它发生在有人在 AWS 控制台中查看文件/对象所在的目录时。
因此,当删除 S3 对象是由 SDK 完成时,并且如果有人正在查看文件所在的同一目录,那么我们就会发生此错误。
因此,我们尝试在从控制台选项卡移至其他选项卡后删除对象,但问题并未发生。
同样在 S3 的控制台中,我们输入了搜索查询,它将在结果中显示文件。然后当我们对结果中的一个文件发出删除对象请求时,我们得到了这个错误。