我有一个带有 Devise、AWS S3 和 Highcharts 的 rails 应用程序设置。
目前用户可以登录并上传文本文件到 S3。然后,Rails 直接从 AWS 请求数据并将其传递给 Highcharts 进行处理——生成一个漂亮漂亮的图表。但是,用户目前可以查看已上传的每条数据。
我不确定如何在用户与其各自上传的对象之间建立关系。在 S3 中“范围”数据的最佳方式是什么,以便用户只能看到他们上传的数据?我假设这是通过 AWS ACL 完成的?
我有一个带有 Devise、AWS S3 和 Highcharts 的 rails 应用程序设置。
目前用户可以登录并上传文本文件到 S3。然后,Rails 直接从 AWS 请求数据并将其传递给 Highcharts 进行处理——生成一个漂亮漂亮的图表。但是,用户目前可以查看已上传的每条数据。
我不确定如何在用户与其各自上传的对象之间建立关系。在 S3 中“范围”数据的最佳方式是什么,以便用户只能看到他们上传的数据?我假设这是通过 AWS ACL 完成的?
S3 存储桶 ACL 旨在整体控制对 AWS 账户和匿名请求的存储桶访问,如此处所述。因此,我认为 ACL 不适用于您的用例。
更好的解决方案可能是IAM 策略。这里的想法是为您的应用程序中注册的每个帐户创建一个新的 IAM 用户。这可以很容易地以编程方式完成。然后,沿着某条线破坏您的存储桶的命名空间,也许是 account_id:
s3://mybucket/account1/
s3://mybucket/account2/
s3://mybucket/account3/
...
在创建账户时,构建一个 IAM 策略,仅授予对该账户文件夹的RW 访问权限。
我实际上并没有为您的用例尝试过这个,但我相当有信心它会起作用。IAM 也是免费的,一旦您弄清楚亚马逊资源的命名方式,它的 API 就非常容易使用。更多细节在 API 文档中。