【发布时间】:2018-05-26 15:34:35
【问题描述】:
好吧,我开始发疯了。我有一个 Web 应用程序,用户使用他们的 Cognito 用户帐户登录。用户可以创建包含许多不同信息的案例项目。只有案例项目的创建者和管理员(一个特殊的 Cognito 组)才能看到案例项目。我通过连接到 Lambda 函数的安全 API 网关解决了这个问题,我可以使用 Cognito ID 令牌来获得我想要的东西。
现在我希望能够向这些案例项目添加附件/文件,但我不知道如何解决权限问题。
我应该如何将文件/对象上传到 S3 存储桶并即时设置权限???
第一种方法是通过连接到 Lambda 函数的 API 网关将文件作为二进制数据上传。但是从那里做什么呢?我想使用适用于 S3 的 JavaScript SDK,并找到了 S3.putObject、S3.upload 和 S3.putObjectAcl 之类的方法,但这并没有真正的帮助,因为我找不到使用 Cognito 帐户的方法。
另一种方法是直接从浏览器将文件上传到 S3,因此我开始阅读相关内容。发现你可以创建一个预签名的 url(比如这里:https://sanderknape.com/2017/08/using-pre-signed-urls-upload-file-private-s3-bucket/),但它仍然不能帮助我对对象设置正确的权限。
现在我正在考虑在我自己的 DynamoDB 中存储某种 ACL 以跟踪 S3 对象权限,但这感觉非常错误。一定是更好的方法?
所以我被困住了。这是我第一个与 AWS 合作的项目,所以我可能在这里遗漏了一些非常基本的东西。我应该以完全不同的方式解决这个问题吗?
请帮忙!
【问题讨论】:
标签: amazon-web-services amazon-s3 amazon-cognito