生成预签名链接

生成预签名下载链接

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秒