使用AWS SDK加载凭据JSON导致错误

我正在尝试使用loadFromPath加载AWS的凭据,并得到一个意外的错误。 使用AWS.config.update硬编码相同的证书正常工作。 为了确保凭证文件的path和格式是正确的,我加载了与fs.readFile一样的文件,并且加载正确,所以似乎没有任何path/权限问题。 这似乎超级基本,但我已经拉我的头发试图解决。 谢谢你的帮助。

错误/输出:

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) 

代码:

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

如果您拥有env vars,则可以跳过凭证configuration
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY
AWS SDK将默认读取这些variables

如果您仍然想要从文件加载凭据,请检查credentials.json是否具有有效的JSON。

关于http://aws.amazon.com/sdkfornodejs/应该是这样&#x7684;

 { "accessKeyId": "akid", "secretAccessKey": "secret", "region": "us-west-2" } 

似乎你有access_id它应该是“accessKeyId”和private_key它应该是“secretAccessKey”

find了答案。 出于一些奇怪的原因,Amazon在Node和其他框架(例如Ruby)中使用不同的字段名称作为凭证。

在Ruby中,只有两个第一项是:

 "access_id": "[Your AWS Access Key ID]", "private_key": "[Your AWS Secret Access Key]", 

而在Node.js中,这些相同的项目是:

 "accessKeyId": "[Your AWS Access Key ID]", "secretAccessKey": "[Your AWS Secret Access Key]", 

将凭据JSON中的名称更改为后者,错误消失。 为什么不能这样呢?