Node.js中AWS SDK删除S3对象遇AccessDenied权限问题
S3删除对象AccessDenied问题排查
我使用的Access Key对应的用户已被加入拥有AmazonS3FullAccess权限的组,此前也尝试过直接为该用户附加该权限,但均未生效。我已尝试网络及Stack Overflow上的所有解决方案,调用AWS SDK删除S3对象时仍出现AccessDenied错误。
Node.js S3配置代码
require("dotenv").config(); const multer=require("multer"); const path=require("path"); const S3 = require('aws-sdk/clients/s3') const fs=require("fs"); const bucketName=process.env.AWS_BUCKET_NAME; const region=process.env.AWS_BUCKET_REGION; const accessKeyId=process.env.AWS_ACCESS_KEY; const secretAccessKey=process.env.AWS_SECRET_KEY const s3=new S3({ region, accessKeyId, secretAccessKey, signatureVersion: "v4" }); function uploadFile(file){ const fileStream=fs.createReadStream(file.path); const uploadParams={ Bucket:bucketName, Body:fileStream, Key:file.filename } return s3.upload(uploadParams).promise(); } module.exports = {uploadFile, s3, bucketName}
删除对象代码
const params={ Bucket: bucketName, Key:req.body.image } s3.deleteObject(params, function(err,data){ if(err){ throw err } })
存储桶策略
{ "Version": "2012-10-17", "Id": "Policy1674235426665", "Statement": [ { "Sid": "Stmt1674235419839", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::secondhandsellit/*" } ] }
错误信息
C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\request.js:31 throw err; ^ AccessDenied: Access Denied at Request.extractError (C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\services\s3.js:711:35) at Request.callListeners (C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\sequential_executor.js:106:20) at Request.emit (C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\sequential_executor.js:78:10) at Request.emit (C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\request.js:686:14) at Request.transition (C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\request.js:22:10) at AcceptorStateMachine.runTo (C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\state_machine.js:14:12) at C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\state_machine.js:26:10 at Request.<anonymous> (C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\request.js:38:9) at Request.<anonymous> (C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\request.js:688:12) at Request.callListeners (C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\sequential_executor.js:116:18) at Request.emit (C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\sequential_executor.js:78:10) at Request.emit (C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\request.js:686:14) at Request.transition (C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\request.js:22:10) at AcceptorStateMachine.runTo (C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\state_machine.js:14:12) at C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\state_machine.js:26:10 at Request.<anonymous> (C:\Users\rohit\OneDrive\Desktop\code\secondhandsellit\node_modules\aws-sdk\lib\request.js:38:9) { code: 'AccessDenied', region: null, time: 2023-01-20T17:26:29.116Z, requestId: 'GXSSWPSSGXDBEXRJ', extendedRequestId: '/KDF6gAGAnevZQ/qh2ttGAyYPJoQ5ePX07rEg0OikBhP+X/sGxUeWS08cWTIJTySipdAgxbcKeM=', cfId: undefined, statusCode: 403, retryable: false, retryDelay: 37.277269050256145 }
内容的提问来源于stack exchange,提问作者Rohit Nohwar
相关产品推荐
相关产品推荐

