繁体   English   中英

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

[英]Loading credentials JSON with AWS SDK Results in Error

我正在尝试使用loadFromPath加载AWS的凭据并获得意外错误。 使用AWS.config.update对相同凭据进行硬编码工作正常。 为了确保凭证文件的路径和格式是正确的,我使用fs.readFile加载它并且它正确加载,因此似乎没有任何路径/权限问题。 这似乎超级基本,但我一直在努力解决我的头发。 谢谢你的帮助。

错误/输出:

    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,则可以跳过凭据配置
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY
AWS SDK将默认读取这些变量

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

关于http://aws.amazon.com/sdkfornodejs/应该是这样的

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

好像你有access_id应该是“accessKeyId”而private_key应该是“secretAccessKey”

找到了答案。 出于某些奇怪的原因,亚马逊在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中的名称更改为后者,错误消失了。 为什么不能一样?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM