0

我的配置(非常基本):

        设置.py
        AWS_S3_REGION_NAME = 'eu-west-3'
        AWS_S3_FILE_OVERWRITE = 假
        # S3_USE_SIGV4 = True # 如果使用,没有任何变化
        # AWS_S3_SIGNATURE_VERSION = "s3v4" # 如果使用,没有任何变化
        AWS_ACCESS_KEY_ID = "xxx"
        AWS_SECRET_ACCESS_KEY = "xxx"
        AWS_STORAGE_BUCKET_NAME = 'xxx'
        # AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com' # 如果使用,没有预签名的 url
        AWS_DEFAULT_ACL = '私人'
        AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
        AWS_LOCATION = 'xxx'
        DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
        
        安装应用程序 = [
           ...,
           “存储”
        ]
        
        模型.py
        类 ProcessStep(模型。模型):
            icon = models.FileField(upload_to="photos/process_icons/")

我得到什么:

  1. 生成预签名的 url(在管理页面中icon.url和自动在管理页面上)
  2. 预签名的 url 响应状态码 = 403(禁止)
  3. 如果打开,SignatureDoesNotMatch错误。带文字:The request signature we calculated does not match the signature you provided. Check your key and signing method.

试过:

  • 更改访问密钥(根和 IAM)
  • 改变桶区域
  • 为字段创建单独的存储对象icon(相同的错误 SignatureDoesNotMatch)
  • 更改 django-storages 包版本(目前使用最新的 1.11.1)

观点:

  • boto3 客户端generate_presigned_url返回带有无效签名的 url

问题:

  1. 我应该怎么办?
  2. 为什么我会收到错误消息?
4

1 回答 1

-2

耐心是一种美德!

一个人可能要等待 1 天才能让一切正常工作

于 2021-02-16T12:56:53.410 回答