在使用AWS S3预签名URL时,如果遇到在新桶上返回签名不匹配的错误,有可能是由于新桶中没有权限而导致的。为了解决这个问题,需要在创建新桶时添加正确的权限。
以下是解决方法的示例代码:
import boto3
s3 = boto3.client('s3')
bucket_name = 'my-new-bucket'
# create new bucket with the correct permission
s3.create_bucket(Bucket=bucket_name, ACL='public-read')
# generate pre-signed URL for GET operation
url = s3.generate_presigned_url('get_object', Params={'Bucket': bucket_name, 'Key': 'my-object'}, ExpiresIn=3600)
# attempt to retrieve URL content using requests library
import requests
response = requests.get(url)
# check response status code and content
print(response.status_code)
print(response.content)
以上代码示例中,我们首先使用AWS SDK创建一个新的桶并将其权限设置为public-read。然后,我们使用AWS SDK生成GET操作的预签名URL。最后使用python的requests库尝试获取URL的内容,以进行进一步验证。