网站开发小白设想了一个存储在 s3 上的静态照片/视频网站,仅供家人访问,请问是否可行?

101 天前
 levelworm

我从来没做过网站开发,最近在看 s3 的文档的时候,发现可以直接在上头 host 静态网站,同时可以用 policy 限制访问白名单,于是有了一个构建照片/视频网站的偷懒的想法。

s3 的结构大致是这样的:

.../my-static-website/webpage/ -> 这里存储的是网页的 html 和脚本(我也没做过网站开发,不知道需要多少脚本)

.../my-static-website/photo/ -> 这里存储的是所有照片和视频,底下还有多余的 yyyy-mm-dd 前缀,比如说.../my-static-website/photo/2025-06-01/photo1.jpg

用白名单策略来限制家人的访问,需要他们的公开 ip 。我感觉这里比较粗糙,因为他们的 ip 很可能经常变化,但是反正就那几个人,直接让他们访问一个给出访问者公网 ip 的网站,把结果告诉我,我手动修改策略就行了。具体如何自动化还没想好,我觉得如果做成手机 apk ,让 app 检测手机的公网 ip ,然后自动更新策略,也应该可行。

主页的内容大致是:

就是一张最简单的网页,上面罗列了每个 yyyy-mm-dd 前缀,点进去可以访问一个直接动态生成的、以 yyyy-mm-dd.html 为名字的网页,上面罗列了每个.../my-static-website/photo/yyyy-mm-dd/ 目录下面的图片和视频的缩略图(每一天应该不会超过 10 个物体),再点就可以直接在浏览器中打开图片和视频。

yyyy-mm-dd 的列表应该可以从 s3 里的前缀中获取,至于如何自动生成网页,我从来没开发过网页,但是想来应该不会太难,可能要写点 javascript 。

主页上还有一个“上传”按钮,访问者可以点击然后上传文件,直接自动存储到以当天为前缀的 s3 文件里,比如说 2025-06-01 上传,那么直接就进到.../my-static-website/photo/2025-06-01/ 下面。这个估计要修改策略,目前还不知道行不行,得看看文档。“上传”本身肯定也是需要一个脚本的,到时候查查看怎么写。

整个“产品”就是这样了。使用者不会超过 10 人,他们对界面也无所谓,最重要的是能看到儿子照片和视频。大家觉得可行性如何?安全性的话,如果白名单策略有效的话,还会有什么漏洞吗?

多谢!

4475 次点击
所在节点    程序员
60 条回复
akiyamamio
101 天前
你还不如直接买个极空间,你想要的这个功能都有,并且都是全自动的,可以自动从你手机传上去,然后人脸识别把小孩放到你指定的共享相册里,让家人都可以看到,我就是这么用的
96
101 天前
我推荐微信里的腾讯相册小程序。
levelworm
101 天前
@webs #17
提醒我了,我在北美,但是家人在境内,是不是不好访问? CF 呢?
levelworm
101 天前
@akiyamamio #21
多谢,我研究一下,我在北美不知道能不能买得到,不过也许大多数 nas 都有这个功能?他们是怎么让公网其他人访问本机的呢?毕竟我这里也未必有公网 ip 。
coldle
101 天前
技术上可行,但是总感觉有点折腾 😂

如果特指 aws s3 的话得考虑境内访问加速,如果是境内对象存储的话托管网站基本得有个备案过的域名;
不建议把 ip 白名单作为唯一鉴权方式,不靠谱。作为辅助倒是能轻松筛掉挺多恶意访问;
直接从 s3 查看照片视频的公网流出费用不会太低。也许可以套 cdn ?如果又用 cdn 又自己计算签名的话,可能必须用 s3 里支持 v2 签名的区域,不然 v4 签名请求起来就很麻烦;

