boto3 generate_presigned_url SignatureDoesNotMatch

时间:2018-10-28 23:12:57

标签: python python-3.x amazon-web-services boto3

我想从Web应用程序中的S3下载文件。因此,我使用boto3 generate_presigned_url

创建了一个URL。
import boto3

s3Client = boto3.client(
    's3',
    region_name='eu-central-1',
    config=boto3.session.Config(signature_version='v4'),
    aws_access_key_id='xxxxxxxxxxxxxxx',
    aws_secret_access_key='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
)

url = s3Client.generate_presigned_url(
    'get_object',
    Params={'Bucket': 'bucketname', 'Key': 'test.txt'},
    ExpiresIn=100)

但始终会得到此错误消息:

<Error>
  <Code>SignatureDoesNotMatch</Code>
  <Message>The request signature we calculated does not match the
  signature you provided. Check your key and signing method.</Message>

有什么想法怎么办?

1 个答案:

答案 0 :(得分:0)

signature_version ='s3v4'对我有用。 如果使用signature_version ='v4'

,我也会遇到相同的错误
s3_client = boto3.client('s3', region_name=REGION, 
    config=Config(signature_version='s3v4'),
    aws_access_key_id=AWS_ACCESS_KEY_ID, 
   aws_secret_access_key=AWS_SECRET_ACCESS_KEY)