2010-12-17 134 views
1

我有这样的问题: 我有Droplr-like的Adobe AIR应用程序,它将文件上传到远程位置并返回这些文件的短链接。我想将所有这些文件上传到Amazon S3。但是,由于它是Adobe AIR应用程序,并且每个人都可以看到它的源代码(和S3 API密钥),所以我不能将文件直接上传到Amazon S3。据我了解,如果有人从应用程序的源代码获取API密钥,他将能够将文件上传到我的S3帐户,我将为此付费。 我想通过将文件从应用程序上传到我的服务器来解决此问题,PHP脚本会将它们上传到Amazon S3。就像一个代理。但这将是双重交通和缓慢的操作。关于Amazon S3

回答

2

另一种选择是您可以使用签名的URL。您的应用程序可以从您的服务器请求上传URL。然后,您的服务器会生成一个签名的URL,以便将其发送回用于上载文件的应用程序。您还可以在已签名的上传URL上设置到期时间。

+0

问题是我有Adobe AIR应用程序,每个人都可以看到它的来源。所以他们可以复制服务器返回签名URL的URL并使用它。 – Sbioko 2010-12-17 16:45:21

+0

你不把你的钥匙放在应用程序中。您的应用程序会打电话给您的服务器(其中包含密钥),并且服务器会以应用程序用于文件上传的经过签名的上载url进行响应。 – 2010-12-17 16:55:09

+0

它是即时完成的,并且您将URL设置为在您指定的时间后过期。 (可能需要10分钟才能上传文件?)您不会将该URL存储在应用程序中。例如: – 2010-12-17 16:56:48

1

blog article谈论保持AWS证书的秘密。虽然它主要覆盖EC2,但也有一些关于S3的内容。

+0

http://transloadit.com/ - 这是如何工作的?我认为它首先上传文件到他们的服务器,然后到S3。 – Sbioko 2010-12-17 16:38:27

0

另一种方法是令牌自动贩卖机,你可以运行,使移动和其他客户端应用程序,以获得临时凭证不泄露或在您的应用程序中嵌入您的帐户凭据的应用程序。你可以阅读更多关于TVM方法在这里:

http://aws.amazon.com/articles/4611615499399490