簡體   English   中英

使用 multer -s3 亞馬遜服務器圖片上傳錯誤訪問被拒絕

[英]using multer -s3 amazon server image upload error access denied

AccessDenied: Access Denied
    at Request.extractError (/home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/services/s3.js:524:35)
    at Request.callListeners (/home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
    at Request.emit (/home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
    at Request.emit (/home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/request.js:615:14)
    at Request.transition (/home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/request.js:22:10)
    at AcceptorStateMachine.runTo (/home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/state_machine.js:14:12)
    at /home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/state_machine.js:26:10
    at Request.<anonymous> (/home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/request.js:38:9)
    at Request.<anonymous> (/home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/request.js:617:12)
    at Request.callListeners (/home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/sequential_executor.js:115:18)
    at Request.emit (/home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
    at Request.emit (/home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/request.js:615:14)
    at Request.transition (/home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/request.js:22:10)
    at AcceptorStateMachine.runTo (/home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/state_machine.js:14:12)
    at /home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/state_machine.js:26:10
    at Request.<anonymous> (/home/cricket_game/node_modules/multer-s3/node_modules/s3fs/node_modules/aws-sdk/lib/request.js:38:9)

我通過訪問我在AWS網站中的S3賬戶解決了這個問題,並在“ Permissions選項卡下為公眾提供了full access Permissions (

順便說一句,不建議像 AWS 所說的那樣,但這是我找到的唯一方法,以便我完成它)

您需要使用 IAM 創建以下策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::your-bucket-name-here/*"
        }
    ]
}

即使我面臨同樣的問題,我也解決了。

對我來說,這個問題的原因是我一直在將 acl(訪問控制列表)密鑰acl: 'public-read'傳遞給 multerS3 對象參數。

ACL 密鑰區分大小寫,而不是使用acl: 'public-read' using ACL: 'public-read'工作正常。

如果您沒有在 multerS3 對象參數中傳遞 ACL 屬性,則可以。

如果未指定 ACL,則默認使用ACL: 'private'存儲文件ACL: 'private'

AWS 支持以下選項:

ACL:私有 | 公眾閱讀| 公共讀寫| aws-exec-read | 認證讀取| 桶所有者閱讀| 桶所有者完全控制

帶有acl (訪問被拒絕)的multerS3:

var upload = multer({
   storage: multerS3({
        s3: s3,
        acl: 'public-read',
        bucket: BucketName,
        key: function (req, file, cb) {
            cb(null, new Date().toISOString() + '-' + file.originalname);
        }
    })
});

帶有ACL 的multerS3(工作正常):

var upload = multer({
    storage: multerS3({
        s3: s3,
        ACL: 'public-read',
        bucket: BucketName,
        key: function (req, file, cb) {
            cb(null, new Date().toISOString() + '-' + file.originalname);
        }
    })
});

您的 s3 存儲桶可能沒有公共訪問權限。 您可以為您的 s3 存儲桶提供公共訪問權限(不是首選),否則您可以設置 CloudFront 分發並提供對該分發的必要訪問權限(首選),請遵循本指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM