2016-05-29 15 views
0

Ich versuche, eine electron.js App zu entwickeln, um Daten auf aws s3 hochzuladen, aber ich habe ein Problem beim Versuch, meine Anmeldeinformationen aus einer JSON-Datei zu laden. Die JSON-Datei sieht wie folgt aus:Node.js und aws Credentials Fehler

{ "accessKeyId": "my access key", "secretAccessKey": "my secret", "region": "eu-west-1" } 

und der Code, der die JSON-Datei laden:

var AWS = require('aws-sdk'); 
var fs = require('fs'); 

/* 
I tried both to load from 'path' string and loading './accounts.json' 
*/ 

var path = process.cwd() + '/accounts.json'; 
console.log(path); 
AWS.config.loadFromPath(path); 

var s3 = new AWS.S3(); 

s3.listBuckets(function (err, data) { 
    if (err) { 
     console.log(err); 
    } 
    else { 
     for (var index in data.Buckets) { 
      var bucket = data.Buckets[index]; 
      console.log("Bucket: ", bucket.Name); 
     } 
    } 
}); 

Der Fehler ist dies:

Uncaught TypeError: Cannot read property 'accessKeyId' of null 

EDIT

I habe auch versucht, einen absoluten Ordner zu erstellen (zB: '/home/user/project/file.json'), bu t es nicht funktioniert, funktioniert es nur schwer, die Anmeldeinformationen Codierung, wie folgt aus:

AWS.config.update({ 
    accessKeyId: "access key id", 
    secretAccessKey: "secret access key", 
    "region": "eu-west-1" 
}); 
+0

Auf den ersten Blick scheint Ihr Code in Ordnung. Vielleicht versuchen Sie den Inhalt der Datei in 'Pfad' Variable zuerst zu drucken, um zu sehen, ob Ihr Pfad korrekt ist? –

+0

Ich habe bereits den Inhalt des Pfades ausgedruckt und das ist in Ordnung, aber es funktioniert überhaupt nicht –

+2

Während dies Ihre Frage nicht beantwortet, aber ich empfehle eine IAM_Role zu Ihrer EC2 Instanz zuweisen (vorausgesetzt, Ihr Code läuft auf EC2) und vermeiden Sie den Ärger und die damit verbundene verminderte Sicherheit durch die Verwendung von Zugangsschlüsseln und Geheimnissen. http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html – thoean

Antwort

0

Electron einige Probleme hat, die es nicht richtig

2

ich einen Beispielcode hat funktioniert, die mit aws sdk Ich habe getestet und es funktioniert. Link zur Ausgabe von drone.io (sowie zum Quellcode). https://drone.io/github.com/ttwd80/electron-aws/27

Meine Änderung war, dass ich das nicht genutzt haben:

AWS.config.loadFromPath(path); 

ich verwenden, um diese: Last die JSON-Datei es ein Objekt zu machen und die Anmeldeinformationen aktualisieren mit AWS.config.update

const keys = require(__dirname + '/keys.json'); 
AWS.config.update({"accessKeyId": keys.awsAccessKey, "secretAccessKey": keys.awsSecretKey, "region": keys.region});