ceph rgw 构造一次 post 请求

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>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值