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

问题描述 投票:1回答:1

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

这里是我的Django代码:

Sttings.py:

AWS_ACCESS_KEY_ID ='*********'

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

AWS_STORAGE_BUCKET_NAME ='******'

AWS_REGION_NAME ='*******'

在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
        })
django-views pre-signed-url
1个回答
0
投票

我们需要创建一个用户并在AWS中授予getobject和putobject权限。文档https://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example3.html

© www.soinside.com 2019 - 2024. All rights reserved.