Получение 403 запрещено при загрузке файла в области DO с использованием Node + Express - PullRequest
3 голосов
/ 30 мая 2020

Я пытаюсь загрузить файл в пространство DO s3, используя Node + Express. Но у меня возникает запрещенная проблема 403.

Ниже приведен исходный код моей загрузки.

const aws = require('aws-sdk')
const multer = require('multer')
const multerS3 = require('multer-s3')

const space_ep = new aws.Endpoint('nyc3.digitaloceanspaces.com')
const s3 = new aws.S3({
    endpoint: space_ep,
    accessKeyId: 'my-access-key',
    secretAccessKey: 'my-secret-access-key'
})

const uploader = multer({
    storage: multerS3({
        s3: s3,
        bucket: 'my-bucket',
        acl: 'public-read',
        key: function(request, file, cb) {
            console.log(file)
            cb(null, file.originalname)
        }
    })
}).array('upload', 1)

export function upload(req, res, next) {
    uploader(req, res, function(error) {
        if (error) {
            console.log(error)
            return res.redirect('/error')
        }
        console.log('upload success')
        response.redirect('/success')
    })
}

...

let router = require('express').Router()

router.post('/upload', upload)

И когда я пытаюсь загрузить, я получаю сообщение об ошибке в консоли, как показано ниже

{ UserSuspended: null
    at Request.extractError (path\node_modules\aws-sdk\lib\services\s3.js:831:35)
    at Request.callListeners (path\node_modules\aws-sdk\lib\sequential_executor.js:106:20)
    at Request.emit (path\node_modules\aws-sdk\lib\sequential_executor.js:78:10)
    at Request.emit (path\node_modules\aws-sdk\lib\request.js:683:14)
    at Request.transition (path\node_modules\aws-sdk\lib\request.js:22:10)
    at AcceptorStateMachine.runTo (path\node_modules\aws-sdk\lib\state_machine.js:14:12)
    at path\node_modules\aws-sdk\lib\state_machine.js:26:10
    at Request.<anonymous> (path\node_modules\aws-sdk\lib\request.js:38:9)
    at Request.<anonymous> (path\node_modules\aws-sdk\lib\request.js:685:12)
    at Request.callListeners (path\node_modules\aws-sdk\lib\sequential_executor.js:116:18)
  message: null,
  code: 'UserSuspended',
  region: null,
  time: 2020-05-30T07:00:19.383Z,
  requestId: 'tx000000000000011987442-005ed20482-21a2fa-nyc3b',
  extendedRequestId: undefined,
  cfId: undefined,
  statusCode: 403,
  retryable: false,
  retryDelay: 17.163587715908,
  storageErrors: [] }

Как я могу исправить эту проблему?

В чем причина?

Помогите, пожалуйста.

С уважением

1 Ответ

3 голосов
/ 11 июня 2020

ОК. Я решил это.

Мой исходный код не был проблемой.

Я связался со службой поддержки DO, и они решили свою проблему и сказали мне попробовать еще раз.

После этого я успех.

...