Node.js 发送到S3的AWS访问ID与我在节点AWS-SDK中指定的不同

Node.js 发送到S3的AWS访问ID与我在节点AWS-SDK中指定的不同,node.js,express,aws-sdk,Node.js,Express,Aws Sdk,我有一个S3存储桶,我想从我的节点后端上传一个文件。由于403错误,上载失败,并显示以下消息: <Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>AKIAI5L2C5CJPGACBIOA</AWS

我有一个S3存储桶,我想从我的节点后端上传一个文件。由于403错误,上载失败,并显示以下消息:

<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>AKIAI5L2C5CJPGACBIOA</AWSAccessKeyId><RequestId>A1BF9779D5888ADD</RequestId>
以下是RESTAPI中的代码:

  AWS.config.region = 'us-east-1';
  AWS.config.accessKeyId = 'AKIAIPMGLJ7BHQLGM3JA';
  AWS.config.secretAccessKey = '<None of your business>';

  var bucketName = "daniel-videostore"
  var s3bucket = new AWS.S3();

  var s3_params = {
        Bucket: bucketName,
        Key: fileName,
        Expires: 60, // expire after 60 mins
        ContentType: file.type,
        ACL: 'public-read',
    };

  s3bucket.getSignedUrl('putObject', s3_params, function(err, data){
    if(err){
      console.log("Server Error occurred")
      console.log(err);
    }
    else{
      var return_data = {
        requestUrl : data,
        imageUrl: 'https://'+ bucketName +'.s3.amazonaws.com/'+ fileName
      };
      res.json( generalResponse( return_data ) );
    }
  });
AWS.config.region='us-east-1';
AWS.config.accessKeyId='akaipmglj7bhqlgm3ja';
AWS.config.secretAccessKey='';
var bucketName=“丹尼尔视频商店”
var s3bucket=new AWS.S3();
变量s3_参数={
Bucket:bucketName,
关键字:文件名,
过期:60,//60分钟后过期
ContentType:file.type,
ACL:“公共读取”,
};
s3bucket.getSignedUrl('putObject',s3_参数,函数(err,data){
如果(错误){
console.log(“发生服务器错误”)
控制台日志(err);
}
否则{
var返回\u数据={
requestUrl:数据,
imageUrl:'https://'+bucketName+'.s3.amazonaws.com/'+fileName
};
res.json(generalResponse(return_data));
}
});

正如您所看到的,响应中的访问id与我在sdk参数中指定的不同。resopnse中的一个是akai5l2c5cjpgacbioa,而我指定的一个在上面的代码中显示。事实上,我在resopnse中不认识那个访问id。这可能是我得到403错误的问题吗?或者请求和响应的ID开关是否正常?如果是,是什么导致访问ID错误

在Javascript SDK中,我在AWS.config对象中看不到for accessKeyId和secretAccessKey

存在一个凭据对象

AWS.config.credentials = new AWS.Credentials('akid', 'secret', sessionToken = null));
SDK将在四个位置查找凭据。我假设您的凭证文件中的默认访问密钥是akai5l2c5cjpgacbioa

  • 静力学变量

  • 环境变量,导出AWS\u访问\u密钥\u ID=

  • 凭据文件,~/.aws/Credentials


  • 检查第三步修复了问题。那是一把错误的钥匙。谢谢