V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JarvisTang
V2EX  ›  程序员

请教:云服务的下级用户上传文件只能自建对象存储吗?

  •  
  •   JarvisTang · 2023-07-14 12:02:42 +08:00 · 1140 次点击
    这是一个创建于 496 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我准备开发一个电商云服务,我的用户注册之后就可以拥有一个 C2C 电商平台。我的每个用户都有自己的 C2C 电商平台和一套 API ,可以用 API 自己发布客户端。

    现在遇到一个技术难点,我的用户的平台的用户(他的用户)发布商品时,上传的图片和视频,我想统计在他的账号名下,以及被访问后的流量费也计在他名下。好像没有哪家云服务支持这样的场景,不好实现。

    比如,我使用七牛云存储,我的用户所有资源都放在七牛某个存储桶,那么我的密钥是不能公开的,如果我的用户,他的客户端上传文件时,走 API 经过我的业务服务器,有点太费我的服务器资源了,直达七牛云又不能把我的密钥给他。

    这时候,就要有一家云服务的存储桶支持无限子账号,而且仅有上传权限。

    我研究了一下国内国外几家大的存储服务商,都不好实现这样的场景。

    大家有遇到过这个问题,有经验吗?求指教,谢谢,谢谢,谢谢。

    ps: 最好是国外的技术方案,因为这是一个出海项目。

    15 条回复    2023-07-15 16:18:45 +08:00
    nightwitch
        1
    nightwitch  
       2023-07-14 12:30:24 +08:00 via Android
    允许用户直接往存储桶传的话待会来个搞事情的给你塞满儿童涩情和暴恐视频
    JarvisTang
        2
    JarvisTang  
    OP
       2023-07-14 12:38:27 +08:00
    @nightwitch 我会做个计划任务,文件一天未被使用,就会清理。不做长时间存储。
    xmumiffy
        3
    xmumiffy  
       2023-07-14 13:01:54 +08:00 via Android
    都有签发上传 token 的接口啊,token 还能指定储存的前缀甚至直接指定文件名
    star7th
        5
    star7th  
       2023-07-14 13:06:21 +08:00
    要实现你这种场景,最佳做法还是用自己的服务器做一层中转。走 api 经过你的业务服务器是必须的。
    JarvisTang
        6
    JarvisTang  
    OP
       2023-07-14 15:13:37 +08:00
    @xmumiffy 感谢,这个信息非常有用。
    JarvisTang
        7
    JarvisTang  
    OP
       2023-07-14 15:14:53 +08:00
    @star7th 这个是最后考虑的方案了,无奈选择。走业务服务器,有点浪费我的服务器资源,用户量大了之后,要求有点高。
    realpg
        8
    realpg  
       2023-07-14 15:50:44 +08:00
    一个客户一个 bucket 啊,这不是基本操作
    realpg
        9
    realpg  
       2023-07-14 15:51:36 +08:00
    给密钥是什么鬼?你好像压根就没理解 s3 协议是怎么运作的,啃啃基础吧
    JarvisTang
        10
    JarvisTang  
    OP
       2023-07-14 16:06:51 +08:00
    @realpg 你没理解我的想法,看看我的描述。

    所有资产在一个存储桶(这样描述是硬性要求),客户端无权访问和删除操作,只能上传。
    virusdefender
        11
    virusdefender  
       2023-07-14 16:07:37 +08:00
    楼上正解,一个用户一个 bucket ,然后使用 sts 表单上传(阿里云的名词,其他的存储不清楚,不过应该都有类似的)
    guoguobaba
        12
    guoguobaba  
       2023-07-14 16:17:04 +08:00
    minio 再包一层,minio gateway ,自己发放 ak ,设置权限就可以了。
    版本要在 RELEASE.2022-10-24T18-35-07Z 之前就行了。
    vmlinz
        13
    vmlinz  
       2023-07-14 16:25:30 +08:00 via iPhone
    一个 bucket 下,可以给 object 打 tag ,或者每个用户有自己的子目录,再连接 bucket 的生命周期事件,每次上传的时候做一个记录,用来追踪用户的使用。但是流量费这个很难统计到具体用户,不一定所有平台都提供。

    最好还是每个用户有自己的 bucket 最方便,供应商账户就可以自动工作。
    realpg
        14
    realpg  
       2023-07-15 09:34:38 +08:00
    @JarvisTang #10
    所有资产在一个存储桶(这样描述是硬性要求)

    -----
    要么设计出这种架构的人滚,要么我滚
    JarvisTang
        15
    JarvisTang  
    OP
       2023-07-15 16:18:45 +08:00
    @realpg 不要只看片面的描述,你不知道为什么这样设计的背景信息,不要在这上面断言。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5456 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:20 · PVG 11:20 · LAX 19:20 · JFK 22:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.