生成预签名链接
generate_presigned_url接口为一个指定对象生成一个预签名的下载链接,访问该链接可以直接下载该对象。
代码示例,
def generate_getobject_presigned_url(self):
print('generate_getobject_presigned_url')
key = 'ExampleObject.txt'
url = self.s3_client.generate_presigned_url(
ClientMethod='get_object',
Params={'Bucket': self.bucket, 'Key': key},
ExpiresIn=900)
print(url)
参数如下:
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Params: ‘Bucket’ | 字符串 | bucket的名称 | 是 |
Params: ‘Key’ | 字符串 | 对象的key | 是 |
ExpiresIn | 整型 | 超时时间(秒) | 否,默认3600秒 |
generate_presigned_url接口为一个指定对象生成一个预签名的上传链接,生成的URL可以直接使用put方法上传文件。
代码示例,
def generate_putobject_presigned_url(self):
print('generate_putobject_presigned_url')
key = 'ExampleObject.txt'
url = self.s3_client.generate_presigned_url(
ClientMethod='put_object',
Params={'Bucket': self.bucket, 'Key': key},
ExpiresIn=900)
print(url)
上传文件示例,
import requests
def upload_object_by_presigned_url():
bucket = 'YOUR_BUCKET_NAME'
key = 'random_string4.txt'
try:
url = s3_client.generate_presigned_url(
ClientMethod='put_object',
Params={'Bucket': bucket, 'Key': key},
ExpiresIn=3600)
# client get the url and upload object by presigned url
with open('random_string.txt', 'rb') as f:
resp = requests.put(url, data=f)
logging.info(resp)
except (ClientError, IOError, requests.HTTPError) as e:
ogging.error(e)
参数如下:
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Params: ‘Bucket’ | 字符串 | bucket的名称 | 是 |
Params: ‘Key’ | 字符串 | 对象的key | 是 |
ExpiresIn | 整型 | 超时时间(秒) | 否,默认3600秒 |