这个问题可能是由于使用AWS SDK生成的预签名URL格式不正确导致的。以下是正确的代码示例,可以用于生成可读取对象的正确预签名URL:
import boto3
from botocore.client import Config
s3 = boto3.client('s3', config=Config(signature_version='s3v4'))
bucket_name = 'your-bucket-name'
object_key = 'your-object-key'
expires_in_seconds = 3600 # One hour
response = s3.generate_presigned_url(
ClientMethod='get_object',
Params={
'Bucket': bucket_name,
'Key': object_key
},
ExpiresIn=expires_in_seconds,
HttpMethod='GET'
)
print(response)
您可以设置 signature_version
参数来确保生成的预签名URL的格式正确。