Localstack签署了s3上传文件

问题描述

我有一个项目here,它是有效的签名URL S3上传器(在实际的S3上。)在localstack上,出现500错误,并且当我尝试上传文件时,日志显示此错误:

2020-09-24 11:01:46,055:API: Error on request:
Traceback (most recent call last):
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/werkzeug/serving.py",line 323,in run_wsgi
    execute(self.server.app)
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/werkzeug/serving.py",line 312,in execute
    application_iter = app(environ,start_response)
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/moto/server.py",line 167,in __call__
    return backend_app(environ,start_response)
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/flask/app.py",line 2464,in __call__
    return self.wsgi_app(environ,line 2450,in wsgi_app
    response = self.handle_exception(e)
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/flask_cors/extension.py",line 161,in wrapped_function
    return cors_after_request(app.make_response(f(*args,**kwargs)))
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/flask/app.py",line 1867,in handle_exception
    reraise(exc_type,exc_value,tb)
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/flask/_compat.py",line 39,in reraise
    raise value
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/flask/app.py",line 2447,in wsgi_app
    response = self.full_dispatch_request()
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/flask/app.py",line 1952,in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/flask_cors/extension.py",line 1821,in handle_user_exception
    reraise(exc_type,line 1950,in full_dispatch_request
    rv = self.dispatch_request()
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/flask/app.py",line 1936,in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/moto/core/utils.py",line 146,in __call__
    result = self.callback(request,request.url,{})
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/moto/s3/responses.py",line 237,in ambiguous_response
    return self.bucket_response(request,full_url,headers)
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/moto/s3/responses.py",line 246,in bucket_response
    response = self._bucket_response(request,line 284,in _bucket_response
    body = body.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

要使其像真正的S3一样工作,我需要做些什么?

解决方法

我会回答我自己的问题。是localstack/issues#1410My example 现在可以使用了。

它的缺点是将 s3ForcePathStyle: true 添加到选项中,因此它可以正确生成签名 URL

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...