Node.js和aws凭据错误

时间:2016-05-29 07:47:31

标签: json node.js amazon-web-services amazon-s3 electron

我正在尝试开发一个electron.js应用程序来将数据上传到aws s3,但我在尝试从json文件加载我的凭据时遇到了问题。 JSON文件看起来像这样:

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

以及加载json文件的代码:

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);
        }
    }
});

错误是这样的:

Uncaught TypeError: Cannot read property 'accessKeyId' of null

修改

我也尝试过提供绝对文件夹(例如:' /home/user/project/file.json'),但它不起作用,它只能对输入凭据进行硬编码,就像这样:

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

2 个答案:

答案 0 :(得分:2)

我有一个示例代码,我已经测试过并且有效。 链接到drone.io输出(以及源代码)。 https://drone.io/github.com/ttwd80/electron-aws/27

我的改变是我没有使用它:

AWS.config.loadFromPath(path);

我用过这个: 加载json文件使其成为一个对象 并使用AWS.config.update

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

答案 1 :(得分:0)

电子有一些问题无法使其与aws sdk一起正常工作