Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 尝试上载到s3时,InvalidAccessKeyId无效_Node.js_Amazon S3_Aws Sdk_Multer_Multer S3 - Fatal编程技术网

Node.js 尝试上载到s3时,InvalidAccessKeyId无效

Node.js 尝试上载到s3时,InvalidAccessKeyId无效,node.js,amazon-s3,aws-sdk,multer,multer-s3,Node.js,Amazon S3,Aws Sdk,Multer,Multer S3,我正在使用aws sdk将文件上载到s3。我正在使用配置我的凭据 aws.config.update({ accessKeyId: aws.config.credentials.accessKeyId, secretAccessKey: aws.config.credentials.secretAccessKey, region: 'us-east-1' }); 然后使用multer-s3上传: 我不断收到的错误是我的访问密钥Id:您提供的AWS访问密钥Id在我们的记录中不存在 我

我正在使用aws sdk将文件上载到s3。我正在使用配置我的凭据

aws.config.update({
  accessKeyId: aws.config.credentials.accessKeyId,
  secretAccessKey: aws.config.credentials.secretAccessKey,
  region: 'us-east-1'
});
然后使用multer-s3上传:

我不断收到的错误是我的访问密钥Id:您提供的AWS访问密钥Id在我们的记录中不存在

我已经在我的aws帐户中创建了多个新的访问密钥,但都不起作用。我正在使用根用户访问密钥。我尝试了一个IAM用户,但仍然不起作用

我还在node server console.logs3中记录了我的aws凭据,它与我的aws安全凭据中的内容相匹配


如何正确配置aws凭据以上载到s3?

aws似乎无法找到您提供给aws配置的accessKey

验证您的配置

aws.config.update({
  accessKeyId: aws.config.credentials.accessKeyId,
  secretAccessKey: aws.config.credentials.secretAccessKey,
  region: 'us-east-1'
});
在此处阅读有关accessKeyId和secretAccessKey的更多信息:


我终于明白了。在multer对象中使用s3之前,我必须在初始化s3的地方设置访问键


我仍然不明白为什么以前的实现不再有效,但至少这种方法是有效的。

也许解决方案只适用于aws教育客户

添加访问令牌使其工作

注意:更新代码中的凭据和bucket变量

从“fs”导入fs; 从“AWS sdk”导入AWS; const aws\u access\u key\u id=ASICDENCJVVNVHV const aws_secret_access_key=xrLcJTh5xHsNRHFRFMFRFTRygO7evgyTZCuJ7KDa7HNgMg 常数s3=新的AWS.s3{ accessKeyId:aws\u access\u key\u id, secretAccessKey:aws\u secret\u access\u key, (7)参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源:参考资料来源于一一个4个4.4号GZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZQTE+n+vcgioY2/quQ2.B B B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBTR1BTBDK7YWPLAY9NBLAJIgIxAQy2OqNUfrbJtzD4aFBUlC0r/enzLO4PrPq/rOkvfR4di87kpcfJX/zPLkNHTXEdzz/2boCd69/uMIwi611yP }; //:MulterFile[] const uploadToS3=异步ls=>{ fs.readFile'/home/hari/learn/shakti/shaktiserver/src/image upload/ram.png',err,data=>{ 如果犯了错误,就扔出错误; const Body=JSON.stringifydata,null,2; s3.上传{ Bucket:AWS\u S3\u Bucket\u NAME,//传递您的Bucket名称 键:“ram.png”,//文件将另存为testBucket/contacts.csv ACL:“公共读取”, 身体:身体 },e,data=>{ 如果e抛出e console.log{data} console.log`文件已成功上载到${data.Location}` } } } 上传至3[]
配置似乎是正确的。IP地址是否与问题有关?我最近搬家了,在我的上一个住处一切都很好。AccessId没有绑定到ip地址,你能记录并比较它们吗?是的,日志确认它们与我aws帐户中的内容匹配。我甚至硬编码了钥匙,但仍然会出错。cli可以工作,这很奇怪,因为它会返回我的存储桶列表。AWS技术支持人员写道,您遇到的错误是由于先前的命令通过公开的根密钥root\u密钥授权到达S3存储桶。由于此密钥已被删除,它现在将阻止对bucket的访问,因为它已不存在。我不得不删除我的旧密钥并创建新密钥。我不知道如何授予新根密钥访问该存储桶的权限。一个重要注意事项:使用aws cli上载文件确实有效:aws s3 cp IMG_0041.jpg s3://my-match-v1/。我可以在我的bucket中看到这个文件,我的aws配置使用相同的密钥。我的节点服务器无法正常工作。请检查是否正在其他地方初始化AWS?
aws.config.update({
  accessKeyId: aws.config.credentials.accessKeyId,
  secretAccessKey: aws.config.credentials.secretAccessKey,
  region: 'us-east-1'
});
const s3 = new aws.S3({
  accessKeyId: ACCESS_KEY_ID // Set access key here
  secretAccessKey: SECRET_ACCESS_KEY,
});

const upload = multer({
  storage: multerS3({
    s3: s3, // Use s3 instance here
    bucket: 'my-match',
    acl: 'public-read',
    contentType: multerS3.AUTO_CONTENT_TYPE,
    key: function (req, file, cb) {
      const today = new Date();
      cb(null, file.originalname)
      console.log("file\n", file);
    }
  })
}).array('upl', 1);