冷热分层与归档:S3/Glacier + ABP 生命周期任务 ❄️🔥
TL;DR
在 ABP vNext 中用 BlobStoring.Aws 接入 S3;以 S3 Lifecycle 实施热/温/冷/归档分层(自 2024-09 起默认阻止 <128KB 对象迁移,可用尺寸过滤器覆盖;老配置未改动将保留旧行为);用 Object Lock(Governance/Compliance)+ Legal Hold 满足合规;以 S3 Inventory(每日/每周) 或 S3 Metadata(Live Inventory/Journal, Iceberg) 作为“归档可检索目录”;通过 ABP Background Workers/Jobs 编排“打标签→转储→归档→恢复→对账”;大规模恢复优先 S3 Batch Operations(~1000 TPS 并发 + 结果报告)。
📚 目录
- 冷热分层与归档:S3/Glacier + ABP 生命周期任务 ❄️🔥
-
- 1)使用边界与场景 🎯
- 2)目标架构 🏗️
- 3)ABP 集成与多租户命名 🧩
- 4)Lifecycle(ILM)策略:128KB 默认门槛与正确配置 🗂️
- 5)合规:Object Lock(WORM)与 Legal Hold 🔒
- 6)归档可检索目录:Inventory vs. Metadata 🔍
- 7)“失联租户”的唤醒(恢复)与成本 🧯💸
- 8)ABP 编排示例 ⚙️
- 9)上传与标签:ABP + AWS SDK 协同 🏷️
- 10)可复现实验清单 ✅
- 11)监控与告警 🚨
- 12)常见坑与防御 🧱
- 13)示例查询(S3 Metadata → Athena) 📊
- 14)额外可视化(可选):对象状态机 🧭
1)使用边界与场景 🎯
-
面向合规/稽核 WORM 长留存、低频访问、偶发批量唤醒。
-
检索延迟与最短存储期(速查)
- Glacier Flexible Retrieval:Expedited ~1–5 分钟、Standard ~3–5 小时、Bulk ~5–12 小时;最短存储期 90 天。
- Glacier Deep Archive:Standard/Bulk ~12–48 小时;最短存储期 180 天。
-
计费提醒:归档类每对象额外 ~40KB 元数据(8KB 记名按 Standard + 32KB 索引按归档类);Glacier IR 有 128KB 最小计费。🧮
2)目标架构 🏗️
要点
- S3 桶建议 Versioning;需要 WORM 时启用 Object Lock。
- 目录索引两路线:Inventory(批量,日/周) 或 Metadata(近实时,含
object_tags)。 - 编排:Workers(周期) + Jobs(一次性/可重试)。
3)ABP 集成与多租户命名 🧩
最简接入(Module 配置):
[DependsOn(typeof(AbpBlobStoringAwsModule))]
public class MyProjectModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpBlobStoringOptions>(opts =>
{
opts.Containers.ConfigureDefault(container =>
{
container.UseAws(aws =>
{
aws.Region = "ap-southeast-1";
aws.ContainerName = "my-prod-archive"; // S3 桶名
aws.CreateContainerIfNotExists = false


456

被折叠的 条评论
为什么被折叠?



