Laden Anmeldeinformationen JSON mit AWS SDK führt zu Fehler
Ich versuche zu laden Anmeldeinformationen für AWS mit loadFromPath und immer zu einem unerwarteten Fehler. Hartzucodieren die gleichen Anmeldeinformationen bei AWS.config.update funktioniert einwandfrei. Um sicherzustellen, dass der Pfad und das format der credentials-Datei korrekt geladen ich das gleiche mit fs.readFile und es lädt richtig ein, so dass es scheint nicht zu jedem Pfad /Berechtigungen Fragen. Dies scheint super einfach, aber ich habe mein Haar ziehen zu lösen versuchen. Vielen Dank für Ihre Hilfe.
Die Fehler - /Ausgang:
Here: /home/ec2-user/.ec2/credentials.json
Got this through readFile: { access_id: 'XXXXXXX',
private_key: 'XXXXXXX',
keypair: 'praneethkey',
'key-pair-file': '/home/ec2-user/.ec2/praneethkey.pem',
region: 'us-west-2' }
/home/ec2-user/node_modules/aws-sdk/lib/config.js:221
if (err) throw err;
^
SyntaxError: Unexpected token <
at Object.parse (native)
at /home/ec2-user/node_modules/aws-sdk/lib/metadata_service.js:100:38
at IncomingMessage.<anonymous> (/home/ec2-user/node_modules/aws-sdk/lib/metadata_service.js:75:43)
at IncomingMessage.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:910:16
at process._tickCallback (node.js:415:13)
Code:
'use strict';
var AWS = require('aws-sdk');
var fs = require('fs');
var pathv = process.env.HOME + '/.ec2/credentials.json';
AWS.config.loadFromPath(pathv);
console.log('Here: ' + pathv);
fs.readFile(pathv, 'utf8', function (err, data) {
if (err) {
console.log('Error: ' + err);
return;
}
data = JSON.parse(data);
console.log("Got this through readFile:",data);
Was bedeutet die json-Datei Aussehen?
InformationsquelleAutor Praneeth Wanigasekera | 2013-08-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie überspringen die credential-Konfiguration, wenn Sie die env vars
AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY
Das AWS SDK Lesen, diese vars standardmäßig
Wenn Sie immer noch wollen, um zu gehen mit der be-Anmeldeinformationen aus der Datei,
überprüfen, dass die Anmeldeinformationen.json hat gültiges JSON.
Bezüglich http://aws.amazon.com/sdkfornodejs/ sollte so etwas wie
Scheint, wie haben Sie access_id, wo es sein sollte "accessKeyId" und private_key, wo es sein sollte "secretAccessKey"
Kein problem :), denken Sie daran, markieren Sie die Antwort als korrekt.
Ich habe AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY .bash_profile aber AWS SDK nicht scheinen, Sie zu erkennen. Irgendwelche Ideen vielleicht ?
stellen Sie sicher, dass die vars geladen werden, in die Umwelt führen
env | grep AWS
Yup, es ist da. Oh, der idiot mich. Knoten können wahrscheinlich Lesen Sie diese vars, aber nur JS nicht, diese Lösung nicht anwenden. Aber mit plain JS die Menschen brauchen, um sich wirklich zu autorisieren, richtig? Oder kennen Sie eine andere sichere Methoden? Danke!
InformationsquelleAutor alfonsodev
Fand die Antwort auf diese Frage. Für unerfindlichen Gründen, Amazon arbeitet mit verschiedenen Feldnamen für die Anmeldeinformationen in Knoten im Vergleich zu anderen frameworks (z.B. Ruby).
In Ruby, nur die beiden ersten Artikel sind:
Während in Node.js diese Elemente sind:
Änderte den Namen in die Anmeldeinformationen JSON zu den letzteren und der Fehler ist Weg. Warum konnte es nicht das selbe sein?
InformationsquelleAutor Praneeth Wanigasekera