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

2025 年 6 月 8 日
 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 人,他们对界面也无所谓,最重要的是能看到儿子照片和视频。大家觉得可行性如何?安全性的话,如果白名单策略有效的话,还会有什么漏洞吗?

多谢!

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

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

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

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

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

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

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

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

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

© 2021 V2EX