Python中文
首页
教程
问答
标签
搜索
登录
注册
有没有办法使用AWS签名的URL来执行多部分上传?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在为一个服务编写一个客户端,该服务为上传提供一个签名的url。对于较小的上传来说,这样做很好,但是对于较大的上传则失败,因为使用多部分上传会有好处。在</p> <p>授权文档建议我可以在URL中或通过授权头使用提供的签名和访问密钥id。我尝试过使用头方法来启动多部分上传,但是访问被拒绝。当我使用查询字符串方法时,我得到了一个不允许的方法(在本例中是POST)。在</p> <p>我使用boto来生成URL。例如:</p> <pre><code>import boto c = boto.connect_s3() bucket = c.get_bucket('my-bucket') key = boto.s3.key.Key(bucket, 'my-big-file.gz') signed_url = key.generate_url(60 * 60, 'POST') # expires in an hour </code></pre> <p>然后,当尝试使用签名的URL启动多部分上载时,我将执行以下操作:</p> ^{pr2}$ <p>这将返回一个不允许的方法。在</p> <p>这个策略可行吗?有没有更好的方法可以向特定资源提供有限的凭据,以便允许进行大规模的多部分上载?在</p> <p><strong>更新</strong></p> <p>我设法找到了一个稍微更具体的错误,使我认为这是不可能的。不幸的是,我收到了403,说签名与请求不匹配。在</p> <pre><code><?xml version="1.0" encoding="UTF-8"?> <Error> <Code>SignatureDoesNotMatch</Code> <Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message> <StringToSignBytes>.../StringToSignBytes> <RequestId>...</RequestId> <HostId>...</HostId> <SignatureProvided>...</SignatureProvided> <StringToSign>POST 1402941975 /my-sandbox/test-mp-upload.txt?uploads</StringToSign> <AWSAccessKeyId>...</AWSAccessKeyId> </Error> </code></pre> <p>这使我认为我不能使用签名的URL,因为签名不匹配。在</p> <p><strong>更新</strong></p> <p>我认为使用签名的URL进行多部分上传是不合理的。虽然我怀疑这在技术上是可能的,但并不实用。原因是签名的URL需要URL、头和请求方法完全匹配,才能按预期工作。由于多部分上载需要初始化上载、上载每个部分并完成(或取消)上载,因此为每个步骤生成URL会有些痛苦。在</p> <p>在bucket中找到一个联合令牌来提供读/写访问。这最终变得更加实际和简单,因为我可以立即使用boto,就像我有证书一样。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>为了回答我自己的问题,最好的选择是使用安全令牌服务来生成一组临时凭据。可以提供策略描述来将凭据限制为特定的bucket和key。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
10 回答
无法使用Django\u mssql\u后端迁移到外部hos
3 回答
无法使用Django&Python3.4连接到MySql
3 回答
无法使用Django+nginx上载媒体文件
1 回答
无法使用Django1.6导入名称模式
5 回答
无法使用Django1.7和mongodb登录管理站点
2 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
4 回答
无法使用Djangockedi验证CBV中的字段
2 回答
无法使用Djangocketditor上载图像(错误400)
10 回答
无法使用Djangocron进行函数调用
10 回答
无法使用Djangofiler djang上载文件
3 回答
无法使用Djangokronos
9 回答
无法使用Djangomssql provid
3 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
1 回答
无法使用Djangomssq迁移Django数据库
9 回答
无法使用Djangonox创建用户
3 回答
无法使用Djangopyodb从Django查询SQL Server
5 回答
无法使用Djangopython3ldap连接到ldap
10 回答
无法使用Djangoredis连接到redis
10 回答
无法使用Django中的FK创建新表
6 回答