要生成带有MD5检查的预签名URL,您可以使用以下Python代码示例:
import boto3
import hashlib
from botocore.client import Config
def generate_presigned_url_with_md5(bucket, key, expires_in):
s3_client = boto3.client('s3', config=Config(signature_version='s3v4'))
# 生成预签名URL
presigned_url = s3_client.generate_presigned_url(
ClientMethod='get_object',
Params={
'Bucket': bucket,
'Key': key,
'ResponseContentDisposition': 'attachment; filename={}'.format(key),
'ResponseContentType': 'application/octet-stream',
'ResponseContentLanguage': 'en',
'ResponseExpires': expires_in
}
)
# 计算MD5哈希值
response = s3_client.get_object(
Bucket=bucket,
Key=key
)
object_data = response['Body'].read()
md5_hash = hashlib.md5(object_data).hexdigest()
# 将MD5哈希值添加到URL的查询参数中
presigned_url_with_md5 = presigned_url + '&md5=' + md5_hash
return presigned_url_with_md5
# 示例用法
bucket = 'your-bucket-name'
key = 'your-object-key'
expires_in = 3600 # 预签名URL的有效期(秒)
presigned_url_with_md5 = generate_presigned_url_with_md5(bucket, key, expires_in)
print(presigned_url_with_md5)
请注意,您需要将上述代码中的your-bucket-name
和your-object-key
替换为实际的S3存储桶名称和对象键。此外,您还可以根据需要调整其他参数,如ResponseContentDisposition
、ResponseContentType
等。
生成的预签名URL将包含一个名为md5
的查询参数,其值为文件的MD5哈希值。您可以在验证URL时使用该MD5哈希值进行检查。
上一篇:AWS S3 上传文件名称不匹配