在亚马逊中访问我的S3存储桶

时间:2014-10-08 19:26:51

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

AWS.config.loadFromPath('./AwsConfig.json'); 

var params = {
        Bucket: 'test-dev-2',
        Key: file,
        Body: data
    };


    s3.putObject(params, function(err) {
        if(err) {
            console.log(err);
        }
        else {
            console.log("Success");
        }

我已经在我的Aws Config.json文件中设置了凭据,而控制台正在返回此错误:

{ [TimeoutError: Missing credentials in config]
  message: 'Missing credentials in config',
  code: 'CredentialsError',
  time: Wed Oct 08 2014 16:05:18 GMT-0300 (BRT),
  originalError: 
   { message: 'Could not load credentials from any providers',
     code: 'CredentialsError',
     time: Wed Oct 08 2014 16:05:18 GMT-0300 (BRT),
     originalError: 
      { message: 'Connection timed out after 1000ms',
        code: 'TimeoutError',
        time: Wed Oct 08 2014 16:05:18 GMT-0300 (BRT) } } }

凭据没错。任何人都知道错误原因?

3 个答案:

答案 0 :(得分:1)

你的json文件看起来应该是这样的(我在那里添加了几个“asdf”)。

{ "accessKeyId": "ACIAIasdfasdfBEF", "secretAccessKey": "1+eOuyasdfasdasdfEn1", "region": "us-west-2", "apiVersions": { "s3": "2006-03-01", "ses": "2010-12-01" } }

此外,在您的AWS控制台中,请确保用户密钥可以访问S3。创建新用户组,向该组添加“S3 Full”权限,并创建属于该安全组的新用户(不是您的管理员组!

还有一个。我没看到你是如何创建s3变量的。我像这个服务器开始创建我的:

AWS.config.loadFromPath( './aws-config.json' );
AWS.s3 = new AWS.S3();

然后在代码中我访问它类似于你:AWS.s3.putObject(...)

答案 1 :(得分:1)

尝试所有选项后,这对我有用

<body onload="initialize()">

但硬编码安全密钥并不是一个好习惯。因此,将根据aws

的建议使用安全选项尽快更新此帖子

答案 2 :(得分:0)

在获取s3对象之前实例化配置非常重要。

AWS.config.loadFromPath('./awsCredentials.json');
var s3 = new AWS.S3();