aws-sdk putObject访问被拒绝的Request.extractError

时间:2016-07-16 13:53:20

标签: javascript node.js amazon-web-services amazon-s3 aws-sdk

我正在使用的IAM用户附加以下策略。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1468642330000",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::elasticbeanstalk-ap-southeast-1-648213736065/documents/*"
            ]
        }
    ]
}

问题在于我做了类似的事情:

return readFile(file.path)
  .then(function(buffer) {
    var s3obj = s3.putObject({
      Bucket: bucket,
      Key: `documents/${destFileName}`,
      Body: buffer
    });
    return s3obj.promise();
  });

我明白了:

AccessDenied: Access Denied

这里有什么不对?

当我使用listBuckets时,我从其他S3帐户获取内容。好像我配置SDK的方式不正确?

1 个答案:

答案 0 :(得分:1)

好的,我发现了这个问题,就像使用[default]文件中指定的~/.aws/credentials个人资料一样。

我发现我需要像这样配置AWS:

AWS.config = new AWS.Config({
  accessKeyId: appConfig.aws.accessId,
  secretAccessKey: appConfig.aws.secretKey,
  logger: process.stdout
});

我最初设置

AWS.config.accessKeyId = ...