我正在考虑注册 Amazon S3 存储服务。
我想要做的是创建一项服务,让其他人可以注册自己的具有一定存储空间的存储桶。
这些用户会安装我的软件,然后上传他们的文件。当然,用户只能上传他们付费的内容。
为了实现这一点,我想为每个客户创建一个单独的存储桶,每个存储桶都有自己的属性。问题 1:使用 API 可以实现这一点吗?怎样实现?
这意味着安装的软件必须具有上传到我的 Amazon S3 帐户所需的权限。问题 2:我可以为每个存储桶或客户创建单独的身份验证 ID,以便他们只能按照我设置的限制进行上传吗?
重要信息:我是欧洲居民,不能在美国做生意,这意味着我不能使用亚马逊的 DevPay 服务。
更新:亚马逊似乎有 100 个存储桶的限制。这似乎不是我的服务。http://seocracy.com/2009/08/amazon-s3-bucket-limit/
提前致谢。
答案1
您始终可以将存储桶隐藏在虚拟化应用程序(HTTP 前端、FTP 前端或自定义应用程序)后面。但这意味着您必须消耗 CPU(可能在 EC2 实例上)来映射这些请求并将字节复制入/出这些 S3 存储桶。
直接向用户公开 S3 存储桶必须遵循S3 安全规则:
如何控制对存储在 Amazon S3 上的数据的访问?
客户可以使用三种机制来控制对 Amazon S3 资源的访问:存储桶策略、访问控制列表 (ACL) 和查询字符串身份验证。使用存储桶策略,公司可以定义广泛适用于对其 Amazon S3 资源的所有请求的规则,例如授予对 Amazon S3 资源子集的写入权限。客户还可以根据请求的某个方面(例如 HTTP 引用者和 IP 地址)限制访问。使用 ACL,客户可以为特定用户授予单个存储桶或对象的特定权限(即 READ、WRITE、FULL_CONTROL)。使用查询字符串身份验证,客户可以创建仅在有限时间内有效的 Amazon S3 对象的 URL。