2016-09-19 175 views
1

对于参考其S3使用情况的AWS SDK for JS有点困惑。以下是我的代码:AWS JS SDK(s3)ERR_NAME_NOT_RESOLVED

AWS.config.update({ 
    accessKeyId: $rootScope.s3.akey, 
    secretAccessKey: $rootScope.s3.skey 
    }); 
    s3=new AWS.S3({apiVersion: '2006-03-01'}); 
    s3.listObjects({Bucket:$rootScope.s3.bucket}, function(err,data){ 
    if(err) console.log(err); 
    else console.log(data); 
    }) 

这会产生错误网:: ERR_NAME_NOT_RESOLVED。它是将端点类似于https://bucketName.undefined.us-east-1.amazonaws.com/

显然,这不会解决,因为不确定的URL是;但是,这甚至不像s3端点!它应该遵循如下格式:https://s3.amazonaws.com/bucketName/someFile.txt

是否有其他人遇到类似这样的问题,或者是否有一些基本的问题,我做错了。

STR:以上(其角度,但相当自我解释)在控制台

  • 查看错误发布从AWS

    1. 下载SDK为S3
    2. 使用代码。

    请帮忙吗?

  • +0

    设置区域如何? –

    +0

    试过这个以及...没有骰子,没有区别错误的URI:** https:// bucketName。undefined.us-east-1.amazonaws.com/** – LostJon

    +0

    _但是这甚至不像s3 endpoint_是的,它显然是你有未定义的部分,但https://bucketName.s3.us-east- 1.amazonaws.com/是一个有效的端点(请参阅http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html)尝试删除您的角码('$ rootScope.s3.bucket')并硬编码桶名称,以确保它的工作原理,那么它可能是在您的指令 –

    回答

    2

    我在浏览器中调试了一下,发现它似乎是endpointPrefix未定义的问题。这会影响选择使用的网址模板以及奇怪的网址。

    如果我们在AWS JS SDK代码的调试版本看起来还有的地方

    regionConfig.rules 
    

    用来找到derivedKeys匹配(这是根据您的服务/区)的区域。在我的地址中,我得到:

    "eu-west-1/*", "eu-*/*", "*/*" 
    

    /之后的星号表示未定义的端点前缀。然而,我们在regionConfig.rules想匹配的规则是:

    eu-west-1/s3: "s3dash" 
    

    s3dash等同于下面的模板:

    "{service}-{region}.amazonaws.com" 
    

    如果服务是S3这将按照您会得到:

    s3-eu-west-1.amazonaws.com 
    

    但是因为这个规则不代替/比赛发现:

    "{service}.{region}.amazonaws.com" 
    

    由于服务endpointPrefix是未知的(这就是为什么我们在首位此规则结束)你“undefined.eu-west-1.amazonaws.com”

    如果CDN作品,我们建议自定义下载中有一个错误?

    +0

    ON THE MONEY。除了使用CDN之外,我没有做任何其他改变。实际上,我将所解析的链接中的内容完全复制并粘贴到本地文件,并且仍然成功。 谢谢你的详细回复! – LostJon