这可能是由于生成的URL的有效期过期,导致URL已失效。为解决这个问题,可以使用以下代码生成带有效期的Pre-Sign URL:
import boto3
from botocore.exceptions import ClientError
from datetime import datetime, timedelta
s3_client = boto3.client('s3')
bucket_name = 'my-bucket'
object_key = 'my-object'
expiration = datetime.utcnow() + timedelta(minutes=5)
try:
response = s3_client.generate_presigned_url(
'get_object',
Params={
'Bucket': bucket_name,
'Key': object_key
},
ExpiresIn=300
)
print(response)
except ClientError as e:
print(e)
在这个示例中,我们生成一个5分钟的有效期。如果您在获取下一个Presign URL时遇到此错误,请使用新的预设道理来生成另一个Presign URL。