AWS S3无法访问的主机

时间:2019-04-16 09:38:19

标签: javascript amazon-web-services amazon-s3

我是AWS的初学者,我正尝试连接到S3。我的导出非常简单,但是却收到错误消息:

{"message":"Inaccessible host: `legal-systems-staging.s3.eu-central-1.amazonaws.com'. This service may not be available in the `eu-central-1' region.","code":"UnknownEndpoint","region":"eu-central-1","hostname":"legal-systems-staging.s3.eu-central-1.amazonaws.com","retryable":true,"originalError":{"message":"getaddrinfo ENOTFOUND legal-systems-staging.s3.eu-central-1.amazonaws.com 

要进行连接,我需要输入以下代码:

const AWS = require('aws-sdk');

module.exports = function(customENV){ return function(req, res) {
    //get ENV variables
    const aws_accessKeyId = customENV.access_key;
    const aws_secretAccessKey = customENV.secret_access_key;
    const aws_region = customENV.s3_region;
    const aws_bucket = customENV.s3_bucket;

    //configuring the AWS environment
  AWS.config.update({
      region: aws_region,
      accessKeyId: aws_accessKeyId,
      secretAccessKey: aws_secretAccessKey
    });

  new AWS.S3().getObject({ Bucket: aws_bucket, Key: req.body.template }, function(err, data) {
      if (!err) { 
          res.send('good');
      } else {
          res.send(err);
      }
  });
}};

S3管理控制台中的桶的区域为EU(法兰克福),根据this list,该区域应该正确。

凭据正确。我在做什么错了?

3 个答案:

答案 0 :(得分:0)

我已经找到问题所在。正如我在评论中所写,我们正在使用google firebase将文件发送到AWS S3。问题是我们使用了错误的价格计划(Spark而不是Blaze),这就是为什么我无法拨打外部电话。

答案 1 :(得分:0)

这听起来真的很愚蠢,但是我遇到了这个错误,因为在我的.env文件中,我的存储桶和区域的值混合在一起了。 切换它们的值后,我的代码又可以工作了。

使用AWS CLI工具检查访问权限。如果您可以通过AWS CLI(列表,上传,签名URL,删除等)而不是通过代码进行访问,则很可能您遇到类似的问题。

希望这对像我这样的人有帮助。

答案 2 :(得分:0)

我有一个类似的案例,我使用 .env 文件来存储密钥、ID 和区域。

.env 中的这段代码有错误:

Buildship

当我删除单引号时,Unknown Endpoint 错误消失了。

AWS_ID = 'AKIAW6LZAWQJYVSFY6MV'