零售、银行、快餐、便利店和交通网络正在持续产生海量监控视频。当摄像头分散在数千个地点、数据规模进入 PB 级、留存周期不断延长时,传统本地存储面对的不只是容量不足,还包括设备维护、跨站点检索、数据保护和成本预测等问题。March Networks 将云存储与 AWS 结合,反映出企业视频平台正在从“每个站点各自保存录像”转向集中管理、按策略分层的存储模式。
真正困难的不是把文件上传到云端
视频监控有几个区别于普通对象存储的特征:数据持续写入、单个对象数量巨大、读取频率随时间快速下降,而且关键录像必须在事件发生后可靠保留。
对拥有数千个网点的企业来说,云端方案通常需要同时处理四类问题:
- 边缘连续性:门店或站点断网时,本地录像不能停止;连接恢复后还要补传缺失片段。
- 统一留存策略:普通录像可能只保留数周,而与报警、交易争议或调查相关的片段需要保留更久。
- 跨地点访问:安全团队需要按照站点、摄像头和时间范围检索,而不是逐台登录录像设备。
- 成本可控性:PB 级视频不适合长期停留在高频访问层,恢复时间和存储单价之间必须做取舍。
因此,云存储并不意味着移除所有本地设备。更稳妥的形态是让边缘设备承担短期缓存和持续采集,让云端承担集中留存、保护和跨地点访问。来源摘要没有披露 March Networks 的具体数据路径与 AWS 服务配置,下面的方案是可以据此采用的参考实践,并非对其内部架构的复刻。
用数据温度拆分留存周期
视频写入后通常存在明显的访问温度变化。最近几天的录像可能被运营或安保人员频繁查看;数周后的数据大多只在调查、审计或合规请求中使用。可以把策略拆成三个阶段:
| 阶段 | 典型用途 | 设计重点 |
|---|---|---|
| 热数据 | 实时事件和近期回放 | 快速读取、低恢复延迟 |
| 温数据 | 争议处理和周期性调查 | 降低单价,同时保持可接受的访问速度 |
| 冷数据 | 长期合规与证据保留 | 最低存储成本,接受更长恢复时间 |
对象的元数据至少应包含租户、站点、摄像头、开始时间、结束时间和事件类型。视频对象可以进入分层存储,但索引不能跟着变冷,否则检索系统会先扫描大量对象,再判断目标录像在哪里。实际系统通常需要单独维护一个可查询的元数据索引。
留存规则也不应只按“文件创建后 N 天删除”。报警片段、收银交易关联片段和普通连续录像可能具有不同期限。进入法律保全流程的数据还应覆盖自动删除策略,并记录是谁、在什么时间修改了保留状态。
可以这样实践:为视频存储桶配置生命周期
下面给出一个可改造的 AWS CLI 示例。它创建一个默认禁止公开访问、启用版本控制和服务端加密的 S3 存储桶,并为 video/ 前缀配置分层与过期规则。
运行前需要安装并配置 AWS CLI。请修改 BUCKET、REGION 和留存天数;不同 S3 存储类的最短计费周期、转换限制和恢复时间也需要根据当前 AWS 规则重新核对。
#!/usr/bin/env bash
set -euo pipefail
BUCKET="replace-with-a-globally-unique-bucket-name"
REGION="us-east-1"
if [ "$REGION" = "us-east-1" ]; then
aws s3api create-bucket --bucket "$BUCKET" --region "$REGION"
else
aws s3api create-bucket \
--bucket "$BUCKET" \
--region "$REGION" \
--create-bucket-configuration "LocationConstraint=$REGION"
fi
aws s3api put-public-access-block \
--bucket "$BUCKET" \
--public-access-block-configuration \
'BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true'
aws s3api put-bucket-versioning \
--bucket "$BUCKET" \
--versioning-configuration Status=Enabled
aws s3api put-bucket-encryption \
--bucket "$BUCKET" \
--server-side-encryption-configuration \
'{"Rules":[{"ApplyServerSideEncryptionByDefault":{"SSEAlgorithm":"AES256"},"BucketKeyEnabled":true}]}'
aws s3api put-bucket-lifecycle-configuration \
--bucket "$BUCKET" \
--lifecycle-configuration '{
"Rules": [
{
"ID": "video-retention",
"Status": "Enabled",
"Filter": {"Prefix": "video/"},
"Transitions": [
{"Days": 30, "StorageClass": "STANDARD_IA"},
{"Days": 90, "StorageClass": "DEEP_ARCHIVE"}
],
"Expiration": {"Days": 365},
"NoncurrentVersionExpiration": {"NoncurrentDays": 30}
}
]
}'
aws s3api get-bucket-lifecycle-configuration --bucket "$BUCKET"
对象键可以采用可预测但不会泄露敏感业务名称的结构,例如:
video/<tenant-id>/<site-id>/<camera-id>/2025/03/08/14/<segment-id>.mp4
不要把 S3 列举操作当作视频检索数据库。上传成功后,可以把对象键、时间区间、校验值和业务标签写入 DynamoDB、关系数据库或现有的视频管理索引。上传流程还应在本地保留确认状态,只有收到云端持久化成功响应后,才允许边缘缓存按策略回收。
安全、恢复与网络费用决定最终账单
监控视频可能包含人脸、车牌、员工活动和支付场所画面,云端迁移必须同时考虑身份权限、加密、审计和数据驻留要求。生产环境可在默认加密之外引入客户管理的 KMS 密钥,但要提前评估密钥请求成本、权限策略和密钥不可用时的影响。
权限模型应把上传、检索、导出和删除拆开。门店设备通常只需要写入指定站点前缀,不应拥有读取整个存储桶或删除对象的权限。调查人员可以检索录像,但大规模导出和修改留存状态应要求更高权限并产生审计记录。
成本估算不能只乘以每 GB 存储价格,还要计算:
- 持续上传产生的请求量和站点网络带宽;
- 跨区域复制或跨区域访问费用;
- 冷数据恢复请求、恢复容量和等待时间;
- 元数据索引、日志、密钥服务与监控成本;
- 版本控制、失败的分段上传和重复录像占用的空间。
还需要定期演练恢复。生命周期规则成功执行,只能证明对象进入了更冷的存储层,不能证明调查人员能在约定时间内找到、恢复和验证视频。
上线前的判断清单
采用云端视频存储时,可以先选择少量站点进行试点,并用真实码率、断网频率和检索行为测量成本。上线评审至少应回答以下问题:
- 每个站点断网后能在本地缓存多久?补传是否限速?
- 普通、告警、合规和法律保全视频分别保留多久?
- 冷数据必须在几分钟、几小时还是一天内恢复?
- 谁能查看、导出、延长保留或删除录像?
- 如何证明视频从采集、传输到导出的完整性?
- 存储类转换、恢复和跨区域流量是否进入容量模型?
- 删除策略是否满足当地隐私法规与数据驻留要求?
云存储的价值并非简单增加容量,而是把分散站点的视频变成可以统一治理的数据资产。与此同时,边缘连续性、索引设计、恢复演练和精细权限仍然需要视频平台自身承担。对 PB 级系统而言,先明确访问模式和留存责任,再选择存储层级,通常比直接搬迁全部录像更可靠。