其他的生成网页 or 上传啥的倒是小事了,纯业务调用,估计你放 ai 里分分钟搓出来
margoxlive
101 天前
如果是国内的用户访问,阿里云腾讯云等云存储也可以试试,如果需要绑定自定义域名,就用香港的桶,如果是在 app 里面访问则不需要自定义的域名,那就用国内的桶也可以。
相比 AWS S3 ,国内的云存储提供的图片处理能力无痛实现缩略图功能,以降低访问流量,而且每月的免费处理额度也不少。
S3 需要借助 lambda 来做,麻烦得很。
gorvey
101 天前
我给你说一个另类的方法,
用 notion ,底层也是用的 aws s3 ,pro 会员无大小和数量限制,免费版限制 5MB
好处就是不用开发网页,支持一键发布内容。支持共享编辑
也支持 API 调用,一个 Pro 给多人使用没问题
Jianrry
101 天前
不可行,我推荐的方案是 onedrive + alist 。

onedrive 家庭版有 1T 存储空间,可以上传图片和视频。

alist 可以挂载 onedrive ,使用 onedrive 的流量。还可以设置密码,限制公开访问。
fox0001
101 天前
很多 NAS 系统都支持接入 S3 ,例如 Nextcloud
ETiV
101 天前
看来 Lz 有想法但没实操经验😂

一般不直接用 s3 (或同类服务)做下载:bucket endpoint 域名被暴露的话,有可能被恶意刷爆账单。而且没啥经验的话,很容易配错权限而不自知,很多数据泄露都是因为这个导致的。

照片都是可以压缩的,原图质量 20GB 的内容,照片可以存一个“高质量”、WebP 压完估计也就 6 ~ 8GB 。视频同理,有个 500 ~ 800Kbps 码率,够看就行了。

就……你这些需求还是推荐用 Cloudflare 存,赛博菩萨。再买个 VPS ,对接 R2 ,不要直接暴露存储端的信息。

其实海外做存储最便宜的是 https://www.backblaze.com/cloud-storage/pricing ,但跟 cloudflare 比它业务太单一。

不过既然要把文件存在海外,你也可以买个 Google One 什么的(不是 GCP )把照片存进去,然后对接 Google Drive API (这个需要 GCP 、也可能会需要付费)来读写照片视频。
x86
101 天前
直接 qq 相册我 08 年的照片都还在
importmeta
101 天前
流量费很贵啊.
esee
101 天前
用手机自带的家庭相册服务不行么?学习成本为 0 ,体验也完美契合。比如小米的家庭组 8 个人 2T 空间 450 一年,你自己组 s3 存储,花费贵太多
ntedshen
101 天前
我用过阿里的 ip 白名单。。。在 ecs 上做个登录页,验证通过则用阿里的 sdk 开端口墙。。。
痛是不痛,但是最后不还是要绕回到鉴权问题上,最多也就是防点野生爬虫吧。。。
MFWT
101 天前
S3 (如果特指 AWS S3 )价格可能会比较高,千万要注意流量费(网上应该有不少 S3 被刷爆账单的案例)
rocmax
101 天前
aws 的官方解法肯定是 cloudfront 配合 s3 部署界面,cognito 处理认证,api gateway+lambda 提供 api ,上传照片后自动触发 lambda 生成缩略图,并将元信息存储到 rds 或 dynamo
RicardoY
101 天前
@levelworm 对象存储比 icloud 要贵
ranran
101 天前
好像很少这么搞的,一般是家里搞个便宜的 NAS
SeaTac
101 天前
@levelworm
iCloud Photo share album 不占 iCloud 空间 国内访问也没什么问题 权限管理也够用
但是需要你的家人也用苹果设备
我觉得对小白来说这是最好的办法了
monmon
101 天前
家里的台式电脑 docker 一键启动 immich ( https://immich.app/)就行了,自带账户和存储配额管理,Google 商店和 App Store 都可以下下载开源的 App ,直接连到本地的服务,内网备份照片超级快,如果需要外网访问搞搞内网透传就 OK 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1137115

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX