有没有办法在不使用适用于Android的AWS SDK的情况下在Android应用程序上进行多部分上传到我的S3存储桶?

时间:2014-05-14 11:59:34

标签: java android amazon-web-services amazon-s3

首先考虑最简单的方法是使用SDK,这似乎很奇怪,但它不是我的选择。原因是,我实际上正在构建第三方API并允许将文件上传到我的存储桶。

第一个使用我的API的人是一个Android应用程序,我想知道如何实现这一目标的最佳方法。

我无法向第三方开发者提供我的AWS凭据。

我已经在我的网站上使用跨源资源共享和已签名的请求对此进行了授权。在android上有类似的方法吗?

理想情况下我喜欢流程:

  1. 第三方应用程序向我发送文件信息,密钥等
  2. 我的API服务签署请求并将其发回。
  3. 然后,该应用会使用该请求上传文件。
  4. 这可以在Android上使用吗?

    我已经阅读了STS并创建了临时凭据,但是仍然没有按照签名请求方法允许我执行每个请求级别的权限。

1 个答案:

答案 0 :(得分:0)

您可以使用AWS为S3提供的基于浏览器的表单上载功能。即使用例被描述为浏览器上传,但它可以被任何http客户端轻松使用。

  1. 第三方客户端(Android等)呼叫您的服务器以创建上传政策

  2. 您的服务器通过进行AWS S3 API调用来创建签名策略(您可以使用SDK来执行此操作)。此策略可能允许上载S3中的特定密钥。

  3. Android客户端可以使用S3密钥,签名策略提交多部分数据。

    以下是HTML表单的示例(您可以轻松使用任何http客户端为Android App执行): http://docs.aws.amazon.com/AmazonS3/latest/dev/HTTPPOSTExamples.html

  4. 此方法只需要您共享IAM访问密钥,但不需要密钥。

    另一种选择是完全抽象S3并让您的服务器管理上传: