我需要在社交网络类型的服务中使用s3来存储来自用户的内容并管理访问权限。
到目前为止,这是我想到的:
- 客户告诉LAMP服务器他想上传文件
- LAMP进行身份验证,并为用户可以上传的s3生成预先签名的URL。它还使用私钥创建该密钥的加密版本。然后它添加了这个键,以及在mysql表中启动它的用户(以及它何时启动)
- LAMP然后将密钥和数字签名从2.发送给客户。
- 客户端然后将文件上传到s3
- 完成后,他告诉LAMP该文件已完成。它发送密钥和数字签名。
- LAMP确保密钥和签名匹配。如果他们这样做,LAMP知道客户对于给予他的密钥是诚实的(并且他没有随机生成密钥)
- LAMP然后检查s3以确保具有该密钥的文件存在,如果存在,则删除在2中添加的行。
醇>
询问后,我被告知s3本身不可能验证某个文件是某种类型的“有效”文件(我只想强制执行图像)
所以我决定使用aws lambda来验证它(如果它是'错误的'文件,只需删除它)。在将文件上传到s3之后,可以触发lambda。
但是,BEFORE lambda完成检查文件的可能性,上面的步骤7可能会被执行。这意味着我的服务器会认为文件有效。
有没有办法让s3上传+ lambda执行原子?
欢迎任何建议