1、这时可以用S3
协议的Presigned URLs
来实现无鉴权读写操作。
2、使用boto3构造预授权
import boto3
import json
s3 = boto3.client("s3")
"""
Bucket:预授权桶
Key:预授权对象名称,这个Key是固定的,上传后就是这个名称
ExpiresIn:多长时间内有效 单位 秒
"""
res = s3.generate_presigned_post(Bucket="test", Key="test", ExpiresIn=3600)
print json.dumps(res, sort_keys=True, indent=4, default=str)
打印信息如下:
{
"fields": {
"AWSAccessKeyId": "test",
"key": "test",
"policy": "eyJjb25kaXRpb25zIjogW3siYnVja2V0IjogInBldGVyIn0sIHsia2V5IjogImVudi5weSJ9XSwgImV4cGlyYXRpb24iOiAiMjAyMS0wOS0yNFQxMTozMTowNFoifQ==",
"signature": "dYUkPamt24As8CSps6j5QaTO+lg="
},
"url": "http://192.168.231.232:8082/peter"
}
3、根据上面返回的信息,填写下面的表单运行提交即可
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<!-- Copy the 'url' value returned by S3Client.generate_presigned_post() -->
<form action="http://192.168.1.1:123/test" method="post" enctype="multipart/form-data">
<!-- Copy the 'fields' key:values returned by S3Client.generate_presigned_post() -->
<input type="hidden" name="key" value="test" />
<input type="hidden" name="AWSAccessKeyId" value="test" />
<input type="hidden" name="policy" value="eyJjb25kaXRpb25zIjogW3siYnVja2V0IjogInBldGVyIn0sIHsia2V5IjogImVudi5weSJ9XSwgImV4cGlyYXRpb24iOiAiMjAyMS0wOS0yNFQxMTozMTowNFoifQ==" />
<input type="hidden" name="signature" value="dYUkPamt24As8CSps6j5QaTO+lg=" />
File:
<input type="file" name="file" /> <br />
<input type="submit" name="submit" value="Upload to Amazon S3" />
</form>
</body>
</html>