2016-09-19 4 views
1

Ich bin ein bisschen verwirrt mit dem AWS SDK für JS in Bezug auf seine S3-Nutzung. Die unten ist mein Code: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); 
    }) 

Daraus ergibt sich der Fehler net :: ERR_NAME_NOT_RESOLVED. Der Endpunkt es geht, ist, ähnlich wie https://bucketName.undefined.us-east-1.amazonaws.com/

Offensichtlich wird nicht lösen, weil undefined in der URL ist; Dies sieht jedoch nicht einmal wie ein S3-Endpunkt aus! Es sollte ein Format wie

haben. Hat jemand anderes ähnliche Probleme oder ist etwas elementar, dass ich falsch mache.

STR:

  1. Download-SDK für S3 von AWS
  2. Benutzen Sie den Code oben gepostet (seine in eckig, aber ziemlich selbsterklärend)
  3. anzeigen Fehler in der Konsole.

Irgendwelche Hilfe bitte?

+0

Wie wäre es mit der Einstellung einer Region? –

+0

Versucht auch das ... kein Würfel, kein Unterschied zum Fehler URI: ** https: // BucketName.undefined.us-east-1.amazonaws.com/** – LostJon

+0

_ aber das sieht nicht einmal aus wie ein s3 endpoint_ ja es tut, offensichtlich hast du den undefinierten Teil aber https: //bucketName.s3.us-east- 1.amazonaws.com/ ist ein gültiger Endpunkt (siehe http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html) Versuche, deinen eckigen Code zu entfernen ('$ rootScope.s3.bucket') und hardcode den Bucket-Namen, um sicherzustellen, dass es funktioniert, dann ist es wahrscheinlich etwas in Ihrer Direktive –

Antwort

2

Ich habe dies ein wenig im Browser getestet und festgestellt, dass es ein Problem mit endpointPrefix scheint undefiniert zu sein scheint. Dies wirkt sich auf die Auswahl der zu verwendenden URL-Vorlage und damit auf die seltsame URL aus.

Wenn wir in der Debug-Version des SDK-Code js aws aussehen gibt es einen Bereich, wo

regionConfig.rules 

verwendet wird, ein Spiel von derivedKeys zu finden (die auf Ihrem Service/Region basiert). In meinem bekomme ich:

Die Sternchen nach dem/zeigen ein undefiniertes Endpunkt-Präfix an. Doch die Regel, dass wir in regionConfig.rules abgestimmt wollen, ist:

eu-west-1/s3: "s3dash" 

s3dash auf die folgende Vorlage entspricht:

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

Welche funktionieren würde, wenn der Service s3 war, als würden Sie erhalten:

s3-eu-west-1.amazonaws.com 

jedoch, weil diese Regel nicht statt / Einstimmungen gefunden:

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

Da Service endpointPrefix ist nicht definiert (weshalb wir an dieser Regel an erster Stelle beendet) Sie bekommen ‚undefined.eu-west-1.amazonaws.com‘

Wenn die CDN Arbeiten wir vorschlagen Es gibt einen Fehler beim benutzerdefinierten Download?

+0

AUF DAS GELD. Ich habe keine andere Änderung außer der Verwendung des CDN vorgenommen. In der Tat habe ich genau kopiert und eingefügt, was in der aufgelösten Verbindung zu einer lokalen Datei war, und immer noch erfolgreich. Vielen Dank für diese detaillierte Antwort! – LostJon