aws S3 bucket: внутренняя ошибка сервера 500 при загрузке POST-файла из браузера - PullRequest
0 голосов
/ 27 февраля 2020

Я получаю InternalError Мы столкнулись с внутренней ошибкой. Пожалуйста, попробуйте еще раз. при выполнении загрузки данных формы POST в корзину s3.

Конфигурация S3:

const attachmentBucket = new Bucket(this, 'caS3Bucket', {
  bucketName: environmentName + '.caattachments',
  cors: [{
    allowedMethods: [HttpMethods.GET, HttpMethods.POST],
    allowedOrigins: ['*'],
    allowedHeaders: ['*'],
    maxAge: 3000
  } as CorsRule]
} as BucketProps);

Предварительная подпись URL-адреса загрузки через лямбду:

const params = {
  Bucket: process.env.S3_BUCKET!.split(':')[5],
  Fields: {
    key: payload.path,
    acl: 'public-read'
  },
  Expires: 3600
};

const postData = await new Promise(resolve => {
  s3.createPresignedPost(params, (err, data) => {
    resolve(data);
  });
}) as AWS.S3.PresignedPost;

Я добавляю все параметры в postData.fields в форму ввода с помощью файл. Есть ли способ отладить это?

1 Ответ

0 голосов
/ 29 февраля 2020

Проблема заключалась в том, что в форме отсутствовало поле «Политика». Я sh aws ошибки были более наглядными. Окончательная рабочая форма поля выглядит так:

const formData: FormData = new FormData();

formData.append('key', uploadData.fields.key);
formData.append('acl', uploadData.fields.acl);
formData.append('bucket', uploadData.fields.bucket);
formData.append('X-Amz-Algorithm', uploadData.fields.algorithm);
formData.append('X-Amz-Credential', uploadData.fields.credential);
formData.append('X-Amz-Date', uploadData.fields.date);
formData.append('X-Amz-Security-Token', uploadData.fields.token);
formData.append('Policy', uploadData.fields.policy);
formData.append('X-Amz-Signature', uploadData.fields.signature);
formData.append('file', file, file.name);
...