2016-09-19 173 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