该问题可能是由于 S3 桶的访问权限问题导致的。在代码中使用 GetPreSignedUrl 方法来获取图像的预签名 URL 时,需要在请求中添加正确的访问密钥和权限。此外,还需要确保图像对象的 ACL(Access Control List)设置为公共读取权限。
以下是一个示例代码片段,可以作为参考:
import boto3 from botocore.client import Config
s3 = boto3.client('s3', config=Config(signature_version='s3v4'), region_name='your_region_name', aws_access_key_id='your_aws_access_key_id', aws_secret_access_key='your_aws_secret_access_key')
bucket_name = 'your_bucket_name' object_key = 'your_object_key'
response = s3.generate_presigned_url(ClientMethod='get_object', Params={'Bucket': bucket_name, 'Key': object_key}, ExpiresIn=3600, HttpMethod='GET')
print('Your pre-signed URL is:') print(response)
如果你仍然无法获取正确的图像下载,请检查图像对象的 ACL,并确保访问密钥和权限已正确设置。