aws签名版本4为lowhaio签名,但带有unsigned-payload
lowhaio-aws-sigv4-unsigned-payload的Python项目详细描述
lowhaio-aws-sigv4-无符号有效载荷
aws签名版本4为lowhaio签名,但具有未签名的有效负载。这避免了在上传到s3之前将整个对象缓冲到内存中。但是,在开始上载之前,必须知道对象的长度。
安装
pip install lowhaio lowhaio_aws_sigv4_unsigned_payload
用法
从lowhaio.Pool
返回的request
函数必须用lowhaio_aws_sigv4_unsigned_payload.signed
包装,如下例所示。
importosfromlowhaioimportPoolfromlowhaio_aws_sigv4_unsigned_payloadimportsignedrequest,_=Pool()chunk='abcdefghijklmnopqrstuvqxyz'content_length=str(len(chunk)*1000).encode()asyncdefbody():for_inrange(0,1000)yieldchunk# A coroutine that returns a tuple a tuple of access key id, secret access# key, any other headers, such as x-amz-security-tokenasyncdefcredentials():returnos.environ['AWS_ACCESS_KEY_ID'],os.environ['AWS_SECRET_ACCESS_KEY'],()signed_request=request(request,credentials=credentials,service='s3',region='eu-west-1',)code,headers,body=awaitsigned_request(b'PUT','https://my-bucket.s3-eu-west-1.amazonaws.com/my-key',body=bodyheaders=((b'content-length':content_length),))awaitbuffered(body)