如何限制谷歌云存储上传

时间:2019-12-20 17:57:08

标签: google-cloud-platform google-cloud-storage

我有一个使用Google Cloud Storage的移动应用程序。该应用程序允许每个注册用户上传特定数量的文件。

我的问题是,有没有办法在存储上传之前进行某种检查?还是我需要实现一个可以执行上传步骤的单独的预留API? 当然,也欢迎任何其他建议。

1 个答案:

答案 0 :(得分:1)

警告:不是权威性答案。很高兴接受删除或更新请求。

我不知道有任何GCS或Firebase Cloud Storage机制会固有地限制给定用户可以创建的文件(对象)数量。如果是我,这就是我要解决的难题。

我将创建一个数据库(例如Firestore / Datastore),该数据库具有每个用户的密钥和一个值,该值是他们上载的文件数。当用户想要上传新文件时,它将首先对我要编写的Cloud Function进行REST调用。该云功能将隐式知道主叫用户的身份。它将在数据库中查找记录,并确定是否允许我们上传新文件。如果否,则返回错误并结束故事。如果是,则增加数据库中的值。接下来,我将创建一个GCS“ signed URL”,该文件可用于允许上传。 Cloud Function将返回该签名的URL。现在希望上传的应用程序可以使用该签名的URL来执行实际的上传。

我还将元数据添加到每个上传的文件中,以标识文件的逻辑上载者(用户)。然后可以根据需要将其用于对帐。我们可以检查存储桶中的所有文件,然后重新构建每个用户已上传多少文件的数据库。

该故事的一种可能替代方案是Cloud Function不返回签名URL,而是接收要在同一请求中上传的数据。如果通过了文件数量检查,则云功能可以作为GCS写入的代理,以直接创建文件。需要根据要上传的文件的大小仔细检查此替代方法。如果文件很大,这可能是一个非常差的解决方案。我们希望尽快进入和退出云功能,而将云功能“围绕”服务数据传递不是很好。在这种情况下,我们可能要看一下Cloud Run,因为它在实例中支持并发而不会增加每次调用的成本。