AWS mp3 文件上传间歇性失败

AWS mp3 file upload is failing intermittently

我遇到了使用 express-fileupload 将 mp3 文件上传到 S3 存储桶的问题。对于大多数用户,它工作正常,但对于某些用户,md5 在上传时不匹配,因此上传失败。我正在使用以下代码上传文件。

export const uploadFileToS3Bucket = async (fileToUpload, fileId, subKey) => {
  const fileExtension = fileToUpload.name.split(".");

  const s3Bucket = new AWS.S3({
    accessKeyId: AppConstants.S3_UPLOAD_ACCESS_ID,
    secretAccessKey: AppConstants.S3_UPLOAD_ACCESS_KEY,
    region: AppConstants.S3_REGION,
  });

  const key = `${subKey}/${fileId}.${fileExtension[fileExtension.length - 1]}`;

  const params = {
    Bucket: BucketName,
    Key: key,
    Body: fileToUpload.data,
    ContentType: fileToUpload.mimetype,
    ACL: "public-read",
    ContentMD5: fileToUpload.md5,
  };

  return new Promise((resolve, reject) => {
    s3Bucket.upload(params, (err, data) => {
      if (err) {
        reject(err);
      } else {
        resolve(data.Location);
      }
    });
  });
};

我们发现了一个问题,即我们没有在部署的 PM2 实例之间保持用户粘性。因此,如果我们从实例 1 发送请求,则响应有机会被实例 2 接收,导致上传出现问题。我们启用了用户粘性,这解决了问题。