使用AWS开发工具包加载凭证JSON会导致错误 [英] Loading credentials JSON with AWS SDK Results in Error

查看:204
本文介绍了使用AWS开发工具包加载凭证JSON会导致错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用loadFromPath加载AWS凭证并遇到意外错误。使用AWS.config.update硬编码相同的凭证可以正常工作。为确保凭据文件的路径和格式正确,我将fs.readFile加载了该文件并正确加载,因此似乎没有任何路径/权限问题。这似乎很基础,但我一直在努力解决。谢谢您的帮助。



错误/输出:

 此处:/home/ec2-user/.ec2/credentials.json 
通过readFile获得此信息:{access_id:'XXXXXXX',
private_key:'XXXXXXX',
密钥对:'praneethkey',
'key-pair-file':'/home/ec2-user/.ec2/praneethkey.pem',
地区:'us-west-2'}

/home/ec2-user/node_modules/aws-sdk/lib/config.js:221
if(err)throw err;
^
语法错误:意外令牌< Object.parse中的
(本机)/home/ec2-user/node_modules/aws-sdk/lib/metadata_service.js:$100:38 IncomingMessage中的
。< anonymous> (/home/ec2-user/node_modules/aws-sdk/lib/metadata_service.js:75:43)
在IncomingMessage.EventEmitter.emit(events.js:117:20)
在_stream_read。 js:910:16
在process._tickCallback(node.js:415:13)

代码:

 使用严格; 

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(通过readFile读取:,data) ;


解决方案

您可以跳过凭据配置env vars

AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY

默认情况下,AWS开发工具包将读取这些vars



关于从文件中加载凭据的操作,
检查凭据.json是否具有有效的JSON。关于 http://aws.amazon.com/sdkfornodejs/ 应该类似于

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

似乎您在应该具有access_id的地方应该是 accessKeyId,而在应该具有private_key的地方应该有private_key secretAccessKey


I'm trying to load credentials for AWS with loadFromPath and getting an unexpected error. Hardcoding the same credentials with AWS.config.update works fine. To make sure the path and format of credentials file is correct I loaded the same with fs.readFile and it loads correctly, so there don't seem to be any path / permissions issues. This seems super basic but I've been pulling my hair out trying to resolve. Thanks for your help.

The error / output:

    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)

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

解决方案

You can skip the credential configuration, if you have the env vars
AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
The AWS SDK will read those vars by default

If you still want to go with loading credentials from file, check that credentials.json has valid JSON.

Regarding http://aws.amazon.com/sdkfornodejs/ should be something like

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

Seems like you have access_id where it should be "accessKeyId" and private_key where it should be "secretAccessKey"

这篇关于使用AWS开发工具包加载凭证JSON会导致错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