把千万路视频送上云:March Networks 基于 AWS 的存储思路与落地边界

2026-07-13 42 预计阅读时间: 1 分钟
来源: aws.amazon.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:11 分钟

零售、银行、快餐、便利店和交通网络正在持续产生海量监控视频。当摄像头分散在数千个地点、数据规模进入 PB 级、留存周期不断延长时,传统本地存储面对的不只是容量不足,还包括设备维护、跨站点检索、数据保护和成本预测等问题。March Networks 将云存储与 AWS 结合,反映出企业视频平台正在从“每个站点各自保存录像”转向集中管理、按策略分层的存储模式。

真正困难的不是把文件上传到云端

视频监控有几个区别于普通对象存储的特征:数据持续写入、单个对象数量巨大、读取频率随时间快速下降,而且关键录像必须在事件发生后可靠保留。

对拥有数千个网点的企业来说,云端方案通常需要同时处理四类问题:

  • 边缘连续性:门店或站点断网时,本地录像不能停止;连接恢复后还要补传缺失片段。
  • 统一留存策略:普通录像可能只保留数周,而与报警、交易争议或调查相关的片段需要保留更久。
  • 跨地点访问:安全团队需要按照站点、摄像头和时间范围检索,而不是逐台登录录像设备。
  • 成本可控性:PB 级视频不适合长期停留在高频访问层,恢复时间和存储单价之间必须做取舍。

因此,云存储并不意味着移除所有本地设备。更稳妥的形态是让边缘设备承担短期缓存和持续采集,让云端承担集中留存、保护和跨地点访问。来源摘要没有披露 March Networks 的具体数据路径与 AWS 服务配置,下面的方案是可以据此采用的参考实践,并非对其内部架构的复刻。

用数据温度拆分留存周期

视频写入后通常存在明显的访问温度变化。最近几天的录像可能被运营或安保人员频繁查看;数周后的数据大多只在调查、审计或合规请求中使用。可以把策略拆成三个阶段:

阶段 典型用途 设计重点
热数据 实时事件和近期回放 快速读取、低恢复延迟
温数据 争议处理和周期性调查 降低单价,同时保持可接受的访问速度
冷数据 长期合规与证据保留 最低存储成本,接受更长恢复时间

对象的元数据至少应包含租户、站点、摄像头、开始时间、结束时间和事件类型。视频对象可以进入分层存储,但索引不能跟着变冷,否则检索系统会先扫描大量对象,再判断目标录像在哪里。实际系统通常需要单独维护一个可查询的元数据索引。

留存规则也不应只按“文件创建后 N 天删除”。报警片段、收银交易关联片段和普通连续录像可能具有不同期限。进入法律保全流程的数据还应覆盖自动删除策略,并记录是谁、在什么时间修改了保留状态。

可以这样实践:为视频存储桶配置生命周期

下面给出一个可改造的 AWS CLI 示例。它创建一个默认禁止公开访问、启用版本控制和服务端加密的 S3 存储桶,并为 video/ 前缀配置分层与过期规则。

运行前需要安装并配置 AWS CLI。请修改 BUCKETREGION 和留存天数;不同 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 级系统而言,先明确访问模式和留存责任,再选择存储层级,通常比直接搬迁全部录像更可靠。


相关推荐