【问题标题】:Get the error code 500 when I upload a file size > 1MB to S3 Bucket (Node.js)将大于 1MB 的文件上传到 S3 Bucket (Node.js) 时出现错误代码 500
【发布时间】:2022-12-09 11:10:56
【问题描述】:

当我想将大于 1MB 的文件上传到我公司网络中的 S3 存储桶时,我收到错误消息: (如果文件大小 < 1MB,上传文件正常)

500: null
    at Request.extractError (D:\GitClient\Remote\CloudPlatformWebAPI\node_modules\aws-sdk\lib\services\s3.js:711:35)
    at Request.callListeners (D:\GitClient\Remote\CloudPlatformWebAPI\node_modules\aws-sdk\lib\sequential_executor.js:106:20)
    at Request.emit (D:\GitClient\Remote\CloudPlatformWebAPI\node_modules\aws-sdk\lib\sequential_executor.js:78:10)
    at Request.emit (D:\GitClient\Remote\CloudPlatformWebAPI\node_modules\aws-sdk\lib\request.js:686:14)
    at Request.transition (D:\GitClient\Remote\CloudPlatformWebAPI\node_modules\aws-sdk\lib\request.js:22:10)
    at AcceptorStateMachine.runTo (D:\GitClient\Remote\CloudPlatformWebAPI\node_modules\aws-sdk\lib\state_machine.js:14:12)
    at D:\GitClient\Remote\CloudPlatformWebAPI\node_modules\aws-sdk\lib\state_machine.js:26:10
    at Request.<anonymous> (D:\GitClient\Remote\CloudPlatformWebAPI\node_modules\aws-sdk\lib\request.js:38:9)
    at Request.<anonymous> (D:\GitClient\Remote\CloudPlatformWebAPI\node_modules\aws-sdk\lib\request.js:688:12)
    at Request.callListeners (D:\GitClient\Remote\CloudPlatformWebAPI\node_modules\aws-sdk\lib\sequential_executor.js:116:18) {
  code: 500,
  region: null,
  time: 2022-11-22T09:07:55.279Z,
  requestId: null,
  extendedRequestId: undefined,
  cfId: undefined,
  statusCode: 500,
  retryable: true
}

我发现这个错误类似于这个问题(https://github.com/localstack/localstack/issues/1410), 但是在创建 s3 对象时尝试将 s3ForcePathStyle 设置为 true 后,我仍然遇到相同的错误。

这是我的代码:

const s3 = new AWS.S3({apiVersion: '2006-03-01', s3ForcePathStyle: true});
let result = await s3.upload( {Bucket: bucket_name, Key: file_path, Body: request.files.buffer}).promise();
// using upload and putObject api return same error
console.log(result);

但是如果我在家里运行代码,没有错误,文件上传成功。

在我的代码中,我将 NODE_TLS_REJECT_UNAUTHORIZED 设置为禁用以避免 ssl 证书问题,但仍然无法正常工作

process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0;

我也尝试在我的公司使用 AWS CLI COMMAND (aws s3api put-object ...),上传文件大小 > 1MB 工作正常!!

我不明白为什么我不能使用 node.js 代码在我的公司上传大于 1MB 的文件,AWS CLI 和 npm aws-sdk 库不是使用相同的协议吗?

我猜这个错误可能与我公司的环境有关,但 AWS CLI 运行良好。所以,我认为它可能可以解决我的代码中的问题,希望有人能提供帮助,非常感谢。

【问题讨论】:

    标签: node.js amazon-web-services amazon-s3


    【解决方案1】:

    最后,我尝试在创建 s3 对象时设置端点并删除 s3ForcePathStyle。

    它现在工作了!

    const s3 = new AWS.S3({apiVersion: '2006-03-01', endpoint: 's3.amazonaws.com'});
    

    但是我还是不知道为什么?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 2021-03-24
      • 2013-03-14
      • 2019-02-20
      • 2014-12-06
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多