Django views 我们计算的请求签名与您提供的签名不匹配

Django views 我们计算的请求签名与您提供的签名不匹配,django-views,pre-signed-url,Django Views,Pre Signed Url,我想从aws获得预签名的url。但我得到错误:“我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法。” 这是我的django代码: Sttings.py: AWS_访问_密钥_ID='***********' AWS_SECRET_ACCESS_KEY='***********' AWS_存储_存储_存储_名称='********' AWS_地区_名称='********' 在views.py中: def post(self, request, key): bucket_n

我想从aws获得预签名的url。但我得到错误:“我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法。”

这是我的django代码:

Sttings.py:

AWS_访问_密钥_ID='***********'

AWS_SECRET_ACCESS_KEY='***********'

AWS_存储_存储_存储_名称='********'

AWS_地区_名称='********'

在views.py中:

def post(self, request, key):
    bucket_name = settings.AWS_STORAGE_BUCKET_NAME
    s3_client = boto3.client('s3',
                             aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
                             aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY,
                             config=Config(signature_version='s3v4'),
                             region_name=settings.AWS_REGION_NAME
                             )
    try:
        response = s3_client.generate_presigned_url('put_object',
                                                    Params={'Bucket': bucket_name,
                                                            'Key': key},
                                                    ExpiresIn=3600)
    except ClientError as e:
        return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR, data={"error_message": str(e)})
    else:

        return Response({
            "url": response
        })

我们需要在AWS中创建用户并授予getobject、putobject权限。文档

我们需要在AWS中创建用户并授予getobject、putobject权限。文档