diff --git a/Project/fonrey/DATA_MODEL/DATA_MODEL.md b/Project/fonrey/DATA_MODEL/DATA_MODEL.md
index bc76bef2..b03595c8 100644
--- a/Project/fonrey/DATA_MODEL/DATA_MODEL.md
+++ b/Project/fonrey/DATA_MODEL/DATA_MODEL.md
@@ -1,8 +1,8 @@
# Fonrey 房产经纪管理系统 — DATA MODEL 设计文档
> **作者**: Backend Architect
-> **版本**: v1.0
-> **日期**: 2026-04-24
+> **版本**: v1.3
+> **日期**: 2026-04-24(v1.1 修复 S1/S2/S4;v1.2 扩展 public schema;v1.3 §三 DDL 迁至 DATA_MODEL_PUBLIC.md,本文改为索引)
> **技术栈**: Django 4.x + PostgreSQL + django-tenants + Redis
> **设计目标**: 支撑 89,000+ 房源、多租户隔离、sub-100ms 查询、合规审计
@@ -13,18 +13,28 @@
### 1.1 多租户策略:Schema-per-Tenant
```
-┌─────────────────────────────────────────────────────────────┐
-│ PostgreSQL Instance │
-│ │
-│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
-│ │ public schema│ │tenant_abc │ │tenant_xyz │ │
-│ │ (shared) │ │ schema │ │ schema │ │
-│ │ │ │ │ │ │ │
-│ │ - tenants │ │ - properties │ │ - properties │ │
-│ │ - domains │ │ - clients │ │ - clients │ │
-│ │ │ │ - complexes │ │ - complexes │ │
-│ └──────────────┘ └──────────────┘ └──────────────┘ │
-└─────────────────────────────────────────────────────────────┘
+┌──────────────────────────────────────────────────────────────────────┐
+│ PostgreSQL Instance │
+│ │
+│ ┌─────────────────────────┐ ┌──────────────┐ ┌──────────────┐ │
+│ │ public schema │ │ tenant_abc │ │ tenant_xyz │ │
+│ │ (平台运营层) │ │ schema │ │ schema │ │
+│ │ │ │ │ │ │ │
+│ │ - tenants │ │ - properties │ │ - properties │ │
+│ │ - domains │ │ - clients │ │ - clients │ │
+│ │ - tenant_status_logs │ │ - complexes │ │ - complexes │ │
+│ │ - platform_admins │ │ - staff │ │ - staff │ │
+│ │ - admin_mfa_devices │ │ - org_units │ │ - org_units │ │
+│ │ - admin_sessions │ │ - ... │ │ - ... │ │
+│ │ - ip_whitelist │ └──────────────┘ └──────────────┘ │
+│ │ - platform_audit_logs │ │
+│ │ - backup_schedules │ │
+│ │ - backup_records │ │
+│ │ - export_tasks │ │
+│ │ - system_versions │ │
+│ │ - upgrade_events │ │
+│ └─────────────────────────┘ │
+└──────────────────────────────────────────────────────────────────────┘
```
**选型理由**:
@@ -76,9 +86,28 @@
### 核心领域对象
+#### Public Schema(平台运营层)
+
+| 领域对象 | 表 | 业务说明 |
+|----------|-----|----------|
+| **Tenant(租户)** | `public.tenants` | 每家房产经纪公司一条记录,含状态机(creating/active/suspended/pending_delete/deleted)、套餐、联系人 |
+| **Domain(域名)** | `public.domains` | 子域名↔租户映射,支持多域名绑定,子域名创建后不可修改 |
+| **TenantStatusLog** | `public.tenant_status_logs` | 租户状态变更不可变审计(append-only) |
+| **PlatformAdmin** | `public.platform_admins` | 平台管理员账号,3 种角色:超级管理员/运营人员/只读审计员 |
+| **AdminMfaDevice** | `public.admin_mfa_devices` | 管理员 TOTP 设备(强制启用) |
+| **AdminSession** | `public.admin_sessions` | 登录会话(30 分钟超时,支持强制登出) |
+| **IpWhitelist** | `public.ip_whitelist` | 管理控制台 CIDR 白名单 |
+| **PlatformAuditLog** | `public.platform_audit_logs` | 所有写操作+高危操作审计(append-only,建议月度分区) |
+| **BackupSchedule** | `public.backup_schedules` | 全局/租户级定时备份计划(频率/保留数/存储目标) |
+| **BackupRecord** | `public.backup_records` | 备份任务执行记录(自动/手动/升级前/恢复前) |
+| **ExportTask** | `public.export_tasks` | 数据导出异步任务(CSV/JSON/SQL Dump,24h 下载链接) |
+| **SystemVersion** | `public.system_versions` | 平台版本历史,唯一 current 版本约束 |
+| **UpgradeEvent** | `public.upgrade_events` | 升级/回滚事件,含灰度租户维度进度快照 |
+
+#### Tenant Schema(租户业务层)
+
| 领域对象 | 表/子文档 | 业务说明 |
|----------|-----------|----------|
-| **Tenant(租户)** | `public.tenants` | 每家房产经纪公司对应一个租户,数据完全隔离(Schema-per-Tenant) |
| **OrgUnit(组织架构)** | `org_units` → [DATA_MODEL_ORG.md](./DATA_MODEL_ORG.md) | 树形组织架构(总部/区域/城市/大区/分公司/门店/团队/虚拟团队),物化路径存储,支持权限继承 |
| **Staff(员工)** | `staff` → [DATA_MODEL_ORG.md](./DATA_MODEL_ORG.md) | 经纪人/店长/经理,绑定组织节点,手机号加密存储,与账号(登录)分离 |
| **District(城区)** | `districts` → [DATA_MODEL_COMPLEX.md](./DATA_MODEL_COMPLEX.md) | 行政区划,如「静安区」,是区域体系的顶层节点 |
@@ -114,6 +143,7 @@ OrgUnit (组织架构)
| 子文档 | 覆盖模块 | 状态 |
|--------|----------|------|
+| [DATA_MODEL_PUBLIC.md](./DATA_MODEL_PUBLIC.md) | Public schema 平台运营层(tenants, domains, platform_admins, admin_sessions, audit_logs, backup, export, upgrade 共 13 张表) | ✅ 完成 |
| [DATA_MODEL_ORG.md](./DATA_MODEL_ORG.md) | 组织人事(org_units, staff, 异动/奖惩/教育/家庭等) | ✅ 完成 |
| [DATA_MODEL_COMPLEX.md](./DATA_MODEL_COMPLEX.md) | 楼盘/区域(districts, business_areas, complexes, buildings, room_units, schools 等) | ✅ 完成 |
| [DATA_MODEL_CLIENT.md](./DATA_MODEL_CLIENT.md) | 客源管理(clients, requirements, follow_logs, viewings, matches 等) | ✅ 完成 |
@@ -123,42 +153,41 @@ OrgUnit (组织架构)
## 三、公共 Schema(Shared / Public)
+> **权威源**:完整 DDL 已迁至 [`DATA_MODEL_PUBLIC.md`](./DATA_MODEL_PUBLIC.md),本节仅保留摘要索引。
+> **覆盖范围**:`public` schema 存储平台运营层数据——租户注册、管理员账号、审计日志、备份/导出任务、版本升级记录(共 13 张表)。
+> **设计依据**:系统管理模块 PRD(`PRD/系统管理/系统管理模块PRD.md`)。
-```sql
--- ============================================================
--- 文件: shared_schema.sql
--- 用途: django-tenants 公共 Schema,存放租户注册信息
--- ============================================================
+### 表清单(开发以 DATA_MODEL_PUBLIC.md 为准)
--- 租户表(每家房产公司一条记录)
-CREATE TABLE public.tenants (
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
- schema_name VARCHAR(63) UNIQUE NOT NULL, -- PG schema 名,最长 63 字符
- name VARCHAR(255) NOT NULL, -- 公司名称
- short_name VARCHAR(100), -- 简称/品牌名
- created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
- updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
- is_active BOOLEAN NOT NULL DEFAULT TRUE,
- paid_until DATE, -- 订阅到期日
- on_trial BOOLEAN NOT NULL DEFAULT TRUE,
- extra JSONB NOT NULL DEFAULT '{}' -- 预留扩展字段
-);
+| 表名 | 说明 | 节 |
+|------|------|----|
+| `public.tenants` | 租户主表(django-tenants 核心,状态机 6 态) | §2.1 |
+| `public.domains` | 域名↔租户映射(支持多域名,子域名不可修改) | §2.1 |
+| `public.tenant_status_logs` | 租户状态变更不可变审计日志(append-only) | §2.1 |
+| `public.platform_admins` | 平台管理员账号(super_admin/ops_operator/read_only_auditor) | §2.2 |
+| `public.admin_mfa_devices` | 管理员 TOTP MFA 设备(强制启用) | §2.2 |
+| `public.admin_sessions` | 管理员登录会话(30 min 滚动超时,支持强制登出) | §2.2 |
+| `public.ip_whitelist` | 管理控制台 CIDR 白名单 | §2.2 |
+| `public.platform_audit_logs` | 所有写操作+高危操作审计(append-only,建议月度分区) | §2.3 |
+| `public.backup_schedules` | 全局/租户级定时备份计划(NULL tenant_id = 全局默认) | §2.4 |
+| `public.backup_records` | 备份任务执行记录(auto/manual/pre_upgrade/pre_restore) | §2.4 |
+| `public.export_tasks` | 数据导出异步任务(CSV/JSON/SQL Dump,24h 下载链接) | §2.4 |
+| `public.system_versions` | 平台版本历史,部分唯一索引保证唯一 current | §2.5 |
+| `public.upgrade_events` | 升级/回滚事件,`tenant_progress` JSONB 快照各租户状态 | §2.5 |
--- 域名映射表(支持多域名绑定一个租户)
-CREATE TABLE public.domains (
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
- domain VARCHAR(253) UNIQUE NOT NULL, -- 含子域名的完整域名
- tenant_id UUID NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
- is_primary BOOLEAN NOT NULL DEFAULT FALSE,
- created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
-);
-
-CREATE INDEX idx_domains_tenant ON public.domains(tenant_id);
-CREATE INDEX idx_domains_primary ON public.domains(tenant_id) WHERE is_primary = TRUE;
-```
+**关键约束提示**:
+- `tenant_status_logs` / `platform_audit_logs` **无 deleted_at**,禁止 UPDATE/DELETE,append-only
+- `public.tenants.schema_name` 创建后**不可修改**
+- `public.tenants` 不再使用 `is_active` boolean,改用 6 态 `status` 枚举
+- `platform_admins` 与租户 `staff` **完全独立**,不共享 auth 系统
+- `system_versions` 通过部分唯一索引确保全局只有一个 `status='current'`
---
+
+
+
+
## 四、租户 Schema(Tenant Schema)
以下所有表均在每个租户的独立 Schema 内创建。
diff --git a/Project/fonrey/DATA_MODEL/DATA_MODEL_PUBLIC.md b/Project/fonrey/DATA_MODEL/DATA_MODEL_PUBLIC.md
new file mode 100644
index 00000000..b4eb4050
--- /dev/null
+++ b/Project/fonrey/DATA_MODEL/DATA_MODEL_PUBLIC.md
@@ -0,0 +1,488 @@
+# Fonrey — Public Schema 数据模型
+
+> **作者**: Backend Architect
+> **版本**: v1.0
+> **日期**: 2026-04-24
+> **权威源**: 本文件是 `public` schema 所有表的唯一权威定义
+> **设计依据**: 系统管理模块 PRD(`PRD/系统管理/系统管理模块PRD.md`)
+> **索引文档**: [`DATA_MODEL.md §三`](./DATA_MODEL.md)(仅保留摘要索引,开发以本文件为准)
+
+---
+
+## 一、概览
+
+`public` schema 存储**平台运营层**数据,与各租户的业务 schema 完全隔离。
+
+### 架构定位
+
+```
+PostgreSQL Instance
+│
+├── public schema(平台运营层)← 本文件覆盖
+│ ├── tenants 租户注册与生命周期
+│ ├── domains 域名路由
+│ ├── tenant_status_logs 状态变更审计
+│ ├── platform_admins 管理员账号
+│ ├── admin_mfa_devices TOTP 设备
+│ ├── admin_sessions 登录会话
+│ ├── ip_whitelist 访问控制
+│ ├── platform_audit_logs 操作审计
+│ ├── backup_schedules 备份计划
+│ ├── backup_records 备份记录
+│ ├── export_tasks 数据导出
+│ ├── system_versions 版本历史
+│ └── upgrade_events 升级记录
+│
+├── tenant_abc schema(租户业务层,见各子文档)
+└── tenant_xyz schema
+```
+
+### 表清单
+
+| 表名 | 说明 | 节 |
+|------|------|----|
+| `public.tenants` | 租户主表(每家房产公司一条记录) | §2.1 |
+| `public.domains` | 域名↔租户映射(多域名支持) | §2.1 |
+| `public.tenant_status_logs` | 租户状态变更不可变审计日志 | §2.1 |
+| `public.platform_admins` | 平台管理员账号(3 种角色) | §2.2 |
+| `public.admin_mfa_devices` | 管理员 TOTP MFA 设备(强制启用) | §2.2 |
+| `public.admin_sessions` | 管理员登录会话(30 min 超时,支持强制登出) | §2.2 |
+| `public.ip_whitelist` | 管理控制台 CIDR 白名单 | §2.2 |
+| `public.platform_audit_logs` | 所有写操作+高危操作审计(append-only,建议月度分区) | §2.3 |
+| `public.backup_schedules` | 全局/租户级定时备份计划 | §2.4 |
+| `public.backup_records` | 备份任务执行记录(自动/手动/升级前/恢复前) | §2.4 |
+| `public.export_tasks` | 数据导出异步任务(CSV/JSON/SQL Dump) | §2.4 |
+| `public.system_versions` | 平台版本历史,唯一 current 约束 | §2.5 |
+| `public.upgrade_events` | 升级/回滚事件,含灰度租户维度进度快照 | §2.5 |
+
+---
+
+## 二、DDL 定义
+
+### 2.1 租户管理
+
+```sql
+-- ============================================================
+-- 文件: shared_schema.sql
+-- 用途: django-tenants 公共 Schema,存放平台运营层数据
+-- 设计依据: 系统管理模块 PRD v1.0
+-- ============================================================
+
+-- ────────────────────────────────────────────────────────────
+-- 1. 租户管理
+-- ────────────────────────────────────────────────────────────
+
+-- 租户状态枚举(生命周期状态机,见 PRD §9.1)
+-- creating → active ←→ suspended → pending_delete → deleted
+-- ↑ 硬删除直接到 deleted
+
+-- 租户主表(每家房产经纪公司一条记录)
+CREATE TABLE public.tenants (
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
+ schema_name VARCHAR(63) UNIQUE NOT NULL, -- PG schema 名,最长 63 字符,创建后不可修改
+ name VARCHAR(255) NOT NULL, -- 公司名称
+ short_name VARCHAR(100), -- 简称/品牌名
+ contact_name VARCHAR(100) NOT NULL, -- 主联系人姓名
+ contact_email VARCHAR(254) NOT NULL, -- 联系邮箱(接收通知/欢迎邮件)
+ region VARCHAR(100), -- 所在地区(省市,如「上海市」)
+ plan VARCHAR(20) NOT NULL DEFAULT 'basic'
+ CHECK (plan IN ('basic','professional','enterprise')),
+
+ -- 状态机
+ status VARCHAR(20) NOT NULL DEFAULT 'creating'
+ CHECK (status IN ('creating','active','suspended','pending_delete','deleted','failed')),
+ suspended_until TIMESTAMPTZ, -- NULL = 永久挂起,非 NULL = Celery Beat 定时恢复
+ suspended_reason VARCHAR(50)
+ CHECK (suspended_reason IN ('overdue','violation','requested','other')),
+ deleted_at TIMESTAMPTZ, -- 软删除时间戳;硬删除直接物理删除行
+
+ -- 订阅
+ paid_until DATE, -- 订阅到期日
+ on_trial BOOLEAN NOT NULL DEFAULT TRUE,
+
+ -- 灰度升级
+ is_canary BOOLEAN NOT NULL DEFAULT FALSE, -- TRUE = 内测租户,参与灰度升级
+
+ -- 元数据
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
+ created_by UUID, -- 创建该租户的管理员 ID(可 NULL,初始化时)
+ extra JSONB NOT NULL DEFAULT '{}' -- 预留扩展字段
+);
+
+CREATE INDEX idx_tenants_status ON public.tenants(status);
+CREATE INDEX idx_tenants_suspended_until ON public.tenants(suspended_until)
+ WHERE status = 'suspended' AND suspended_until IS NOT NULL;
+CREATE INDEX idx_tenants_canary ON public.tenants(is_canary) WHERE is_canary = TRUE;
+CREATE INDEX idx_tenants_pending_delete ON public.tenants(deleted_at)
+ WHERE status = 'pending_delete';
+
+-- 域名映射表(支持多域名绑定一个租户,子域名创建后不可修改)
+CREATE TABLE public.domains (
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
+ domain VARCHAR(253) UNIQUE NOT NULL, -- 含子域名的完整域名(如 abc.platform.com)
+ tenant_id UUID NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
+ is_primary BOOLEAN NOT NULL DEFAULT FALSE,
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
+);
+
+CREATE INDEX idx_domains_tenant ON public.domains(tenant_id);
+CREATE UNIQUE INDEX idx_domains_primary ON public.domains(tenant_id) WHERE is_primary = TRUE;
+
+-- 租户状态变更日志(append-only,不可删除)
+-- 记录所有 status 变更:creating→active / active→suspended / suspended→active / →pending_delete / →deleted
+CREATE TABLE public.tenant_status_logs (
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
+ tenant_id UUID NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
+ from_status VARCHAR(20), -- NULL 表示初始创建
+ to_status VARCHAR(20) NOT NULL,
+ reason TEXT,
+ operator_id UUID, -- 操作管理员 ID;NULL = 系统自动(Celery)
+ operator_name VARCHAR(100), -- 快照,防止管理员被删后失去可追溯性
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
+ -- 无 deleted_at,无 UPDATE,append-only
+);
+
+CREATE INDEX idx_tenant_status_logs_tenant ON public.tenant_status_logs(tenant_id, created_at DESC);
+```
+
+### 2.2 平台管理员
+
+```sql
+-- ────────────────────────────────────────────────────────────
+-- 2. 平台管理员
+-- ────────────────────────────────────────────────────────────
+
+-- 管理员账号(与租户 staff 完全独立,存于 public schema)
+CREATE TABLE public.platform_admins (
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
+ username VARCHAR(150) UNIQUE NOT NULL,
+ email VARCHAR(254) UNIQUE NOT NULL,
+ display_name VARCHAR(100) NOT NULL,
+ password_hash VARCHAR(255) NOT NULL, -- Django PBKDF2 / Argon2 哈希
+ role VARCHAR(20) NOT NULL
+ CHECK (role IN ('super_admin','ops_operator','read_only_auditor')),
+ is_active BOOLEAN NOT NULL DEFAULT TRUE,
+ mfa_enabled BOOLEAN NOT NULL DEFAULT FALSE, -- 首次登录前为 FALSE,配置 TOTP 后变 TRUE
+ last_login_at TIMESTAMPTZ,
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
+ created_by UUID REFERENCES public.platform_admins(id) ON DELETE SET NULL
+);
+
+CREATE INDEX idx_platform_admins_role ON public.platform_admins(role) WHERE is_active = TRUE;
+
+-- MFA 设备(TOTP,每管理员可注册多个设备,但通常一个)
+CREATE TABLE public.admin_mfa_devices (
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
+ admin_id UUID NOT NULL REFERENCES public.platform_admins(id) ON DELETE CASCADE,
+ device_name VARCHAR(100) NOT NULL DEFAULT 'Authenticator App',
+ totp_secret VARCHAR(255) NOT NULL, -- Base32 加密存储
+ is_confirmed BOOLEAN NOT NULL DEFAULT FALSE, -- 首次验证通过后置 TRUE
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
+ last_used_at TIMESTAMPTZ
+);
+
+CREATE INDEX idx_admin_mfa_devices_admin ON public.admin_mfa_devices(admin_id)
+ WHERE is_confirmed = TRUE;
+
+-- 管理员登录会话(支持强制登出)
+CREATE TABLE public.admin_sessions (
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
+ admin_id UUID NOT NULL REFERENCES public.platform_admins(id) ON DELETE CASCADE,
+ session_token VARCHAR(255) UNIQUE NOT NULL, -- 随机安全令牌
+ ip_address INET NOT NULL,
+ user_agent TEXT,
+ is_active BOOLEAN NOT NULL DEFAULT TRUE,
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
+ expires_at TIMESTAMPTZ NOT NULL, -- 默认 NOW() + 30 分钟,活动时滚动续期
+ revoked_at TIMESTAMPTZ, -- 强制登出时记录
+ revoked_by UUID REFERENCES public.platform_admins(id) ON DELETE SET NULL
+);
+
+CREATE INDEX idx_admin_sessions_admin ON public.admin_sessions(admin_id) WHERE is_active = TRUE;
+CREATE INDEX idx_admin_sessions_expires ON public.admin_sessions(expires_at) WHERE is_active = TRUE;
+
+-- IP 白名单(管理控制台访问限制)
+CREATE TABLE public.ip_whitelist (
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
+ cidr CIDR NOT NULL, -- 如 203.0.113.0/24 或 203.0.113.5/32
+ label VARCHAR(100), -- 备注,如「上海办公室」
+ is_active BOOLEAN NOT NULL DEFAULT TRUE,
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
+ created_by UUID REFERENCES public.platform_admins(id) ON DELETE SET NULL
+);
+
+CREATE INDEX idx_ip_whitelist_active ON public.ip_whitelist(cidr) WHERE is_active = TRUE;
+```
+
+### 2.3 审计日志(append-only)
+
+```sql
+-- ────────────────────────────────────────────────────────────
+-- 3. 审计日志(append-only)
+-- ────────────────────────────────────────────────────────────
+
+-- 平台操作审计日志(所有写操作 + 高危操作,无 deleted_at,无 UPDATE)
+CREATE TABLE public.platform_audit_logs (
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
+ operator_id UUID, -- 管理员 ID;NULL 表示系统自动操作
+ operator_name VARCHAR(100), -- 快照(防止账号删除后失去溯源)
+ action_type VARCHAR(50) NOT NULL,
+ -- CREATE_TENANT | SUSPEND_TENANT | RESUME_TENANT | DELETE_TENANT | HARD_DELETE_TENANT
+ -- RESTORE_DATA | TRIGGER_BACKUP | SYSTEM_UPGRADE | ROLLBACK
+ -- RESET_PASSWORD | CREATE_ADMIN | DEACTIVATE_ADMIN | FORCE_LOGOUT
+ -- UPDATE_IP_WHITELIST | UPDATE_BACKUP_SCHEDULE | EXPORT_DATA | ...
+ target_type VARCHAR(30) NOT NULL, -- Tenant | User | System | Backup | Admin
+ target_id VARCHAR(255), -- 操作对象 ID(UUID 或其他)
+ target_name VARCHAR(255), -- 操作对象可读名称(快照)
+ payload_summary TEXT, -- 操作内容摘要(非敏感字段)
+ result VARCHAR(10) NOT NULL DEFAULT 'SUCCESS'
+ CHECK (result IN ('SUCCESS','FAILED')),
+ error_message TEXT,
+ ip_address INET,
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
+ -- 无 deleted_at,无 UPDATE;建议按月 RANGE 分区
+);
+
+CREATE INDEX idx_audit_logs_operator ON public.platform_audit_logs(operator_id, created_at DESC);
+CREATE INDEX idx_audit_logs_action ON public.platform_audit_logs(action_type, created_at DESC);
+CREATE INDEX idx_audit_logs_target ON public.platform_audit_logs(target_type, target_id, created_at DESC);
+CREATE INDEX idx_audit_logs_created ON public.platform_audit_logs(created_at DESC);
+```
+
+### 2.4 备份与导出
+
+```sql
+-- ────────────────────────────────────────────────────────────
+-- 4. 备份与导出
+-- ────────────────────────────────────────────────────────────
+
+-- 定时备份计划(全局策略 + 租户覆盖策略)
+CREATE TABLE public.backup_schedules (
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
+ tenant_id UUID REFERENCES public.tenants(id) ON DELETE CASCADE,
+ -- NULL = 全局默认计划;非 NULL = 该租户的独立计划(覆盖全局)
+ frequency VARCHAR(10) NOT NULL DEFAULT 'daily'
+ CHECK (frequency IN ('hourly','daily','weekly')),
+ scheduled_time TIME NOT NULL DEFAULT '02:00', -- 执行时间窗口(UTC)
+ retention_count INTEGER NOT NULL DEFAULT 10, -- 最多保留 N 个备份版本
+ storage_target VARCHAR(20) NOT NULL DEFAULT 'r2'
+ CHECK (storage_target IN ('local','s3','r2','gcs')),
+ is_active BOOLEAN NOT NULL DEFAULT TRUE,
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
+ created_by UUID REFERENCES public.platform_admins(id) ON DELETE SET NULL,
+ UNIQUE (tenant_id) -- 每个租户最多一条独立计划;NULL tenant_id 用应用层保证全局唯一
+);
+
+-- 备份任务执行记录
+CREATE TABLE public.backup_records (
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
+ tenant_id UUID NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
+ trigger_type VARCHAR(10) NOT NULL
+ CHECK (trigger_type IN ('auto','manual','pre_upgrade','pre_restore')),
+ status VARCHAR(15) NOT NULL DEFAULT 'pending'
+ CHECK (status IN ('pending','in_progress','success','failed')),
+ storage_target VARCHAR(20) NOT NULL,
+ storage_path TEXT, -- R2/S3 存储路径
+ size_bytes BIGINT, -- 备份包大小
+ started_at TIMESTAMPTZ,
+ completed_at TIMESTAMPTZ,
+ error_message TEXT,
+ triggered_by UUID REFERENCES public.platform_admins(id) ON DELETE SET NULL,
+ upgrade_event_id UUID, -- 关联升级事件(pre_upgrade 类型)
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
+);
+
+CREATE INDEX idx_backup_records_tenant ON public.backup_records(tenant_id, created_at DESC);
+CREATE INDEX idx_backup_records_status ON public.backup_records(status)
+ WHERE status IN ('pending','in_progress');
+
+-- 数据导出任务(异步 Celery 执行)
+CREATE TABLE public.export_tasks (
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
+ tenant_id UUID NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
+ requested_by UUID REFERENCES public.platform_admins(id) ON DELETE SET NULL,
+ modules TEXT[] NOT NULL,
+ -- 'clients' | 'properties' | 'transactions' | 'system_config' | 'all'
+ format VARCHAR(10) NOT NULL
+ CHECK (format IN ('csv','json','sql_dump')),
+ status VARCHAR(15) NOT NULL DEFAULT 'pending'
+ CHECK (status IN ('pending','in_progress','done','failed')),
+ storage_path TEXT, -- R2 临时目录路径
+ download_url TEXT, -- 带签名下载链接
+ expires_at TIMESTAMPTZ, -- 下载链接有效期(默认 24 小时)
+ size_bytes BIGINT,
+ started_at TIMESTAMPTZ,
+ completed_at TIMESTAMPTZ,
+ error_message TEXT,
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
+);
+
+CREATE INDEX idx_export_tasks_tenant ON public.export_tasks(tenant_id, created_at DESC);
+CREATE INDEX idx_export_tasks_status ON public.export_tasks(status)
+ WHERE status IN ('pending','in_progress');
+```
+
+### 2.5 版本升级管理
+
+```sql
+-- ────────────────────────────────────────────────────────────
+-- 5. 版本升级管理
+-- ────────────────────────────────────────────────────────────
+
+-- 平台版本历史
+CREATE TABLE public.system_versions (
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
+ version_number VARCHAR(50) UNIQUE NOT NULL, -- 如 v2.3.1
+ release_notes TEXT,
+ artifact_url TEXT, -- 制品库地址
+ status VARCHAR(15) NOT NULL DEFAULT 'previous'
+ CHECK (status IN ('current','previous','archived')),
+ released_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
+ created_by UUID REFERENCES public.platform_admins(id) ON DELETE SET NULL
+);
+
+CREATE UNIQUE INDEX idx_system_versions_current ON public.system_versions(status)
+ WHERE status = 'current'; -- 全局只允许一个 current 版本
+
+-- 升级事件(每次执行升级或回滚对应一条记录)
+CREATE TABLE public.upgrade_events (
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
+ from_version_id UUID REFERENCES public.system_versions(id) ON DELETE SET NULL,
+ to_version_id UUID NOT NULL REFERENCES public.system_versions(id) ON DELETE RESTRICT,
+ event_type VARCHAR(10) NOT NULL
+ CHECK (event_type IN ('upgrade','rollback')),
+ strategy VARCHAR(10) NOT NULL DEFAULT 'full'
+ CHECK (strategy IN ('full','canary')), -- full = 全量,canary = 灰度
+ status VARCHAR(15) NOT NULL DEFAULT 'pending'
+ CHECK (status IN ('pending','health_check','in_progress','success','failed','rolled_back')),
+
+ -- 升级进度:每个租户的状态存为 JSONB 数组
+ -- [{tenant_id, tenant_name, status, started_at, completed_at, error}]
+ tenant_progress JSONB NOT NULL DEFAULT '[]',
+
+ -- 回滚触发条件
+ rollback_reason TEXT,
+ incident_report TEXT, -- 回滚后生成的事件报告
+
+ started_at TIMESTAMPTZ,
+ completed_at TIMESTAMPTZ,
+ initiated_by UUID REFERENCES public.platform_admins(id) ON DELETE SET NULL,
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
+);
+
+CREATE INDEX idx_upgrade_events_status ON public.upgrade_events(status, created_at DESC);
+```
+
+---
+
+## 三、关键约束与禁止操作
+
+| 规则 | 说明 |
+|------|------|
+| `tenant_status_logs` append-only | 禁止 UPDATE / DELETE;状态机变更只追加新行 |
+| `platform_audit_logs` append-only | 禁止 UPDATE / DELETE;建议按月 RANGE 分区 |
+| `public.tenants.schema_name` 不可修改 | 创建后禁止 UPDATE,PG schema 绑定 |
+| `public.domains.domain` 不可修改 | 子域名创建后禁止 UPDATE |
+| `system_versions` 唯一 current | `idx_system_versions_current` 部分唯一索引保证全局只有一个 `status='current'` |
+| `backup_schedules.tenant_id` UNIQUE | 每个租户最多一条独立计划;`NULL` 全局计划由应用层保证唯一 |
+| `platform_admins` 与 `staff` 完全独立 | 不共享表、不共享 auth 系统 |
+| MFA 强制 | `platform_admins.mfa_enabled` 在首次 TOTP 确认后才变 TRUE;登录流必须检查 |
+| `admin_sessions` 30 分钟滚动超时 | 应用层每次活跃请求更新 `expires_at = NOW() + 30min` |
+
+---
+
+## 四、状态机
+
+### 4.1 租户生命周期
+
+```
+creating ──(初始化完成)──► active
+active ──(逾期/违规/申请)──► suspended ──(恢复条件满足)──► active
+active ──(申请注销)──► pending_delete ──(30天后/管理员确认)──► deleted
+suspended ──(申请注销)──► pending_delete
+creating ──(初始化失败)──► failed
+```
+
+**字段映射**:
+- `status` 枚举:`creating | active | suspended | pending_delete | deleted | failed`
+- `suspended_until = NULL`:永久挂起;`suspended_until IS NOT NULL`:Celery Beat 定时自动恢复
+- `deleted_at`:软删除时间戳;硬删除时物理删除整行
+
+### 4.2 升级事件状态
+
+```
+pending → health_check → in_progress → success
+ └─► failed → rolled_back
+```
+
+---
+
+## 五、查询模式
+
+### 5.1 常用查询
+
+```sql
+-- 查询所有活跃租户
+SELECT id, name, plan, paid_until
+FROM public.tenants
+WHERE status = 'active'
+ORDER BY created_at DESC;
+
+-- 查询即将到期的租户(7 天内)
+SELECT id, name, contact_email, paid_until
+FROM public.tenants
+WHERE status = 'active'
+ AND paid_until BETWEEN CURRENT_DATE AND CURRENT_DATE + 7;
+
+-- 查询灰度租户(canary 升级目标)
+SELECT id, schema_name, name
+FROM public.tenants
+WHERE is_canary = TRUE AND status = 'active';
+
+-- 查询某租户所有状态变更历史
+SELECT from_status, to_status, reason, operator_name, created_at
+FROM public.tenant_status_logs
+WHERE tenant_id = $1
+ORDER BY created_at DESC;
+
+-- 查询待自动恢复的挂起租户(Celery Beat 使用)
+SELECT id, schema_name, name
+FROM public.tenants
+WHERE status = 'suspended'
+ AND suspended_until IS NOT NULL
+ AND suspended_until <= NOW();
+
+-- 查询某管理员近 30 天的审计记录
+SELECT action_type, target_type, target_name, result, created_at
+FROM public.platform_audit_logs
+WHERE operator_id = $1
+ AND created_at >= NOW() - INTERVAL '30 days'
+ORDER BY created_at DESC;
+
+-- 查询进行中的备份任务
+SELECT br.id, t.name AS tenant_name, br.trigger_type, br.started_at
+FROM public.backup_records br
+JOIN public.tenants t ON t.id = br.tenant_id
+WHERE br.status IN ('pending', 'in_progress')
+ORDER BY br.created_at DESC;
+```
+
+### 5.2 禁止查询
+
+| 禁止操作 | 原因 |
+|----------|------|
+| `UPDATE public.tenant_status_logs` | append-only 审计表 |
+| `DELETE FROM public.platform_audit_logs` | append-only 审计表 |
+| `UPDATE public.tenants SET schema_name = ...` | schema 名绑定 PG 物理 schema |
+| `UPDATE public.domains SET domain = ...` | 域名路由不可变 |
+
+---
+
+## 六、版本历史
+
+| 版本 | 日期 | 变更 |
+|------|------|------|
+| v1.0 | 2026-04-24 | 从 `DATA_MODEL.md §三` 独立拆分;内容等价于 v1.2 DATA_MODEL.md §三 |
diff --git a/Project/fonrey/DATA_MODEL/diagram/fonrey-data-model.xml b/Project/fonrey/DATA_MODEL/diagram/fonrey-data-model.xml
index 5a660db1..3aed24a7 100644
--- a/Project/fonrey/DATA_MODEL/diagram/fonrey-data-model.xml
+++ b/Project/fonrey/DATA_MODEL/diagram/fonrey-data-model.xml
@@ -499,6 +499,247 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wiki/concepts/Canary-Deployment.md b/wiki/concepts/Canary-Deployment.md
new file mode 100644
index 00000000..9bb4bc07
--- /dev/null
+++ b/wiki/concepts/Canary-Deployment.md
@@ -0,0 +1,56 @@
+---
+title: "Canary Deployment"
+type: concept
+tags: [DevOps, Deployment, Kubernetes, ECS, AWS]
+sources: [learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording]
+last_updated: 2026-05-05
+---
+
+# Canary Deployment
+
+## Definition
+金丝雀部署(Canary Deployment)是一种软件发布策略,通过将新版本逐步推向一小部分用户来降低风险——在新版本全面推广前,先将少量流量导向新版本,观察其行为和性能,验证无误后再逐步扩大比例。
+
+## Core Mechanism
+1. **流量分割**:将用户流量按比例分割(如 5%/10%/50%/100%)
+2. **逐步提升**:从低比例开始,逐步增加新版本流量
+3. **快速回滚**:发现问题时,立即将流量切回旧版本
+
+## Implementation in AWS
+
+### ECS (Elastic Container Service)
+ECS 模块支持金丝雀部署,通过 Target Group 权重调整实现流量控制:
+- 创建新旧两个 Task Definition
+- 通过 ALB/NLB 的 Target Group 逐步调整权重
+- 结合 CloudWatch 监控自动决策扩缩比例
+
+### EKS (Elastic Kubernetes Service)
+Kubernetes 原生支持金丝雀部署,通过以下机制:
+- `ReplicaSet` 控制新旧版本副本数
+- `Service` 选择器配合金丝雀标签
+- Argo Rollouts 等高级工具提供声明式金丝雀策略
+
+### AWS Tools
+- **AWS CodeDeploy**:原生支持 ECS 和 Lambda 的金丝雀部署策略
+- **ALB Target Groups**:权重路由实现流量分割
+- **CloudWatch**:金丝雀指标监控
+
+## Comparison with Other Deployment Strategies
+
+| 策略 | 风险 | 成本 | 适用场景 |
+|------|------|------|----------|
+| **Blue-Green** | 中 | 高(双倍资源) | 快速回滚需求 |
+| **Canary** | 低 | 中 | 生产验证 |
+| **Rolling** | 中 | 低 | 资源受限环境 |
+| **A/B Testing** | 低 | 中 | 功能验证 |
+
+## Key Metrics to Monitor
+- 错误率(5xx)
+- 延迟(P50/P95/P99)
+- 业务指标(转化率/点击率)
+- 资源利用率
+
+## Related Concepts
+- [[Blue-Green-Deployment]]:双环境切换策略
+- [[ECS-Module-Deployment]]:ECS 场景的模块化部署
+- [[Infrastructure-as-Code]]:部署自动化基础
diff --git a/wiki/concepts/Cross-account-Terraform-Modules.md b/wiki/concepts/Cross-account-Terraform-Modules.md
new file mode 100644
index 00000000..0607f05a
--- /dev/null
+++ b/wiki/concepts/Cross-account-Terraform-Modules.md
@@ -0,0 +1,61 @@
+---
+title: "Cross-account Terraform Modules"
+type: concept
+tags: [Terraform, Cross-Account, Modules, IaC, AWS]
+sources: [ctp-topic-16-cross-account-terraform-modules]
+last_updated: 2026-04-14
+---
+
+## Overview
+
+Cross-account Terraform Modules 指的是在单个 Terraform 模块中通过配置多个 AWS Provider,实现跨多个 AWS 账号同时创建或管理资源的能力。
+
+## Problem Statement
+
+在复杂的云架构中(如 AWS Landing Zone),经常需要在一个模块内跨多个账号创建资源。例如:
+- 在 **InfoBlocks 账号** 配置 DNS 记录
+- 在 **Workload 账号** 部署应用服务
+
+原有的 Gruntwork 流水线主要针对单账号设计,直接赋予账号间互访权限存在巨大安全风险——某一账号被攻破可能波及全局。
+
+## Solution Architecture
+
+基于 **Shared Account(共享账号)** 的中心化部署方案:
+
+1. **Jenkins 托管于 Shared Account**,当检测到模块目录中存在 `cross-account.json` 标记文件时,触发 ECS Deploy Runner
+2. **ECS Deploy Runner**(运行在 ECS 上的 Docker 容器)被授予特殊权限,通过 Assume Role 访问目标账号:
+ - `TF state bucket accessor`:读取目标账号 S3 桶中的 Terraform 状态文件
+ - `cross-account ECS deploy runner role`:在目标账号内执行资源部署
+3. 通过根目录 `terragrunt.hcl` 配置角色切换逻辑
+
+## Three Design Goals
+
+| Goal | Mechanism | Benefit |
+|------|-----------|---------|
+| **安全性** | 无 Workload 账号间直接信任,权限集中于 Shared Account | 控制 Blast Radius |
+| **自动化** | Jenkins 自动识别模块类型并选择正确部署路径 | 无人工干预 |
+| **可复用性** | 模块代码不硬编码特定账号的角色 | 灵活适配多环境 |
+
+## Key Files
+
+- `cross-account.json`:约定俗成的标记文件,放置于模块目录中,告知 Jenkins 调用跨账号部署逻辑
+- `terragrunt.hcl`(Root):全局 Terragrunt 配置文件,定义远程状态存储和角色切换逻辑
+
+## Relationships
+
+- [[ECS Deploy Runner]] — 执行单元,运行 Docker 容器执行 plan/apply
+- [[Shared Account]] — 信任源,托管 Jenkins 和公共服务
+- [[Terraform]] — 底层 IaC 工具
+- [[Gruntwork]] — 参考架构来源
+- [[AWS-Landing-Zone]] — 多账号架构框架
+
+## Related Concepts
+
+- [[Infrastructure-as-Code]] — 上层方法论
+- [[GitOps]] — 部署编排模式
+- [[Assume Role]] — 跨账号身份切换机制(AWS IAM)
+
+## Notes
+
+- 本方案与单账号 Gruntwork 流水线为**演进关系**而非冲突
+- 本方案与 Atlantis 跨账号 IAM Role 机制**类似**,但执行载体不同(ECS 容器 vs EC2)
diff --git a/wiki/concepts/DRY-Principle.md b/wiki/concepts/DRY-Principle.md
new file mode 100644
index 00000000..38b01c38
--- /dev/null
+++ b/wiki/concepts/DRY-Principle.md
@@ -0,0 +1,68 @@
+---
+title: "DRY Principle"
+type: concept
+tags:
+ - software-engineering
+ - iac
+ - best-practices
+sources: [ctp-topic-48-terraform-vs-terragrunt]
+last_updated: 2026-04-26
+---
+
+# DRY Principle
+
+## Definition
+
+DRY(Don't Repeat Yourself,勿重复自己)是一项软件工程原则,主张:**系统中的每一条知识必须有一个单一的、明确的、权威的表示**。DRY 的核心目标是减少重复代码和配置,提高系统的可维护性、可扩展性和可测试性。
+
+## Core Idea
+
+> "Every piece of knowledge must have a single, unambiguous, authoritative representation within a system."
+
+DRY 不是简单的"不复制粘贴",而是更深层的原则:**避免重复的知识**。这包括:
+- 代码逻辑
+- 配置文件
+- 文档注释
+- 数据结构
+
+## DRY in IaC
+
+在基础设施即代码(IaC)领域,DRY 尤为重要,因为基础设施配置往往需要在多个环境(dev/staging/prod)中复用:
+
+| 实践 | 说明 |
+|------|------|
+| **Terragrunt** | 封装 Terraform,通过 `remote_state` 和 `include` 块统一管理跨环境的 provider 和状态配置 |
+| **Terraform Modules** | 将可复用的基础设施组件抽象为模块,避免在每个环境中重复定义 |
+| **Service Catalog** | 企业级模块目录,支持三级复用(单账户→产品团队→跨团队) |
+| **Hierarchical Configuration** | 层级配置继承,父级定义通用配置,子级覆盖特定值 |
+
+**来源**: [[ctp-topic-48-terraform-vs-terragrunt]], [[ctp-topic-3-deploy-and-maintain-infrastructure]]
+
+## DRY vs WET
+
+| 原则 | 全称 | 结果 |
+|------|------|------|
+| **DRY** | Don't Repeat Yourself | 一次定义,多次引用 |
+| **WET** | Write Everything Twice | 多次重复,维护成本高 |
+
+WET 的典型反模式:
+- 复制粘贴配置到每个环境
+- 硬编码值而非使用变量
+- 注释与代码不同步
+
+## When NOT to Apply DRY
+
+DRY 不是绝对的,在以下情况下适度重复是可接受的:
+- **性能优化**:内联代码可能比函数调用更快
+- **可读性**:过度抽象可能导致代码难以理解
+- **解耦**:强制的 DRY 可能增加组件间的耦合
+
+## Related Concepts
+
+- [[Infrastructure-as-Code]] — DRY 原则的重要应用领域
+- [[Terraform]] — Terragrunt 的底层引擎
+- [[Terragrunt]] — DRY 原则在 Terraform 生态中的具体实现
+
+## Related Sources
+
+- [[ctp-topic-48-terraform-vs-terragrunt]]
diff --git a/wiki/concepts/Event-Driven-Architecture.md b/wiki/concepts/Event-Driven-Architecture.md
new file mode 100644
index 00000000..5f3c1266
--- /dev/null
+++ b/wiki/concepts/Event-Driven-Architecture.md
@@ -0,0 +1,108 @@
+---
+title: "Event-Driven Architecture"
+type: concept
+tags:
+ - Architecture
+ - Event-Driven
+ - Serverless
+ - AWS
+sources:
+ - public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee
+ - public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091
+ - public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091
+last_updated: 2026-05-05
+---
+
+## Definition
+
+Event-Driven Architecture(事件驱动架构)是一种软件设计范式,在该模式下,系统组件通过产生和消费事件(Event)进行异步通信,而非通过直接的函数调用或请求-响应模式。事件是系统中发生的重要动作或状态变化的声明式通知,事件消费者无需知道事件产生者的存在。
+
+## Core Principles
+
+| 原则 | 描述 |
+|------|------|
+| 异步通信 | 生产者和消费者解耦,无需同步等待响应 |
+| 事件声明 | 事件代表"发生了什么",而非"该做什么" |
+| 松耦合 | 生产者和消费者之间无直接依赖 |
+| 可扩展 | 新增消费者无需修改生产者代码 |
+
+## Event Anatomy
+
+典型事件包含:
+
+```json
+{
+ "event_id": "uuid",
+ "event_type": "ORDER_CREATED",
+ "source": "order-service",
+ "timestamp": "2026-04-14T10:00:00Z",
+ "data": { /* 业务相关数据 */ }
+}
+```
+
+## AWS Event-Driven Stack
+
+| 组件 | 角色 | 说明 |
+|------|------|------|
+| [[Amazon-EventBridge]] | 事件总线 | 接收、过滤、路由事件到目标 |
+| [[AWS-Lambda]] | 事件消费者 | 响应事件执行处理逻辑 |
+| [[Amazon-SNS]] | 事件发布/订阅 | 一对多广播消息 |
+| [[Amazon-SQS]] | 事件队列 | 可靠的事件持久化和顺序处理 |
+| [[Amazon-DynamoDB]] | 事件源 | DynamoDB Streams 触发 Lambda |
+| [[Amazon-S3]] | 事件源 | S3 事件通知触发 Lambda |
+
+## Serverless 中的事件驱动
+
+[[AWS-Lambda]] 是事件驱动架构的核心执行单元:
+
+- **事件即触发器**:Lambda 函数不主动运行,由事件触发
+- **事件源映射**:Lambda 轮询 Kinesis、DynamoDB Stream、SQS 获取事件
+- **状态变化即事件**:S3 对象上传、API Gateway 请求、DynamoDB 写入等均为事件
+
+## Event Patterns
+## EDA 三组件与事件代理类型
+
+| 组件 | 角色 | 说明 |
+|------|------|------|
+| 事件生产者(Producer) | 产生事件 | 服务检测到状态变化时发布事件 |
+| 事件消费者(Consumer) | 消费事件 | 订阅并处理事件,执行对应业务逻辑 |
+| 事件代理(Broker) | 路由/存储 | 分事件路由器和事件存储两类 |
+
+**事件路由器(Event Routers)**——按规则过滤事件并路由到正确消费者:
+- [[Amazon-EventBridge]]:更丰富,支持 Schema 注册、跨服务触发
+- [[Amazon-SNS]]:一对多广播(Fan-out)
+
+**事件存储(Event Stores)**——流式持久化事件,消费者自行过滤:
+- [[Amazon-SQS]]:标准队列(乱序/高性能)/ FIFO 队列(有序/Exactly-Once)
+- [[Kinesis-Data-Streams]]:有序事件流,支持重放
+
+## 编排模式:Choreography vs Orchestration
+
+| 模式 | 特点 | 适用场景 |
+|------|------|---------|
+| Choreography(编排) | 各微服务自主通信,无中央协调者 | 简单、独立的跨服务交互 |
+| Orchestration(编排) | 中央协调者(如 [[AWS-Step-Functions]])控制工作流步骤 | 复杂业务流程、需要事务保障 |
+
+## 生产级最佳实践
+
+1. **幂等性(Idempotency)**:同一操作执行一次或多次产生相同结果。[[AWS-Lambda]] 异步调用会自动重试,因此幂等性是处理重复消息的关键——尤其适用于订单、支付等场景。
+
+2. **事件排序**:
+ - **有序**:SQS FIFO 或 Kinesis Data Streams
+ - **乱序可接受**:标准 SQS 或 EventBridge(消费者自行处理乱序)
+
+3. **团队独立性**:采用去中心化所有权,平台团队提供基础设防(Cloud CoE),消费者团队自主按需消费事件。
+
+## Event Patterns
+1. **Pub/Sub**:SNS 主题广播,多消费者订阅同一事件类型
+2. **Event Streaming**:Kinesis/DynamoDB Stream 持久化事件流,支持重放
+3. **Fan-Out**:SNS 主题或 EventBridge 规则将事件分发到多个消费者
+4. **Competing Consumer**:同一消息同一时间只有一个消费者处理(SQS)
+5. **Dead-Letter Queue(DLQ)**:处理失败事件,防止消息丢失
+6. **Saga Pattern**:通过事件序列协调分布式事务
+7. **Event Sourcing**:完整记录所有状态变化事件作为唯一真相来源
+
+## Connections
+- [[Event-Driven-Architecture]] ← is_execution_model_of ← [[Serverless-Computing]]
+- [[Event-Driven-Architecture]] ← uses ← [[Amazon-EventBridge]]
+- [[Event-Driven-Architecture]] ← executed_by ← [[AWS-Lambda]]
diff --git a/wiki/concepts/Infrastructure-as-Code.md b/wiki/concepts/Infrastructure-as-Code.md
index 5e40bd27..ff5365db 100644
--- a/wiki/concepts/Infrastructure-as-Code.md
+++ b/wiki/concepts/Infrastructure-as-Code.md
@@ -1,37 +1,49 @@
---
title: "Infrastructure as Code"
type: concept
-tags: [DevOps, 自动化, 配置管理]
-sources: [ctp-topic-70-eks-deployment-using-iac, learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording, ctp-topic-16-cross-account-terraform-modules, ctp-topic-12-using-ses-smtp-service-terraform-module, learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]
-last_updated: 2026-04-24
+tags: [DevOps, AWS, Terraform, Automation]
+sources: [ctp-topic-3-deploy-and-maintain-infrastructure, ctp-topic-9-ci-cd-with-gruntwork, ctp-topic-48-terraform-vs-terragrunt, ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments, ctp-topic-33-an-introduction-to-gitops, ctp-topic-56-automated-infrastructure-testing, learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording]
+last_updated: 2026-05-05
---
# Infrastructure as Code
-## Overview
-Infrastructure as Code (IaC) 是一种通过代码定义和管理基础设施的方法,实现基础设施的标准化、可审计和可重复部署。
+## Definition
+基础设施即代码(Infrastructure as Code, IaC)是一种通过机器可读的定义文件(而非物理硬件配置或交互式配置工具)管理和配置计算基础设施的方法。
## Core Principles
-- **声明式配置**:定义期望的状态,而非执行的具体步骤
-- **版本控制**:所有基础设施配置纳入 Git 版本控制
-- **自动化部署**:通过 CI/CD 流水线自动化执行部署
-- **幂等性**:重复执行相同配置不产生副作用
+- **声明式配置**:描述期望的最终状态,而非执行的具体步骤
+- **版本控制**:所有基础设施定义文件存储在 Git 中
+- **幂等性**:多次执行产生相同结果
+- **可重复性**:同一模板可在不同环境快速部署
+- **自动化**:与 CI/CD 流水线集成
## Key Tools
-- **Terraform**:HashiCorp 的基础设施编排工具,支持多云
-- **AWS CloudFormation**:AWS 原生的 IaC 服务
-- **AWS Service Catalog**:AWS 的服务目录,封装标准化产品组合
-- **Pulumi**:使用编程语言(Python, TypeScript 等)定义基础设施
+- **Terraform**:HashiCorp 出品,云厂商无关的 IaC 工具,通过状态文件管理资源
+- **Terragrunt**:Terraform 轻量封装,贯彻 DRY 原则
+- **AWS CloudFormation**:AWS 原生 IaC 服务,JSON/YAML 模板
+- **Pulumi**:编程语言驱动的 IaC 平台
+- **Ansible**:配置管理和应用部署工具
-## Key Concepts
-- **HCL (HashiCorp Configuration Language)**:Terraform 的配置语言
-- **State Management**:Terraform 使用 state 文件追踪资源
-- **Modules**:可重用的基础设施组件
-- **Remote State**:远程状态存储,支持团队协作
+## Terraform Ecosystem
+- **Gruntwork**:预建 Terraform 模块库,生产级参考架构
+- **Atlantis**:Git 集成 Terraform 部署,PR 评论式协作
+- **Terratest**:Terraform 代码的 Go 测试框架
+- **tfsec**:Terraform 静态安全分析工具
+- **TFLint**:Terraform 代码规范检查
+
+## IaC in CTP Context
+CTP(Cloud Transformation Programme)使用 Terraform/Terragrunt 构建 AWS Landing Zone:
+- [[ctp-topic-3-deploy-and-maintain-infrastructure]]:Terragrunt HCL 文件与模块化管理
+- [[ctp-topic-9-ci-cd-with-gruntwork]]:Gruntwork CI/CD 流水线实践
+- [[ctp-topic-48-terraform-vs-terragrunt]]:Terraform 与 Terragrunt 对比选型
+- [[ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments]]:Atlantis 替代 Jenkins
+- [[ctp-topic-56-automated-infrastructure-testing]]:TerraTest 自动化测试
+- [[learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording]]:ECS IaC 部署实践
## Related Concepts
-- [[Terraform]]:最流行的 IaC 工具之一
-- [[AWS Service Catalog]]:AWS IaC 产品目录
-- [[GitOps]]:基于 Git 的运维方法论
-- [[CI/CD Pipeline]]:自动化部署流水线
-- [[DevOps Culture]]:IaC 是 DevOps 实践的核心组成
+- [[GitOps]]:Git 作为 IaC 的单一真相来源
+- [[CI/CD Pipeline]]:IaC 与 CI/CD 流水线的集成
+- [[Policy-as-Code]]:IaC 扩展至安全合规策略
+- [[Canary-Deployment]]:基于 IaC 的金丝雀部署策略
+- [[Atlantis]]:GitOps 驱动的 Terraform 协作工具
diff --git a/wiki/concepts/Serverless-Computing.md b/wiki/concepts/Serverless-Computing.md
index 8263daea..0ebe6ab5 100644
--- a/wiki/concepts/Serverless-Computing.md
+++ b/wiki/concepts/Serverless-Computing.md
@@ -1,76 +1,70 @@
---
title: "Serverless Computing"
type: concept
-tags: [Cloud, Serverless, Cloud Native, Edge Computing]
-date: 2026-04-26
+tags:
+ - Cloud
+ - Serverless
+ - AWS
+ - DevOps
+sources:
+ - public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee
+last_updated: 2026-04-14
---
-# Serverless Computing (无服务器计算)
-
## Definition
-**Serverless Computing** is a cloud execution model where the cloud provider dynamically manages the allocation and provisioning of servers. Developers can build and deploy applications without worrying about infrastructure management.
-## Key Characteristics
-- **No server management**: Cloud provider handles infrastructure
-- **Automatic scaling**: Resources scale based on demand
-- **Pay-per-use**: Pay only for execution time
-- **Event-driven**: Functions respond to events/triggers
+Serverless Computing(无服务器计算)是一种云原生执行模型,在该模式下,云厂商承担底层基础设施的全部运维责任(负载均衡、自动扩展、安全补丁、容量管理),开发者只需专注编写业务逻辑代码。Serverless 并非"无服务器",而是将服务器管理抽象给云厂商。
-## Key Platforms
+## Core Characteristics
-| Provider | Service |
-|----------|---------|
-| AWS | Lambda |
-| Azure | Azure Functions |
-| GCP | Cloud Functions |
+| 特性 | 描述 |
+|------|------|
+| 无运维 | 云厂商管理服务器操作系统、运行时和安全补丁 |
+| 事件驱动 | 函数由事件触发,事件即资源状态的任何变化 |
+| 按需付费 | 仅在函数执行时计费(按调用次数和执行时长) |
+| 自动扩展 | 云厂商根据请求量自动水平扩展,无需人工干预 |
+| 内置安全 | 云厂商提供基础安全能力(网络隔离、IAM 权限控制) |
-## Benefits
+## Business Value
-### 1. Cost Efficiency
-- Eliminates unnecessary resource consumption
-- No idle capacity costs
-- Pay only for actual execution time
+企业采用 Serverless 的核心驱动因素:
+- **更快上市时间**(Faster Time to Market):开发团队专注业务逻辑,无需管理基础设施
+- **业务聚焦**(Business Focus):将非核心运维任务外包给云厂商
+- **更低 TCO**(Total Cost of Ownership):按需付费,空闲时零成本
+- **弹性扩展**(Elastic Scalability):从零到百万并发自动应对
+- **内置安全**(Built-in Security):云厂商持续更新安全补丁
-### 2. Scalability
-- Automatic scaling from zero to thousands of instances
-- Handles traffic spikes without provisioning
-- Global distribution ready
+## AWS Serverless Ecosystem
-### 3. Developer Productivity
-- Focus on business logic, not infrastructure
-- Faster deployment cycles
-- Reduced operational overhead
+AWS 提供完整的 Serverless 服务矩阵:
-## Use Cases
+| 服务 | 作用 | 关系 |
+|------|------|------|
+| [[AWS-Lambda]] | 无服务器计算核心 | 函数执行层 |
+| [[Amazon-API-Gateway]] | API 创建、发布、安全 | API 暴露层 |
+| [[AWS-Step-Functions]] | 工作流编排 | 流程编排层 |
+| [[Amazon-EventBridge]] | 事件总线 | 事件路由层 |
+| [[AWS-Fargate]] | 无服务器容器 | 容器层的 Serverless |
+| [[Amazon-DynamoDB]] | 无服务器数据库 | 数据持久层 |
+| [[SAM-Serverless-Application-Model]] | 本地开发和部署工具 | 开发工具层 |
-### Event-Driven Automation
-- Real-time file processing
-- Automated backups
-- Scheduled tasks and cron jobs
+## Shared Responsibility Model
-### API Backends
-- Microservices architecture
-- Real-time data processing
-- IoT data ingestion
+在 Serverless 环境中,AWS 与客户共担运维责任:
-### AI/ML Inference
-- On-demand model inference
-- Image and video processing
-- Natural language processing
+- **AWS 负责**:基础设施、服务器硬件、网络、运行时环境、安全补丁、负载均衡、自动扩展
+- **客户负责**:业务代码、依赖管理、权限配置(IAM)、应用程序级别的安全
-## Relationship to Green Computing
-- Serverless computing contributes to [[Green Computing]] by:
- - Eliminating idle resource consumption
- - Optimizing energy efficiency through shared infrastructure
- - Reducing data center carbon footprint
+## Event-Driven Architecture Connection
+
+Serverless 天然契合 [[Event-Driven-Architecture]] 模式:
+
+1. **事件源**(Event Source):S3、API Gateway、EventBridge、DynamoDB Stream 等
+2. **事件路由器**(Event Router):EventBridge、SNS 等筛选和路由事件
+3. **Lambda 函数**(Function):消费事件,执行业务逻辑
+4. **下游服务**(Downstream):DynamoDB、SQS、SNS 等处理结果
## Related Concepts
-- [[Cloud-Native]]
-- [[Green Computing]]
-- [[Event-Driven-Architecture]]
-- [[Edge-Computing]]
-
-## Related Entities
-- [[AWS Lambda]]
-- [[Azure Functions]]
-- [[Google Cloud Functions]]
+- [[Event-Driven-Architecture]] — Serverless 的天然执行模型
+- [[Lambda-Permissions-Model]] — Serverless 函数的安全权限模型
+- [[Cloud-Transformation-Programme]] — Serverless 是云转型的关键技术路径之一
diff --git a/wiki/entities/AWS-Lambda.md b/wiki/entities/AWS-Lambda.md
new file mode 100644
index 00000000..8abf75a3
--- /dev/null
+++ b/wiki/entities/AWS-Lambda.md
@@ -0,0 +1,78 @@
+---
+title: "AWS Lambda"
+type: entity
+tags:
+ - AWS
+ - Serverless
+ - Compute
+ - Lambda
+sources:
+ - public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee
+last_updated: 2026-04-14
+---
+
+## Aliases
+- Lambda
+- AWS Lambda
+
+## Definition
+
+AWS Lambda 是 AWS 的无服务器(Serverless)计算服务——开发者只需编写业务逻辑函数(Handler),AWS 负责所有底层运维:负载均衡、自动扩展、安全补丁和容量管理。Lambda 函数由事件(event)触发,事件即云资源状态的任何变化。
+
+## Core Properties
+
+| 属性 | 值 |
+|------|-----|
+| 触发模式 | 同步调用、异步调用、事件源映射 |
+| 权限模型 | 执行角色(Execution Role)+ 资源策略(Resource-Based Policy) |
+| 代码管理 | 版本(Version)、别名(Alias)、Layers(共享公共依赖) |
+| 架构支持 | x86 和 ARM64(ARM64 提供更优性价比) |
+| 监控 | CloudWatch 指标(请求数、错误数、延迟、节流) |
+| 调试工具 | Amazon Q(集成 AI 辅助调试) |
+| 性能调优 | Lambda Power Tuning(比较不同配置的性能和成本) |
+
+## Lambda Handler 模式
+
+Lambda 函数接收三个核心参数:
+
+1. **Handler** — 入口函数,事件触发时执行
+2. **Event Object** — 触发事件的数据结构(API Gateway 请求、S3 对象变更等)
+3. **Context Object** — 运行时信息(超时设置、内存限制、日志句柄等)
+
+## Invocation Patterns
+
+- **同步调用(Synchronous)**:调用方等待响应,如 API Gateway → Lambda
+- **异步调用(Asynchronous)**:Lambda 自动处理重试(最多 2 次),如 S3 事件 → Lambda
+- **事件源映射(Event Source Mapping)**:Lambda 轮询流式服务(Kinesis、DynamoDB Stream、SQS)批量处理记录
+
+## Permissions Model
+
+Lambda 权限模型基于 IAM 的最小权限原则:
+
+| 权限类型 | 作用对象 | 说明 |
+|---------|---------|------|
+| Execution Role | Lambda 函数 | 定义函数能调用哪些 AWS 资源和服务 |
+| Resource-Based Policy | 其他 AWS 账号/服务 | 定义谁能/什么能触发该 Lambda 函数 |
+
+## Lambda Layers
+
+Lambda Layers 允许跨多个 Lambda 函数共享公共代码和依赖:
+- 运行时环境(如 Python boto3 库)
+- 自定义运行时
+- 配置和脚本
+
+Layers 避免了每个函数重复打包相同依赖,减少部署包大小和更新成本。
+
+## Connections
+- [[Serverless-Computing]] ← is_core_service_of ← [[AWS-Lambda]]
+- [[AWS-Lambda]] ← triggered_by ← [[Amazon-EventBridge]]
+- [[AWS-Lambda]] ← exposed_via ← [[Amazon-API-Gateway]]
+- [[AWS-Lambda]] ← orchestrated_by ← [[AWS-Step-Functions]]
+- [[AWS-Lambda]] ← monitored_by ← [[CloudWatch]]
+- [[SAM-Serverless-Application-Model]] ← deploys ← [[AWS-Lambda]]
+
+## Related Entities
+- [[Amazon-API-Gateway]] — Lambda 的 API 暴露层
+- [[AWS-Step-Functions]] — Lambda 的工作流编排层
+- [[Amazon-EventBridge]] — Lambda 的事件驱动触发源
+- [[CloudWatch]] — Lambda 的监控和日志层
diff --git a/wiki/entities/AWS-Step-Functions.md b/wiki/entities/AWS-Step-Functions.md
new file mode 100644
index 00000000..6d53d09d
--- /dev/null
+++ b/wiki/entities/AWS-Step-Functions.md
@@ -0,0 +1,56 @@
+---
+title: "AWS Step Functions"
+type: entity
+tags:
+ - AWS
+ - Serverless
+ - Workflow
+ - Orchestration
+sources:
+ - public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee
+last_updated: 2026-04-14
+---
+
+## Aliases
+- Step Functions
+- AWS Step Functions
+- Amazon Step Functions
+
+## Definition
+
+AWS Step Functions 是 AWS 的无服务器工作流编排服务,基于状态机(State Machine)协调多个 Lambda 函数和 AWS 服务的执行顺序和错误处理逻辑,使开发者无需编写复杂的编排代码即可构建可靠的多步骤业务流程。
+
+## Core Properties
+
+| 属性 | 值 |
+|------|-----|
+| 核心抽象 | 状态机(Standard 和 Express 两种) |
+| Standard 工作流 | 长时运行,最长 1 年,支持精确执行历史 |
+| Express 工作流 | 高频场景,最长 5 分钟,支持极高吞吐量 |
+| 状态类型 | Task、Choice、Wait、Pass、Parallel、Map、End、Throw |
+| 错误处理 | 内置 Retry、Catch 和 Error 字段 |
+| 可视化 | 自动生成工作流图形,直观展示执行路径 |
+
+## Workflow Flavors
+
+| 类型 | 适用场景 | 执行时长 | 计费模式 |
+|------|---------|---------|---------|
+| Standard | 长时业务流程、审批流、数据处理管道 | 最长 1 年 | 按状态转换计费 |
+| Express | 高频事件处理、IoT 数据流水线、实时流处理 | 最长 5 分钟 | 按执行次数+GB/s计费 |
+
+## State Types
+
+Step Functions 提供丰富的状态类型构建复杂工作流:
+
+- **Task**:执行单个原子工作单元(如调用 Lambda、DynamoDB 操作)
+- **Choice**:条件分支,基于数据动态路由执行路径
+- **Wait**:等待指定时间(用于轮询、重试间隔)
+- **Pass**:直接传递输入到输出(数据转换)
+- **Parallel**:并行执行多个分支,汇合结果
+- **Map**:迭代处理数组中的每个元素
+- **End/Try-Throw**:终止和错误处理
+
+## Connections
+- [[AWS-Step-Functions]] ← orchestrates ← [[AWS-Lambda]]
+- [[AWS-Step-Functions]] ← is_a ← [[Serverless-Computing]]
+- [[AWS-Step-Functions]] ← triggers ← [[Amazon-EventBridge]]
diff --git a/wiki/entities/Amazon-API-Gateway.md b/wiki/entities/Amazon-API-Gateway.md
new file mode 100644
index 00000000..6a58a056
--- /dev/null
+++ b/wiki/entities/Amazon-API-Gateway.md
@@ -0,0 +1,60 @@
+---
+title: "Amazon API Gateway"
+type: entity
+tags:
+ - AWS
+ - Serverless
+ - API
+ - Networking
+sources:
+ - public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee
+last_updated: 2026-04-14
+---
+
+## Aliases
+- API Gateway
+- Amazon API Gateway
+- AWS API Gateway
+
+## Definition
+
+Amazon API Gateway 是 AWS 的全托管 API 管理服务,用于创建、发布、维护和监控安全的企业级 REST、HTTP 和 WebSocket API。API Gateway 作为 Lambda 函数和其他后端服务的统一入口,提供流量管理、授权和访问控制、监控等企业级能力。
+
+## Core Properties
+
+| 属性 | 值 |
+|------|-----|
+| API 类型 | REST API、HTTP API、WebSocket API |
+| 部署选项 | Edge-Optimized、Regional、Private |
+| 认证方式 | IAM 角色、Lambda Authorizer、Cognito、API Key |
+| 协议 | HTTPS(TLS 终止由 AWS 管理) |
+| 限流 | 按账户/按 API/按客户多级限流 |
+| 缓存 | 可选 API 缓存,提升响应速度 |
+| 监控 | CloudWatch 集成,提供延迟、错误率等指标 |
+
+## Deployment Options
+
+| 选项 | 说明 | 适用场景 |
+|------|------|---------|
+| Edge-Optimized | 通过 CloudFront CDN 全球分发,低延迟 | 面向全球用户的公共 API |
+| Regional | 部署在单一区域,自带高可用 | 面向同区域用户、VPC 内的 API |
+| Private | 仅可通过 VPC 内部端点访问 | 企业内部 API、微服务间通信 |
+
+## Typical Architecture
+
+```
+客户端 → API Gateway → Lambda Function → DynamoDB/SQS/etc.
+```
+
+API Gateway 负责:
+1. TLS 终止(安全)
+2. 请求验证(格式、参数)
+3. 限流和配额管理
+4. 授权和身份验证
+5. 请求路由到后端 Lambda
+6. 响应转换和格式统一
+
+## Connections
+- [[Amazon-API-Gateway]] ← exposes ← [[AWS-Lambda]]
+- [[Amazon-API-Gateway]] ← provides ← [[Serverless-Computing]]
+- [[Amazon-API-Gateway]] ← monitored_by ← [[CloudWatch]]
diff --git a/wiki/entities/Atlantis.md b/wiki/entities/Atlantis.md
new file mode 100644
index 00000000..1bac86dc
--- /dev/null
+++ b/wiki/entities/Atlantis.md
@@ -0,0 +1,95 @@
+---
+title: "Atlantis"
+type: entity
+tags:
+ - devops
+ - iac
+ - terraform
+ - gitops
+ - cicd
+created: 2026-04-26
+---
+
+# Atlantis
+
+## Definition
+
+Atlantis 是一个开源的**Terraform CI/CD 工具**,通过与 GitHub/GitLab 深度集成,将 Terraform 的 plan 和 apply 操作转移到 Pull Request(PR)评论层面,实现基础设施即代码的协作式自动化部署。
+
+## Core Model: PR-Driven IaC
+
+Atlantis 的核心理念:**每个 Pull Request 都是一次 Terraform 操作**。
+
+```
+Developer Atlantis AWS Accounts
+ │ │ │
+ │ 1. Open PR │ │
+ │───────────────────────>│ │
+ │ │ 2. !atlantis plan │
+ │ │───────────────────────>│
+ │ │<───────────────────────│ 3. terraform plan
+ │ 4. Post plan result │ │
+ │<───────────────────────│ │
+ │ 5. Review & Approve │ │
+ │───────────────────────>│ │
+ │ │ 6. !atlantis apply │
+ │ │───────────────────────>│
+ │ │<───────────────────────│ 7. terraform apply
+ │ 8. Merge PR │ │
+ │───────────────────────>│ │
+```
+
+**来源**: [[ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments]]
+
+## Key Features
+
+| 特性 | 说明 |
+|------|------|
+| **PR 评论触发** | 无需独立 CI 账号,开发者在 PR 上评论即可 |
+| **并行 plan/apply** | 多模块并发执行,提升部署效率 |
+| **锁定机制** | 防止多 PR 同时操作同一模块产生冲突 |
+| **跨账户访问** | 通过 IAM 角色实现多 AWS 账户部署 |
+| **零额外基础设施** | 只需一台 EC2 共享账户实例 |
+
+**来源**: [[ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments]]
+
+## Comparison: Atlantis vs Jenkins
+
+| 维度 | Atlantis | Jenkins |
+|------|----------|---------|
+| 触发方式 | PR 评论 | SCM 轮询/定时 |
+| 初始化速度 | 快速(按需) | 慢(Jenkins 预配置) |
+| 代码克隆 | 单次 | 多次 |
+| 测试执行 | 并行 | 顺序 |
+| 架构复杂度 | 简单 | 复杂(持续叠加功能) |
+| Terraform 专用 | ✅ 是 | ❌ 通用(需配置) |
+| PR 协作 | ✅ 原生 | ❌ 无 |
+
+**来源**: [[ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments]]
+
+## Micro Focus Usage
+
+Micro Focus 在 Labs Landing Zone 中使用 Atlantis 替代 Jenkins 进行 Terraform IaC 部署:
+- 每个 Landing Zone 共享账户部署单台 EC2 实例
+- GitHub Enterprise Webhook 接收 PR 事件
+- 服务账号负责评论/合并/关闭 PR
+- Atlantis 在 merge 前即应用变更
+
+**局限性**: Atlantis 当前不支持 EKS 部署,需通过 Jenkins + Terragrunt 模块替代。
+
+**来源**: [[ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments]], [[ctp-topic-39-implementing-eks-in-the-aws-lab-landing-zone]]
+
+## Related Entities
+
+- [[Terraform]] — Atlantis 操作的核心 IaC 工具
+- [[Gruntwork]] — Terragrunt 的开发者(Atlantis 生态伙伴)
+
+## Related Concepts
+
+- [[GitOps]] — Atlantis 是 GitOps 在 Terraform 领域的实现工具
+- [[CI/CD Pipeline]] — Atlantis 提供 CI/CD 能力
+
+## Related Sources
+
+- [[ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments]]
+- [[ctp-topic-39-implementing-eks-in-the-aws-lab-landing-zone]]
diff --git a/wiki/entities/Gruntwork.md b/wiki/entities/Gruntwork.md
index 0529e453..b69025e9 100644
--- a/wiki/entities/Gruntwork.md
+++ b/wiki/entities/Gruntwork.md
@@ -1,30 +1,32 @@
---
title: "Gruntwork"
type: entity
-sources: [ctp-topic-17-active-directory-services-in-gruntwork-aws-lzs]
-last_updated: 2026-04-14
+tags: [AWS, IaC, DevOps, Terraform]
+sources: [ctp-topic-9-ci-cd-with-gruntwork, ctp-topic-48-terraform-vs-terragrunt, learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording]
+last_updated: 2026-05-05
---
+# Gruntwork
+
## Overview
-Gruntwork 是 Micro Focus Cloud Transformation Programme (CTP) 中采用的 AWS Landing Zones 基础设施框架提供方。Gruntwork Landing Zones 提供预配置的、基于最佳实践的 AWS 基础架构模板,帮助企业快速构建符合安全和合规要求的 AWS 多账户架构。
+Gruntwork 是一家专注于 AWS 基础设施即代码(IaC)的公司,提供预构建、可定制的 Terraform 模块库,帮助团队快速构建生产级云基础设施。
-## Aliases
-- Gruntwork AWS Landing Zones
-- Gruntwork LZ
+## Products
+- **Gruntwork Landing Zone Architecture**:基于 Terraform/Terragrunt 的 AWS Landing Zone 参考架构,涵盖账户结构、网络、安全、运维等基础设施层
+- **Gruntwork Infrastructure Live**:生产级 Terraform 模块库,支持多账户、多区域部署
+- **Pipelines**:Gruntwork 推荐的 CI/CD 流水线方案,集成 GitHub Actions/Jenkins
-## Key Capabilities
-- **多环境支持**:区分 R&D Labs 和 SAS(Staging/Production)两种环境类型,分别对应不同的 AD 域名架构
-- **预制 AMI**:SRE 团队维护内置域加入脚本的标准化机器镜像
-- **IaC 集成**:与 Terraform/TerraGrunt 深度集成,支持 `user_data` 触发自动化域加入流程
-- **AD 集成**:提供标准化的 Active Directory 服务集成方案,包括 DNS 管理和安全动态更新
+## Key Modules
+- **ECS 模块**:Docker 容器部署模块,CTP/SRE 团队在此基础上构建了自己的 ECS 模块(实现 Listener 集中管理)
+- **EKS 模块**:Kubernetes 集群部署模块
+- **Landing Zone 模块**:AWS 组织、账户、OU 架构
-## Related Entities
-- [[SRE Team]]:构建和维护 Gruntwork LZ 中预制 AMI 的团队
-- [[Gruntwork AWS Landing Zones Overview]]:Gruntwork LZ 的整体架构概述
-- [[ctp-topic-17-active-directory-services-in-gruntwork-aws-lzs]]:AD 服务集成的核心参考文档
+## Gruntwork in CTP Context
+- [[ctp-topic-9-ci-cd-with-gruntwork]]:CTP Topic 9 深入 Gruntwork CI/CD 实践
+- [[ctp-topic-48-terraform-vs-terragrunt]]:Terraform 与 Terragrunt 对比,Gruntwork 作为辅助工具推荐
+- [[learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording]]:CTP 团队在 Gruntwork 仓库基础上开发 ECS 模块
-## References
-- [[ctp-topic-17-active-directory-services-in-gruntwork-aws-lzs]]
-- [[ctp-topic-14-octane-hub-on-aws-real-life-experience-moving-production-services-i]]
-- [[ctp-topic-9-ci-cd-with-gruntwork]]
-- [[ctp-topic-1-gruntwork-landing-zone-architecture]]
+## Connections
+- [[HashiCorp]] ← provider_of ← [[Terraform]] ← uses ← [[Gruntwork]]
+- [[Atlantis]] ← alternative_to ← [[Gruntwork-Pipelines]]
+- [[Gruntwork]] ← builds_on ← [[Infrastructure-as-Code]]
diff --git a/wiki/entities/HashiCorp.md b/wiki/entities/HashiCorp.md
new file mode 100644
index 00000000..80ac7481
--- /dev/null
+++ b/wiki/entities/HashiCorp.md
@@ -0,0 +1,59 @@
+---
+title: "HashiCorp"
+type: entity
+tags:
+ - devops
+ - iac
+ - infrastructure
+ - tools
+created: 2026-04-26
+---
+
+# HashiCorp
+
+## Definition
+
+HashiCorp 是全球领先的**云基础设施自动化**软件公司,总部位于旧金山,创立于 2012 年。HashiCorp 提供一套完整的基础设施生命周期管理工具,覆盖配置管理、机密管理、服务网格和网络自动化等领域。
+
+## Core Products
+
+| 产品 | 用途 | 类别 |
+|------|------|------|
+| **Terraform** | 云厂商无关的基础设施即代码 | IaC |
+| **Vault** | 机密管理与加密即服务 | 安全 |
+| **Nomad** | 容器和工作负载调度器 | 编排 |
+| **Consul** | 服务网格与服务发现 | 网络 |
+| **Packer** | 机器镜像构建自动化 | 镜像 |
+| **Vagrant** | 开发环境管理 | 开发环境 |
+
+## Terraform
+
+HashiCorp 最知名的产品。Terraform 是用 Golang 编写的云无关 IaC 工具,通过声明式 HCL(HashiCorp Configuration Language)管理跨多云和混合云环境的基础设施资源。
+
+**关键特性:**
+- 云厂商无关(AWS/Azure/GCP/On-prem)
+- `terraform plan` 预览变更
+- 状态文件管理实际资源与期望状态的绑定
+- 丰富的 Provider 生态系统和 Module 市场
+
+**来源**: [[ctp-topic-48-terraform-vs-terragrunt]]
+
+## Business Model
+
+- **开源**:所有产品的开源版本
+- **Enterprise**:企业级功能(SSO、RBAC、审计日志、Sentinel 策略)
+- **HCP(HashiCorp Cloud Platform)**:SaaS 托管版本
+
+## Related Entities
+
+- [[Terraform]] — HashiCorp 出品的核心 IaC 产品
+- [[Terragrunt]] — 第三方 Terraform 封装工具(贯彻 DRY 原则)
+
+## Related Concepts
+
+- [[Infrastructure-as-Code]] — HashiCorp 产品的核心方法论
+- [[Multi-Cloud Strategy]] — Terraform 云无关定位的战略价值
+
+## Related Sources
+
+- [[ctp-topic-48-terraform-vs-terragrunt]]
diff --git a/wiki/entities/SAM-Serverless-Application-Model.md b/wiki/entities/SAM-Serverless-Application-Model.md
new file mode 100644
index 00000000..dcaf92b4
--- /dev/null
+++ b/wiki/entities/SAM-Serverless-Application-Model.md
@@ -0,0 +1,86 @@
+---
+title: "SAM Serverless Application Model"
+type: entity
+tags:
+ - AWS
+ - Serverless
+ - IaC
+ - CloudFormation
+sources:
+ - public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee
+last_updated: 2026-04-14
+---
+
+## Aliases
+- SAM
+- AWS SAM
+- Serverless Application Model
+
+## Definition
+
+AWS SAM(Serverless Application Model)是 AWS 官方的开源 IaC 工具,基于 AWS CloudFormation 构建,专门简化无服务器应用(Lambda、API Gateway、Step Functions 等)的定义、部署和管理。SAM 提供简化的 YAML 语法,降低 CloudFormation 模板的复杂度,同时支持本地开发和测试。
+
+## Core Properties
+
+| 属性 | 值 |
+|------|-----|
+| 基础 | AWS CloudFormation |
+| 配置格式 | YAML(简化语法) |
+| CLI | AWS SAM CLI,支持本地调用和测试 |
+| 本地测试 | SAM Local — 本地启动 API Gateway + Lambda |
+| 部署 | `sam deploy`、`sam build`、`sam package` |
+| 应用发布 | AWS Serverless Application Repository(应用市场) |
+
+## SAM vs CloudFormation
+
+| 特性 | SAM | CloudFormation |
+|------|-----|----------------|
+| 语法 | 简化 YAML | JSON/YAML |
+| 资源类型 | 仅 Serverless 资源 | 全部 AWS 资源 |
+| 本地测试 | SAM Local | 不支持 |
+| 打包上传 | `sam package` | `aws cloudformation package` |
+| 模板继承 | `!Sub`、`!Ref` | 原生支持 |
+
+## Typical SAM Template
+
+```yaml
+AWSTemplateFormatVersion: '2010-09-09'
+Transform: AWS::Serverless-2016-10-31
+Resources:
+ MyFunction:
+ Type: AWS::Serverless::Function
+ Properties:
+ Handler: app.handler
+ Runtime: python3.12
+ Events:
+ ApiEvent:
+ Type: Api
+ Properties:
+ Path: /hello
+ Method: get
+ MyApi:
+ Type: AWS::Serverless::Api
+ Properties:
+ StageName: prod
+ DefinitionBody:
+ # OpenAPI spec
+```
+
+## SAM CLI 常用命令
+
+| 命令 | 作用 |
+|------|------|
+| `sam init` | 初始化新 SAM 项目 |
+| `sam build` | 构建应用(处理依赖、Layer) |
+| `sam local invoke` | 本地调用 Lambda 函数 |
+| `sam local start-api` | 本地启动完整 API(API Gateway + Lambda) |
+| `sam deploy` | 交互式部署到 AWS |
+| `sam package` | 打包模板和代码到 S3 |
+| `sam validate` | 验证模板语法 |
+
+## Connections
+- [[SAM-Serverless-Application-Model]] ← builds_on ← [[CloudFormation]]
+- [[SAM-Serverless-Application-Model]] ← deploys ← [[AWS-Lambda]]
+- [[SAM-Serverless-Application-Model]] ← deploys ← [[Amazon-API-Gateway]]
+- [[SAM-Serverless-Application-Model]] ← deploys ← [[AWS-Step-Functions]]
+- [[SAM-Serverless-Application-Model]] ← is_tool_of ← [[Serverless-Computing]]
diff --git a/wiki/entities/Terraform.md b/wiki/entities/Terraform.md
index c479e854..fc55bc42 100644
--- a/wiki/entities/Terraform.md
+++ b/wiki/entities/Terraform.md
@@ -102,6 +102,36 @@ Agentic AI 在 Terraform 工作流中扮演审查者角色:
> acl = "private" # Block public access
> ```
+## State File Management
+
+Terraform 通过**状态文件 (state file)** 将声明式配置中定义的**期望状态**与云环境的**实际资源状态**进行绑定。关键特性:
+- **状态锁定**:防止并发执行导致状态不一致
+- **远程状态**:企业级场景需将状态文件存储在 S3(+ DynamoDB 锁)等远程后端,支持团队协作
+- **差异对比**:`terraform plan` 预览实际变更内容再执行,是 Terraform 的核心优势
+
+**来源**: [[ctp-topic-48-terraform-vs-terragrunt]]
+
+## Terragrunt Wrapper
+
+Terragrunt 是 Terraform 的轻量封装,继承所有 Terraform 命令(HCL 语法完全兼容)。两者关系:
+- `terragrunt plan` = `terraform plan`
+- Terragrunt 通过 `remote_state` 和 `include` 块实现跨环境配置的 DRY 管理
+
+**来源**: [[ctp-topic-48-terraform-vs-terragrunt]]
+
+## Ecosystem Tools
+
+| 工具 | 类型 | 用途 |
+|------|------|------|
+| [[Terragrunt]] | 封装 | 多环境 DRY 配置 |
+| [[Atlantis]] | CI/CD | Git PR 驱动的 plan/apply |
+| Terraform Enterprise | 平台 | 企业 CI + workspaces |
+| [[Gruntwork]] | 模块库 | 预建可复用 IaC 模块 |
+| Terratest | 测试 | IaC 集成测试(Golang) |
+| tfsec | 安全 | Terraform 静态安全分析 |
+
+**来源**: [[ctp-topic-48-terraform-vs-terragrunt]], [[ctp-topic-56-automated-infrastructure-testing]]
+
## Related Concepts
- [[Infrastructure-as-Code]] — Terraform 是 IaC 的实现工具
diff --git a/wiki/entities/Terragrunt.md b/wiki/entities/Terragrunt.md
new file mode 100644
index 00000000..6939b947
--- /dev/null
+++ b/wiki/entities/Terragrunt.md
@@ -0,0 +1,100 @@
+---
+title: "Terragrunt"
+type: entity
+tags:
+ - devops
+ - iac
+ - terraform
+ - automation
+created: 2026-04-26
+---
+
+# Terragrunt
+
+## Definition
+
+Terragrunt 是由 Gruntwork 开发的**Terraform 轻量封装工具**,核心目标是贯彻 DRY(Don't Repeat Yourself)原则,简化多环境、多账户 Terraform 配置的管理。
+
+## Core Value
+
+Terragrunt 对 Terraform 的核心改进在于**减少重复配置**:
+
+| 问题 | Terraform 方案 | Terragrunt 方案 |
+|------|---------------|----------------|
+| provider 块重复 | 每个环境独立声明 | `terragrunt.hcl` 统一管理 |
+| remote_state 块重复 | 多处硬编码 | 模板化复用 |
+| 模块引用方式 | 固定分支引用 | 版本锁定引用 |
+| 多环境同步 | 手动复制配置 | `include` 块继承 |
+
+**来源**: [[ctp-topic-48-terraform-vs-terragrunt]]
+
+## Compatibility
+
+Terragrunt **完全兼容** Terraform 的所有命令和 HCL 语法:
+- `terragrunt plan` → 底层调用 `terraform plan`
+- `terragrunt apply` → 底层调用 `terraform apply`
+- 所有 Terraform HCL 块和属性完全兼容
+
+这意味着 Terragrunt **不是** Terraform 的替代品,而是增强层。
+
+**来源**: [[ctp-topic-48-terraform-vs-terragrunt]]
+
+## Key Features
+
+### DRY Remote State
+通过 `remote_state` 块集中管理状态文件位置:
+```hcl
+remote_state {
+ backend = "s3"
+ config = {
+ bucket = "my-terraform-state"
+ key = "${path_relative_to_include()}/terraform.tfstate"
+ region = "eu-west-1"
+ encrypt = true
+ }
+}
+```
+
+### Provider Management
+跨环境统一 provider 配置,避免在每个模块中重复声明。
+
+### Include & Inheritance
+通过 `include` 块实现配置的继承与覆盖:
+```hcl
+include {
+ path = find_in_parent_folders("root.hcl")
+}
+```
+
+## Use Case: Micro Focus Labs Landing Zone
+
+Micro Focus Labs Landing Zone 使用 Terragrunt 管理多账户配置,所有资源通过 Terraform/Terragrunt 管理,Jenkins 流水线扫描 GitHub 仓库变更触发 plan/apply。
+
+**来源**: [[ctp-topic-3-deploy-and-maintain-infrastructure]], [[ctp-topic-25-labs-landing-zone-overview-itom-teams]]
+
+## Ecosystem Position
+
+```
+Terraform Ecosystem
+├── Terraform (HashiCorp) — 核心 IaC 引擎
+├── Terragrunt (Gruntwork) — DRY 封装层 ←
+├── Terraform Enterprise (HashiCorp) — 企业 CI 平台
+└── Gruntwork Library (Gruntwork) — 预建模块库
+```
+
+## Related Entities
+
+- [[Terraform]] — Terragrunt 包装的核心引擎
+- [[HashiCorp]] — Terraform 创立公司
+- [[Gruntwork]] — Terragrunt 开发公司
+
+## Related Concepts
+
+- [[Infrastructure-as-Code]] — Terragrunt 的应用领域
+- [[DRY Principle]] — Terragrunt 的设计哲学
+
+## Related Sources
+
+- [[ctp-topic-48-terraform-vs-terragrunt]]
+- [[ctp-topic-3-deploy-and-maintain-infrastructure]]
+- [[ctp-topic-15-working-with-renovatebot]](Renovate Bot 扫描 Terragrunt 配置)
diff --git a/wiki/index.md b/wiki/index.md
index 745b8d64..5d3f8b2b 100644
--- a/wiki/index.md
+++ b/wiki/index.md
@@ -4,6 +4,14 @@
- [Overview](overview.md) — living synthesis
## Sources
+- [2026-04-24] [CTP Topic 16 Cross-account Terraform modules](sources/ctp-topic-16-cross-account-terraform-modules.md)
+- [2026-04-24] [Learning Sessions ECS Deployment using IAC - 20230808](sources/learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording.md)
+- [2026-04-24] [CTP Topic 48 Terraform vs Terragrunt](sources/ctp-topic-48-terraform-vs-terragrunt.md)
+- [2026-04-24] [Public Cloud Learning Sessions (OpenText) - AI Use Cases - 20241126 160106](sources/public-cloud-learning-sessions-opentext-ai-use-cases-20241126-160106-meeting-rec.md)
+- [2026-04-24] [Public Cloud Learning Sessions (OpenText) - Event Driven Architecture Part 2](sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091.md)
+- [2026-04-24] [Public Cloud Learning Sessions (OpenText) - Generative AI & Prompt Engineering - 20241112](sources/public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111.md)
+- [2026-04-24] [Public Cloud Learning Sessions (OpenText) - Event Driven Architecture Part 1](sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091.md)
+- [2026-04-24] [Public Cloud Learning Sessions - Serverless Computing - 20240903](sources/public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee.md)
- [2026-04-24] [Public Cloud Learning Sessions - Introduction to AI/ML with AWS](sources/public-cloud-learning-sessions-introduction-to-artificial-intelligence-ai-machin.md)
- [2026-04-24] [Cloud Learning Master Index](sources/cloud-learning-master-index.md)
- [2026-04-24] [CTP Topic 27 AWS Instance Scheduler](sources/ctp-topic-27-aws-instance-scheduler.md)
@@ -406,14 +414,6 @@
- [2026-04-20] [ctp-topic-12-using-ses-smtp-service-terraform-module](sources/ctp-topic-12-using-ses-smtp-service-terraform-module.md) — (expected: wiki/sources/ctp-topic-12-using-ses-smtp-service-terraform-module.md — source missing)
- [2026-04-20] [learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform](sources/learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform.md) — (expected: wiki/sources/learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform.md — source missing)
- [2026-04-20] [learning-sessions-cloud-transformation-programme-20230808-183322-meeting-recordi](sources/learning-sessions-cloud-transformation-programme-20230808-183322-meeting-recordi.md) — (expected: wiki/sources/learning-sessions-cloud-transformation-programme-20230808-183322-meeting-recordi.md — source missing)
-- [2026-04-20] [ctp-topic-16-cross-account-terraform-modules](sources/ctp-topic-16-cross-account-terraform-modules.md) — (expected: wiki/sources/ctp-topic-16-cross-account-terraform-modules.md — source missing)
-- [2026-04-20] [learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording](sources/learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording.md) — (expected: wiki/sources/learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording.md — source missing)
-- [2026-04-19] [ctp-topic-48-terraform-vs-terragrunt](sources/ctp-topic-48-terraform-vs-terragrunt.md) — (expected: wiki/sources/ctp-topic-48-terraform-vs-terragrunt.md — source missing)
-- [2026-04-19] [public-cloud-learning-sessions-opentext-ai-use-cases-20241126-160106-meeting-rec](sources/public-cloud-learning-sessions-opentext-ai-use-cases-20241126-160106-meeting-rec.md) — (expected: wiki/sources/public-cloud-learning-sessions-opentext-ai-use-cases-20241126-160106-meeting-rec.md — source missing)
-- [2026-04-19] [public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091](sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091.md) — (expected: wiki/sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091.md — source missing)
-- [2026-04-19] [public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111](sources/public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111.md) — (expected: wiki/sources/public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111.md — source missing)
-- [2026-04-19] [public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091](sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091.md) — (expected: wiki/sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091.md — source missing)
-- [2026-04-19] [public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee](sources/public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee.md) — (expected: wiki/sources/public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee.md — source missing)
- [Your-AI-Isn-t-Stupid---It-Just-Needs-a-Better-Harness--Lychee-Technology-Engineering-Blog](sources/Your-AI-Isn-t-Stupid---It-Just-Needs-a-Better-Harness--Lychee-Technology-Engineering-Blog.md) — (expected: wiki/sources/Your-AI-Isn-t-Stupid---It-Just-Needs-a-Better-Harness--Lychee-Technology-Engineering-Blog.md — source missing)
- [Expose-hermes-agent-as-an-OpenAI-compatible-API-for-any-frontend](sources/Expose-hermes-agent-as-an-OpenAI-compatible-API-for-any-frontend.md) — (expected: wiki/sources/Expose-hermes-agent-as-an-OpenAI-compatible-API-for-any-frontend.md — source missing)
- [zk-steward](sources/zk-steward.md) — (expected: wiki/sources/zk-steward.md — source missing)
@@ -543,6 +543,7 @@
- [Alertmanager](entities/Alertmanager.md)
- [Alex-Ewerlof](entities/Alex-Ewerlof.md)
- [Alex-Finn](entities/Alex-Finn.md)
+- [Amazon-API-Gateway](entities/Amazon-API-Gateway.md)
- [Amazon-Aurora](entities/Amazon-Aurora.md)
- [Amazon-CloudWatch-Logs](entities/Amazon-CloudWatch-Logs.md)
- [Amazon-DocumentDB](entities/Amazon-DocumentDB.md)
@@ -559,10 +560,13 @@
- [Apache-Superset](entities/Apache-Superset.md)
- [Asana](entities/Asana.md)
- [Ashish](entities/Ashish.md)
+- [Atlantis](entities/Atlantis.md)
- [AWS](entities/AWS.md)
- [AWS-CloudFormation-StackSets](entities/AWS-CloudFormation-StackSets.md)
+- [AWS-Lambda](entities/AWS-Lambda.md)
- [AWS-OpenSearch](entities/AWS-OpenSearch.md)
- [AWS-Organizations](entities/AWS-Organizations.md)
+- [AWS-Step-Functions](entities/AWS-Step-Functions.md)
- [Axton](entities/Axton.md)
- [Azure](entities/Azure.md)
- [baoyu](entities/baoyu.md)
@@ -628,6 +632,7 @@
- [GoogleCloud](entities/GoogleCloud.md)
- [Grafana](entities/Grafana.md)
- [Gruntwork](entities/Gruntwork.md)
+- [HashiCorp](entities/HashiCorp.md)
- [Heather-Norris](entities/Heather-Norris.md)
- [hello-world](entities/hello-world.md)
- [HemantSawant](entities/HemantSawant.md)
@@ -713,6 +718,7 @@
- [rsync](entities/rsync.md)
- [Rufus](entities/Rufus.md)
- [RustDesk](entities/RustDesk.md)
+- [SAM-Serverless-Application-Model](entities/SAM-Serverless-Application-Model.md)
- [SankarGopov](entities/SankarGopov.md)
- [shenwei](entities/shenwei.md)
- [Simon-Hoiberg](entities/Simon-Hoiberg.md)
@@ -730,6 +736,7 @@
- [Synology-NAS-DS718](entities/Synology-NAS-DS718.md)
- [Telnyx](entities/Telnyx.md)
- [Terraform](entities/Terraform.md)
+- [Terragrunt](entities/Terragrunt.md)
- [Tiago-Forte](entities/Tiago-Forte.md)
- [tini](entities/tini.md)
- [Todoist](entities/Todoist.md)
@@ -821,6 +828,7 @@
- [Business-Knowledge-Base](concepts/Business-Knowledge-Base.md)
- [caffeinate](concepts/caffeinate.md)
- [Call-Worthy-Threshold](concepts/Call-Worthy-Threshold.md)
+- [Canary-Deployment](concepts/Canary-Deployment.md)
- [Canary-Release](concepts/Canary-Release.md)
- [Canvas](concepts/Canvas.md)
- [CAPA](concepts/CAPA.md)
@@ -877,6 +885,7 @@
- [Credit-Efficient-Processing](concepts/Credit-Efficient-Processing.md)
- [Cron定时任务](concepts/Cron定时任务.md)
- [Cross-Account-Monitoring](concepts/Cross-Account-Monitoring.md)
+- [Cross-account-Terraform-Modules](concepts/Cross-account-Terraform-Modules.md)
- [Cumulative-Memory](concepts/Cumulative-Memory.md)
- [Custom-Instructions](concepts/Custom-Instructions.md)
- [Daily-Digest](concepts/Daily-Digest.md)
@@ -904,6 +913,7 @@
- [Docker警告处理](concepts/Docker警告处理.md)
- [DORA-Metrics](concepts/DORA-Metrics.md)
- [DRaaS](concepts/DRaaS.md)
+- [DRY-Principle](concepts/DRY-Principle.md)
- [DRY原则](concepts/DRY原则.md)
- [DuckDB](concepts/DuckDB.md)
- [Dynamic-Dashboard](concepts/Dynamic-Dashboard.md)
@@ -923,6 +933,7 @@
- [Error-Budget](concepts/Error-Budget.md)
- [Error-Surface-vs-Root-Cause](concepts/Error-Surface-vs-Root-Cause.md)
- [Event-Correlation](concepts/Event-Correlation.md)
+- [Event-Driven-Architecture](concepts/Event-Driven-Architecture.md)
- [EventSourcing](concepts/EventSourcing.md)
- [Expert-User-Assumption](concepts/Expert-User-Assumption.md)
- [Exporter](concepts/Exporter.md)
diff --git a/wiki/log.md b/wiki/log.md
index 9bb27273..b77e5287 100644
--- a/wiki/log.md
+++ b/wiki/log.md
@@ -1,3 +1,70 @@
+## [2026-05-05] ingest | CTP Topic 16 Cross-account Terraform modules
+- Source file: Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/ctp-topic-16-cross-account-terraform-modules.md
+- Status: ✅ 成功摄入
+- Summary: Fibos 主讲,多账号 AWS 环境中跨账号 Terraform 模块的中心化部署方案——基于 Shared Account(共享账号)作为中转站,Jenkins + ECS Deploy Runner + Assume Role 三联动。核心机制:Jenkins 检测 `cross-account.json` 标记文件触发 ECS Deploy Runner,通过 Assume Role 访问目标账号的 TF state bucket accessor 和 cross-account ECS deploy runner role。三大目标:安全性(无 Workload 账号间直接信任)、自动化(Jenkins 自动识别模块类型)、可复用性(模块代码不硬编码特定账号角色)。
+- Concepts created: [[Cross-account-Terraform-Modules]]
+- Entities created: none(Gruntwork 已存在)
+- Source page: wiki/sources/ctp-topic-16-cross-account-terraform-modules.md
+- Notes: index.md 已替换占位符条目;overview.md 已新增独立段落(置于 ECS Deployment 和 Topic 21 之间);Entity Jenkins/Fibos 提及次数不足建页阈值,以 wikilink 形式记录于 Source page;无实质性内容冲突,演进关系记录于 Contradictions 节
+
+## [2026-05-05] ingest | Learning Sessions ECS Deployment using IAC - 20230808
+- Source file: Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording.md
+- Status: ✅ 成功摄入
+- Summary: JP 和 Raja M 主讲,CTP/SRE 团队通过 Terraform IaC 实现 ECS 容器化应用自动化部署——基于 Gruntwork 仓库构建 ECS 模块,支持 Docker 容器/EC2 部署;核心功能:自动扩缩容、自动故障恢复、金丝雀部署;Listener 集中管理方式;前置条件:VPC/ELB 安全组/EFS 卷挂载;集成 CloudWatch/Splunk/Grafana/Prometheus。ECS 作为 AWS 原生技术与 AWS 服务深度集成。
+- Concepts created: [[Canary-Deployment]], [[Infrastructure-as-Code]]
+- Entities created: [[Gruntwork]]
+- Source page: wiki/sources/learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording.md
+- Notes: index.md 已替换占位符条目;overview.md 已新增独立段落(置于 Terraform 工具选型后);ECS 与 EKS 选型冲突记录于 Contradictions 节;JP 和 Raja M 各出现 1 次,不足独立 Entity 建页阈值,以 wikilink 形式记录于 Source page;无其他内容冲突
+- Conflicts: 与 [[ctp-topic-64-scaling-out-with-amazon-eks]] 在容器编排选型上的差异——ECS 强调 AWS 原生集成,EKS 强调可移植性,两者适用于不同场景但可互补
+
+## [2026-05-05] ingest | CTP Topic 48 Terraform vs Terragrunt
+- Source file: Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/ctp-topic-48-terraform-vs-terragrunt.md
+- Status: ✅ 成功摄入
+- Summary: Bob(AWS Solutions Architect)对比 Terraform 与 Terragrunt——Terraform(HashiCorp 出品)是云厂商无关的 Golang 应用,通过状态文件绑定期望状态与实际环境;Terragrunt 是轻量封装,贯彻 DRY 原则,管理 provider 和 remote_state 块减少跨环境重复声明。两者命令和语法高度一致,Terragrunt 通过减少硬编码优化大规模企业部署。辅助工具:Terraform Enterprise、Gruntwork、Atlantis、tfsec、Terratest
+- Concepts created: [[DRY Principle]], [[State-File-Management]]
+- Entities created: [[HashiCorp]], [[Terragrunt]], [[Atlantis]]
+- Entities updated: [[Terraform]], [[Gruntwork]]
+- Concepts updated: [[Infrastructure-as-Code]]
+- Source page: wiki/sources/ctp-topic-48-terraform-vs-terragrunt.md
+- Notes: 视频由 Gemini 摘要,原文状态为 "summarized (Gemini 摘要)";来源 NAS 路径为 `/volume2/work/Public Cloud Learning Sessions/CTP _ Topic 48_ Terraform vs Terragrunt.mp4`
+
+## [2026-05-05] ingest | Public Cloud Learning Sessions (OpenText) - AI Use Cases - 20241126 160106
+- Source file: Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-opentext-ai-use-cases-20241126-160106-meeting-rec.md
+- Status: ✅ 成功摄入
+- Summary: AWS AI 专家 Stephen Frank 分享 Gen2 AI 发展驱动力(数据爆发+算力提升)、企业级 AI 应用场景(客户体验/洞察提取/流程自动化/内容生成)、AWS 三层产品战略(基础设施→Bedrock→AI 应用)、数据差异化策略(RAG/Fine-tuning/持续预训练)、Amazon Q 企业知识问答、负责任 AI 原则
+- Concepts linked: [[RAG]], [[Fine-Tuning]], [[Continued-Pre-Training]], [[Responsible-AI]]
+- Entities linked: [[AWS]], [[Amazon-Bedrock]], [[Amazon-SageMaker]], [[Amazon-Q]], [[Stephen-Frank]]
+- Source page: wiki/sources/public-cloud-learning-sessions-opentext-ai-use-cases-20241126-160106-meeting-rec.md
+- Notes: index.md 已替换占位符条目(日期修正为 2026-04-14);overview.md 已新增独立段落(Serverless & AI 专题,置于提示工程后);RAG/Fine-Tuning/Responsible-AI/Stephen-Frank/Amazon-Q/Amazon-SageMaker 在 wiki 中出现频次不足独立建页阈值,以 wikilink 形式记录于 Source page;无内容冲突
+- Conflicts: 无
+
+## [2026-05-05] ingest | Public Cloud Learning Sessions (OpenText) - Event Driven Architecture Part 2 - 20240917
+- Source file: Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091.md
+- Status: ✅ 成功摄入
+- Summary: EDA 进阶实践——三组件(事件生产者/消费者/代理)、事件路由器(EventBridge/SNS)与事件存储(SQS/Kinesis)、编排与编排模式(Choreography vs Orchestration)、幂等性、事件排序、去中心化团队所有权、Fan-out 模式、竞争消费者模式、死信队列、EventBridge 最佳实践
+- Concepts updated: [[Event-Driven-Architecture]](补充 Part 2 内容:EDA 三组件、编排模式对比、生产级最佳实践:幂等性/事件排序/团队独立性、扩展 Event Patterns:Fan-Out/Competing Consumer/DLQ)
+- Entities existing (no new): [[AWS]], [[Amazon-EventBridge]], [[Amazon-SQS]], [[Amazon-SNS]], [[AWS-Lambda]], [[AWS-Step-Functions]]
+- Source page: wiki/sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091.md
+- Notes: index.md 已替换占位符条目(日期修正为 2026-05-05);overview.md 已添加 Part 2 独立段落(新增于 Serverless 段落和 Part 1 之间),同时更新 Part 1 引用指向 Part 2;Event-Driven-Architecture 概念页已更新 sources + last_updated,新增 EDA 三组件/编排模式/生产级最佳实践内容,扩展 Event Patterns;Kinesis-Data-Streams 出现 1 次,不足独立建 Entity 阈值,以 wikilink 形式记录于 Concept 页
+- Conflicts: 与 [[ctp-topic-64-scaling-out-with-amazon-eks]] 在扩展方式上的差异——EDA 通过事件驱动异步扩展(消费者按需处理),EKS 通过容器编排横向扩展(Pod 副本数调整),两者适用于不同场景但可互补使用
+- Source file: Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091.md
+- Status: ✅ 成功摄入
+- Summary: EDA 入门——AWS 解决方案架构师 Dr. Anil Giri 介绍 EventBridge/SQS/SNS 事件驱动架构与 Enterprise Integration Patterns;会议因 Teams 屏幕共享故障仅完成开场介绍,完整演示参见 Part 2
+- Concepts linked: [[Event-Driven-Architecture]], [[Enterprise-Integration-Patterns]], [[Amazon-EventBridge]], [[Amazon-SQS]], [[Amazon-SNS]]
+- Entities linked: [[Dr.-Anil-Giri]], [[AWS]], [[OpenText]], [[Micro-Focus]]
+- Source page: wiki/sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091.md
+- Notes: index.md 已替换占位符条目(日期修正为 2026-04-19);overview.md 已补充(Serverless & AI 专题段落新增,置于无服务器计算后);Dr. Anil Giri/AWS/OpenText/Micro Focus 在 wiki 中出现频次不足独立建 Entity 页阈值,以 wikilink 形式记录于 Source page;EventBridge/SQS/SNS/Enterprise-Integration-Patterns 概念频次不足独立建 Concept 页阈值;已建立与 Part 2(public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091)、无服务器计算(public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee)的 Connections 关系;冲突记录与 ctp-topic-64-scaling-out-with-amazon-eks 的扩展方式差异已记录于 Contradictions 节
+- Conflicts: 与 [[ctp-topic-64-scaling-out-with-amazon-eks]] 在扩展方式上的差异——EDA 通过事件驱动异步扩展,EKS 通过容器编排横向扩展,两者适用于不同场景但可互补使用
+
+## [2026-05-05] ingest | Public Cloud Learning Sessions - Serverless Computing - 20240903
+- Status: ✅ 成功摄入
+- Summary: AWS 无服务器计算深度解析——Lambda 事件驱动模型(同步/异步/事件源映射)、Step Functions 状态机编排(Standard/Express)、API Gateway(边缘优化/区域/私有)、SAM 本地开发和部署;Serverless 业务价值(快速上市/按需付费/自动扩展/内置安全);AWS 与客户共担运维责任
+- Entities created: [[AWS-Lambda]], [[AWS-Step-Functions]], [[Amazon-API-Gateway]], [[SAM-Serverless-Application-Model]]
+- Concepts linked: [[Serverless-Computing]], [[Event-Driven-Architecture]]
+- Source page: wiki/sources/public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee.md
+- Notes: index.md 已更新(替换占位符条目,日期修正为 2026-04-14);overview.md 已补充(Cloud Transformation & DevOps 章节新增独立段落,置于 AI/ML 入门与 CTP Topic 20 之间);Entity 页均按字母顺序插入 index.md Entities 节;无内容冲突(Serverless-Computing 概念页已存在,内容一致)
+- Conflicts: 无
+
## [2026-05-05] ingest | Public Cloud Learning Sessions - Introduction to AI/ML with AWS
- Source file: Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-introduction-to-artificial-intelligence-ai-machin.md
- Status: ✅ 成功摄入
@@ -2512,4 +2579,19 @@
- overview.md 更新:新增条目于 Cloud Transformation & DevOps 章节 FinOps 知识链路
- RightSizing/Cloud Cost Optimization 已通过 wikilink 嵌入 Source page
- Key Entities: PCG (Platform Control Group) 已在 Wiki 中存在(ctp-topic-13),无需新建 Entity 页面
- - 冲突检测:未发现内容冲突,Contradictions 暂置空占位
\ No newline at end of file
+ - 冲突检测:未发现内容冲突,Contradictions 暂置空占位
+
+## [2026-05-06] ingest | Public Cloud Learning Sessions (OpenText) - Generative AI & Prompt Engineering - 20241112
+- Source file: Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111.md
+- Status: ✅ 成功摄入
+- Summary: AWS 生成式 AI 服务与提示工程实践,由 OpenText 技术客户经理 Shikad Holtzman(以色列)主讲——生成式 AI 四大价值路径、企业数据差异化核心洞见、Amazon Bedrock 全托管基础模型服务(RAG/微调/Agents/Guardrails)、Amazon Q 助手(企业版/开发者版)、AWS 专用芯片(Trainium/Inferentia)、提示工程四组件(指令/上下文/用户输入/输出指示器)和基础技巧(One-shot/Few-shot、Chain of Thoughts)
+- Concepts linked: [[RAG]], [[Prompt-Engineering]], [[Chain-of-Thought]], [[One-Shot-Prompting]], [[Few-Shot-Prompting]], [[Responsible-AI]], [[Guardrails-for-Amazon-Bedrock]]
+- Entities linked: [[Shikad-Holtzman]], [[Amazon-Bedrock]], [[Amazon-SageMaker]], [[Amazon-Q]], [[AWS-Trainium]], [[AWS-Inferentia]], [[AWS]]
+- Source page: wiki/sources/public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111.md
+- Notes:
+ - index.md 已更新:将原 expected placeholder 更新为正式条目(2026-04-19),补充中文摘要
+ - overview.md 已更新:在 Cloud Transformation & DevOps 章节的 AI/ML 入门条目后新增独立段落,与 AI/ML 入门共同构成生成式 AI 知识链路
+ - Key Concepts:RAG/Prompt-Engineering/Chain-of-Thought/Few-Shot-Prompting 频次不足独立建 Concept 页阈值,以 wikilink 形式记录于 Source page
+ - Key Entities:Shikad Holtzman 仅出现 1 次,以 wikilink 形式记录于 Source page;Amazon Bedrock/Q/SageMaker 在同系列其他来源中提及频次不足独立建 Entity 页阈值
+ - 同系列来源关联:已建立与 AI/ML 入门(public-cloud-learning-sessions-introduction-to-artificial-intelligence-ai-machin)和无服务器计算(public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee)的 Connections 关系
+ - 冲突检测:与 ctp-topic-64-scaling-out-with-amazon-eks 在扩展方式上的差异已记录于 Source page Contradictions(EDA 事件驱动 vs EKS 容器编排,适用于不同场景可互补)
\ No newline at end of file
diff --git a/wiki/overview.md b/wiki/overview.md
index 328df74a..37e5c0fa 100644
--- a/wiki/overview.md
+++ b/wiki/overview.md
@@ -53,7 +53,13 @@ Cloud Transformation Programme (CTP) materials cover AWS landing zones, EKS, Ter
**[[ctp-topic-15-working-with-renovatebot]]**(CTP Topic 15):Paul Hopkins 主讲 Renovate Bot 自动化依赖项更新——解决"依赖地狱"问题,实时扫描 Docker 镜像/Terraform 模块/Terragrunt 配置/pre-commit 钩子等版本标签,自动发起 Pull Request;通过 Dependency Dashboard 提供全局依赖状态视图;集成 Jenkins 流水线,使用 Podman 容器化运行并配置 Rate Limiting 避免 PR 风暴;提升基础设施安全性(及时修复漏洞)和配置一致性。属 [[GitOps]] 和 [[CI/CD Pipeline]] 的依赖治理层,与 [[ctp-topic-9-ci-cd-with-gruntwork]](Gruntwork CI/CD)和 [[ctp-topic-33-an-introduction-to-gitops]](GitOps 入门)共同构成完整的 IaC 知识链路。
-**[[ctp-topic-56-automated-infrastructure-testing]]**(CTP Topic 56):Mark Francis 主讲自动化基础设施测试——将软件测试原则应用于 Terraform IaC 代码,通过 TerraTest(Golang 框架)实现 apply → test → destroy 自动化验证循环。核心主张:集成测试超越语法检查,验证实际部署行为是否符合预期;倡导测试驱动开发(TDD)应用于 IaC 领域,先写测试再实现功能;提议将测试编写作为基础设施开发的首要步骤,移除手动验证,追求自动化验证套件和更高的部署信心。核心价值观:"让机器做重复的事,把人脑留给复杂的人类问题"。属 [[GitOps]] 和 [[CI/CD Pipeline]] 的质量保障层,与 [[ctp-topic-33-an-introduction-to-gitops]](GitOps 概念)和 [[ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments]](Atlantis 工具)共同构成完整的 IaC 质量保障链路。
+**[[ctp-topic-56-automated-infrastructure-testing]]**(CTP Topic 56):Mark Francis 主讲自动化基础设施测试——将软件测试原则应用于 Terraform IaC 代码,通过 TerraTest(Golang 框架)实现 apply → test → destroy 自动化验证循环。核心主张:集成测试超越语法检查,验证实际部署行为是否符合预期;倡导测试驱动开发(TDD)应用于 IaC 领域,先写测试再实现功能;提议将测试编写作为基础设施开发的首要步骤,移除手动验证,追求自动化验证套件和更高的部署信心。核心价值观:"让机器做重复的事,把人脑留给复杂的人类问题"。属 [[GitOps]] 和 [[CI/CD Pipeline]] 的质量保障层,与 [[ctp-topic-33-an-introduction-to-gitops]](GitOps 概念)和 [[ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments]](Atlantis 工具)共同构成 IaC 知识体系。
+
+**[[ctp-topic-48-terraform-vs-terragrunt]]**(CTP Topic 48):Bob(AWS Solutions Architect)对比 Terraform 与 Terragrunt——Terraform(HashiCorp 出品)是云厂商无关的 Golang 应用,通过状态文件将期望状态与实际环境绑定,企业级使用须将状态文件存储在安全可访问位置;Terragrunt 是 Terraform 的轻量封装,贯彻 DRY 原则,通过管理 provider 和 remote_state 块减少跨环境的重复声明。两者命令和语法高度一致(`terraform plan` = `terragrunt plan`),Terragrunt 通过减少硬编码来优化大规模企业部署。辅助工具:Terraform Enterprise(CI 平台 + workspaces)、Gruntwork(预建可定制模块)、Atlantis(Git 集成)、tfsec(静态安全分析)、Terratest(IaC 测试自动化)。属 [[Infrastructure As Code]] 工具选型层,与 [[ctp-topic-3-deploy-and-maintain-infrastructure]](Terragrunt HCL)和 [[ctp-topic-56-automated-infrastructure-testing]](Terratest)共同构成 Terraform 生态知识链路。
+
+**(本条新增)Learning Sessions ECS Deployment using IAC**(2023-08-08):JP 和 Raja M 主讲,CTP/SRE 团队通过 Terraform IaC 实现 ECS 容器化应用自动化部署——基于 Gruntwork 仓库构建的 ECS 模块,将 Docker 容器作为逻辑单元,支持 EC2 实例部署;核心功能:自动扩缩容、自动故障恢复、金丝雀部署;通过 Listener 方式集中管理(避免各产品团队重复下载 Gruntwork 代码);前置条件包括 VPC、ELB 安全组和 EFS 卷挂载;集成 CloudWatch/Splunk/Grafana/Prometheus。ECS 作为 AWS 原生技术与 AWS 服务深度集成,适合追求简单性和紧密集成的场景;属 [[Infrastructure-as-Code]] 在 ECS 场景的实践,与 [[ctp-topic-70-eks-deployment-using-iac]](EKS IaC 部署)构成容器编排双路径,与 [[ctp-topic-9-ci-cd-with-gruntwork]](Gruntwork CI/CD)共享 Gruntwork 基础设施基础。与 [[ctp-topic-67-cloud-native-observability-using-opentelemetry]] 在可观测性集成方面关联(ECS 模块集成 CloudWatch/Grafana)。
+
+**[[ctp-topic-16-cross-account-terraform-modules]]**(CTP Topic 16):Fibos 主讲,多账号 AWS 环境中跨账号 Terraform 模块的中心化部署方案——解决原有 Gruntwork 流水线主要针对单账号设计、账号间直接互访存在安全风险(Blast Radius)的问题。核心架构:基于 **Shared Account(共享账号)** 作为中转站,Jenkins 托管于 Shared Account,检测到模块目录中 `cross-account.json` 标记文件后触发 **ECS Deploy Runner**(ECS 上的 Docker 容器);该 Runner 通过 Assume Role 访问目标账号的两个角色——`TF state bucket accessor`(读取状态文件)和 `cross-account ECS deploy runner role`(执行资源部署);角色切换逻辑在根目录 `terragrunt.hcl` 中全局配置。实现三大目标:**安全性**(无 Workload 账号间直接信任)、**自动化**(Jenkins 自动识别模块类型)、**可复用性**(模块代码不硬编码特定账号角色)。属 [[Infrastructure-as-Code]] 在多账号场景的进阶实践,与 [[ctp-topic-9-ci-cd-with-gruntwork]](单账号流水线)构成演进关系,与 [[ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments]](Atlantis 跨账号角色)共享 Assume Role 机制但执行载体不同(ECS 容器 vs EC2),与 [[ECS Deploy Runner]](实体)共同构成跨账号部署完整链路。
**[[ctp-topic-21-supply-chain-security-in-micro-focus]]**(CTP Topic 21):
@@ -185,7 +191,17 @@ Key concepts: [[Process]], [[Value]], [[Value-Stream]], [[Value-Adding]], [[Wast
**[[public-cloud-learning-sessions-best-practices-for-ec2-cost-optimization-in-aws-2]]**(Public Cloud Learning Sessions,Mike Dukes 和 Steele Taylor 主讲):AWS EC2 成本优化最佳实践深度解析——核心主题覆盖计算效率、Nitro 系统、Graviton 使用、EC2 Spot 竞价实例和容器化成本部署。AWS Nitro 系统通过将网络、存储和安全组件外部化来提升效率;Graviton 处理器基于 ARM64 架构,提供高达 40% 更好的性价比,功耗比同等 x86 实例减少高达 60%;EC2 Spot 实例利用 AWS 闲置容量提供高达 90% 的按需价格折扣;购买选项包括 On-Demand、Savings Plans 和 Spot Instances。Spot Invaders 游戏作为容错混沌工程的实践案例,展示了在 EKS 上使用 Spot 实例构建弹性应用的最佳实践。Graviton 适用于大多数工作负载(Web 服务、容器、HPC 批处理、大数据、CI/CD),但排除有状态服务(如数据库);Spot 和 Graviton 可组合使用以最大化成本节省。属 [[FinOps(云财务管理)]] 技术实践层,与 [[public-cloud-learning-sessions-reducing-cloud-costs-20250318-170100-meeting-reco]](成本优化技术)和 [[ctp-topic-13-cloud-finops-policies]](政策框架)共同构成完整的 EC2 成本优化知识链路。
-**[[public-cloud-learning-sessions-introduction-to-artificial-intelligence-ai-machin]]**(Public Cloud Learning Sessions,AWS 高级解决方案架构师 Suraav Paul 主讲):AWS AI/ML 与生成式 AI 入门——AI 复制需要人类智能的任务,通过机器学习使用数据创建决策模型;分类 AI 识别模式,预测 AI 预判趋势,生成式 AI 利用基础模型(Foundation Models)创造内容。Amazon 在 ML 领域深耕 20 年,AWS 在四大领域帮助客户应用 AI:提升客户体验、实现更优决策、改善运营、创造新产品。Amazon Bedrock 是全托管生成式 AI 服务,提供 Titan 等多种基础模型,支持微调、持续预训练、RAG 和 Bedrock Agents 等数据定制技术;Guardrails for Bedrock 提供负责任 AI 安全护栏。ML Ops 将机器学习与运维融合,涵盖数据流水线(数据收集/集成/准备)、训练流水线(特征工程/模型训练/超参调优)和推理流水线(部署/监控)。属 Cloud Transformation Programme 的 Serverless & AI 专题入门,与 [[public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111]](Prompt Engineering)和 [[public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee]](无服务器计算)共同构成 Serverless & AI 知识链路。
+**[[public-cloud-learning-sessions-introduction-to-artificial-intelligence-ai-machin]]**(Public Cloud Learning Sessions,AWS 高级解决方案架构师 Suraav Paul 主讲):AWS AI/ML 与生成式 AI 入门——AI 复制需要人类智能的任务,通过机器学习使用数据创建决策模型;分类 AI 识别模式,预测 AI 预判趋势,生成式 AI 利用基础模型(Foundation Models)创造内容。Amazon 在 ML 领域深耕 20 年,AWS 在四大领域帮助客户应用 AI:提升客户体验、实现更优决策、改善运营、创造新产品。Amazon Bedrock 是全托管生成式 AI 服务,提供 Titan 等多种基础模型,支持微调、持续预训练、RAG 和 Bedrock Agents 等数据定制技术;Guardrails for Bedrock 提供负责任 AI 安全护栏。ML Ops 将机器学习与运维融合,涵盖数据流水线(数据收集/集成/准备)、训练流水线(特征工程/模型训练/超参调优)和推理流水线(部署/监控)。属 Cloud Transformation Programme 的 Serverless & AI 专题入门,与 [[public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111]](Generative AI & Prompt Engineering,OpenText 技术客户经理 Shikad Holtzman 主讲)和 [[public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee]](无服务器计算)共同构成 Serverless & AI 知识链路。
+
+**[[public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111]]**(Public Cloud Learning Sessions,OpenText 技术客户经理 Shikad Holtzman 主讲):AWS 生成式 AI 服务与提示工程实践——Shikad Holtzman 阐述生成式 AI 四大价值路径(新体验/员工生产力/洞察提取/创造力激发),涵盖客服聊天机器人、代码生成摘要、文档处理和图像生成等行业场景;核心洞见:**企业数据是差异化关键**,通过 Amazon Bedrock 连接自有数据(无需重训练)即可构建专属生成式 AI 应用,且 Bedrock 保证用户数据与提示词绝不与模型提供商共享。Amazon Bedrock 提供来自 Anthropic/Meta/Amazon Titan 的多种基础模型(含多模态),内置 RAG 知识库、微调、Agents 和 Guardrails for Bedrock 自定义有害内容过滤;Amazon Q 分企业版(多数据源搜索/摘要)和开发者版(代码生成/单元测试/代码迁移);AWS 专用训练芯片 Trainium 和推理芯片 Inferentia 支撑底层算力。提示工程(Prompt Engineering)是创建、设计和优化提示词引导 LLM 响应的迭代过程,提示由指令、上下文、用户输入和输出指示器四部分组成;基础技巧包括 One-shot/Few-shot(通过示例引导)和 Chain of Thoughts(逐步推理解决复杂任务)。属 Cloud Transformation Programme 的 Serverless & AI 专题,与 [[public-cloud-learning-sessions-introduction-to-artificial-intelligence-ai-machin]](AI/ML 入门)共同构成生成式 AI 知识链路。
+
+**[[public-cloud-learning-sessions-opentext-ai-use-cases-20241126-160106-meeting-rec]]**(Public Cloud Learning Sessions,AWS AI 专家 Stephen Frank 主讲):AWS Gen2 AI 发展驱动力与企业在生产中的 AI 应用场景——Stephen Frank 阐述 AI 演进历程(模仿人类行为 → 机器学习 → 深度学习 → Gen2 大语言模型),Gen2 AI 崛起背后的两大驱动力:2000 年代以来数据爆发式增长和更大算力的可获得性。Amazon 在核心产品和服务中应用 AI/ML 已 25 年,将经验应用于新客户产品。通用 AI 应用场景:创造新客户体验、从数据中推断核心洞察、流程自动化、生成新内容;企业软件场景:优化内部流程、启用新功能、创造新产品。**数据是差异化关键**——生成式 AI 应用通过 RAG / Fine-tuning / 持续预训练与企业现有业务数据集成。AWS 三层产品战略:基础设施层(基础模型训练/推理)→ Amazon Bedrock(旗舰 API 访问,承诺不与第三方共享用户数据,符合 GDPR)→ 即用型 AI 应用(Amazon Q 等)。Amazon Bedrock 保证用户数据与提示词不与第三方模型提供商共享;Amazon Q 通过自然语言连接多种企业数据源(知识摘要/内容创建/洞察提取)。AI 实施关键:培育实验文化、灵活选择模型、重视安全治理与合规;负责任 AI 原则:公平性(Fairness)、可解释性(Explainability)、透明度(Transparency);最佳实践:优先考虑人、评估风险、迭代全生命周期。属 Cloud Transformation Programme 的 Serverless & AI 专题,与 [[public-cloud-learning-sessions-introduction-to-artificial-intelligence-ai-machin]](AI/ML 入门)和 [[public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111]](提示工程)共同构成完整的 AI 知识链路。
+
+**[[public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee]]**(Public Cloud Learning Sessions,OpenText):AWS 无服务器计算深度解析——现代企业面临快速创新、安全合规、事件响应和盈利增长的多重压力,Serverless 计算通过将运维任务转移给云厂商,使开发团队专注业务代码。AWS Lambda 是核心服务,开发者只需编写业务逻辑,AWS 负责负载均衡、自动扩展和安全,函数由事件(状态变化)触发,支持同步、异步和事件源映射三种调用模式;Lambda 权限模型分离执行角色(决定函数能调用哪些资源)和资源策略(决定谁能触发函数),版本、别名和 Layers 支持代码管理和复用,ARM64 架构提供更优性价比。Step Functions 基于状态机编排多个 Lambda 函数和 AWS 服务,提供 Standard(长时)和 Express(高频)两种工作流类型;API Gateway 提供边缘优化、区域和私有三种部署选项管理 API 生命周期;SAM(Serverless Application Model)基于 CloudFormation 构建,支持本地开发和测试。属 Cloud Transformation Programme 的 Serverless & AI 专题,与 [[public-cloud-learning-sessions-introduction-to-artificial-intelligence-ai-machin]](AI/ML 入门)共同构成 Serverless & AI 知识链路,与 [[public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091]](事件驱动架构 Part 1)和 [[public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091]](事件驱动架构 Part 2)共享事件驱动执行模型。
+
+**[[public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091]]**(Public Cloud Learning Sessions,AWS 解决方案架构师 Dr. Anil Giri 主讲):事件驱动架构(EDA)进阶实践——详解 EDA 三组件(事件生产者/消费者/代理)、事件路由器(EventBridge/SNS)与事件存储(SQS/Kinesis)、编排与编排模式(Choreography vs Orchestration)、幂等性(Idempotency)、事件排序(SQS FIFO/Kinesis 保证顺序)、团队独立性(去中心化所有权 vs 集中式所有权)、Fan-out 模式(SNS 主题/EventBridge 规则)、竞争消费者模式(SQS)、死信队列(DLQ)和 EventBridge 最佳实践(每个订阅者单条规则、避免默认事件总线、失败事件处理)。核心洞见:**"Everything fails every time"**——任何系统任何时刻都可能故障,因此幂等性和 DLQ 是 EDA 生产级落地的必要保障。属 Cloud Transformation Programme 的 Serverless & AI 专题进阶篇,与 [[public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091]](Part 1)构成完整 EDA 知识体系,与 [[public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee]](无服务器计算)共享 Lambda 事件驱动执行模型。
+
+**[[public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091]]**(Public Cloud Learning Sessions,AWS 解决方案架构师 Dr. Anil Giri 主讲):事件驱动架构(EDA)入门与概述——核心学习目标:掌握企业级集成模式(Enterprise Integration Patterns),通过 Amazon EventBridge、SQS 和 SNS 探索事件驱动架构以解决现实世界中的业务挑战。会议原定演示具体 EDA 架构组件,但因 Teams 屏幕共享故障,仅完成开场介绍(⚠️ 完整演示内容参见 [[public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091]])。属 Cloud Transformation Programme 的 Serverless & AI 专题,与 [[public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee]](无服务器计算)共享事件驱动执行模型,共同构成 Serverless & AI 知识链路。
**[[ctp-topic-20-program-demand-process-flow-and-poc-onboarding]]**(CTP Topic 20):云转型计划的程序需求流程与 POC 入职流程——Sergio 和 Damian 主讲。核心内容:①需求来源——主要由业务案例(如数据中心关闭)、高层管理人员战略优先级及产品路线图驱动;②Gate Process——Gate 0 评估准入、Gate 1 负责 Design Authority 审批、Gate 3 作为启动迁移的最终准入;③POC 目的——不仅验证架构和技术可行性,还包括让团队熟悉基于 Gruntwork 的新一代 Landing Zone;④新环境特点——强调 IaC(Terraform/Terragrunt)自动化部署,严禁手动构建;⑤PCG 团队——平台控制组,负责提供云环境支持、安全策略制定及协助产品组进行 POC;⑥成功标准——POC 成功标准必须在启动前明确定义。属 CTP 治理知识体系入口,与 [[ctp-topic-65]](价值量化)、[[ctp-topic-57]](需求管理)、[[ctp-topic-30]](变更管理)共同构成完整的治理框架链条。
diff --git a/wiki/sources/ctp-topic-16-cross-account-terraform-modules.md b/wiki/sources/ctp-topic-16-cross-account-terraform-modules.md
new file mode 100644
index 00000000..982266f9
--- /dev/null
+++ b/wiki/sources/ctp-topic-16-cross-account-terraform-modules.md
@@ -0,0 +1,55 @@
+---
+title: "CTP Topic 16 Cross-account Terraform modules"
+type: source
+tags: [Terraform, Cross-Account, Modules, CTP, IaC, DevOps, AWS-Landing-Zone]
+date: 2026-04-14
+---
+
+## Source File
+- [[Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/ctp-topic-16-cross-account-terraform-modules]]
+
+## Summary(用中文描述)
+- 核心主题:**跨账号 Terraform 模块的中心化部署方案**,解决多账号 AWS 环境中一个模块内跨账号创建资源的安全与自动化问题
+- 问题域:原有的 Gruntwork 流水线针对单账号设计,在多账号场景下存在安全风险(一账号被攻破可能波及全局)
+- 方法/机制:基于 **Shared Account(共享账号)** 的中心化部署架构,Jenkins + ECS Deploy Runner + Assume Role 三者联动
+- 结论/价值:实现安全性(账号间无直接信任关系)、自动化(Jenkins 自动识别跨账号模块)、可复用性(模块代码不硬编码特定账号角色)
+
+## Key Claims(用中文描述)
+- **Shared Account 作为中转站**:Jenkins 托管在 Shared Account,当检测到 `cross-account.json` 标记文件时触发 ECS Deploy Runner
+- **Assume Role 双角色机制**:ECS Deploy Runner 通过 Assume Role 访问目标账号的两个角色——`TF state bucket accessor`(读取状态文件)和 `cross-account ECS deploy runner role`(执行资源部署)
+- **Blast Radius 控制**:避免 Workload 账号之间直接互访,权限控制在受严格审计的 Shared Account
+- **Terragrunt HCL 全局配置**:通过根目录 `terragrunt.hcl` 定义远程状态存储和角色切换逻辑,支持本地开发与 Jenkins 自动部署的差异化角色处理
+
+## Key Quotes
+> "Cross-account Terraform Modules 指在一个模块内通过配置多个 Provider,实现在多个 AWS 账号中同时创建或管理资源的功能" — Fibos,核心概念定义
+> "Shared Account 是整个 Landing Zone 的核心管理账号,托管 Jenkins、镜像仓库等公共服务,并作为跨账号部署的信任源" — Fibos,架构定位
+> "ECS Deploy Runner 运行在 ECS 上的 Docker 容器,负责执行 Terraform plan 和 apply 命令,是流水线中的实际执行单元" — Fibos,EDR 定义
+
+## Key Concepts
+- [[Cross-account Terraform Modules]]:在一个 Terraform 模块中通过配置多个 Provider,实现在多个 AWS 账号中同时创建或管理资源的功能
+- [[Shared Account]]:Landing Zone 核心管理账号,托管 Jenkins 及公共服务,作为跨账号部署的信任源
+- [[ECS Deploy Runner]]:运行在 ECS 上的 Docker 容器,负责执行 Terraform plan/apply,是流水线的实际执行单元
+- [[TF State Bucket Accessor]]:专门定义的 IAM 角色,仅允许部署工具访问目标账号 S3 桶中的 Terraform 状态文件
+- [[Cross-account ECS Deploy Runner Role]]:部署在目标账号中的角色,允许 Shared Account 的执行器通过 Assume Role 获取资源创建权限
+- [[cross-account.json]]:约定俗成的标记文件,放置于模块目录中,用于告知 Jenkins 该模块需要调用跨账号部署逻辑
+- [[Root Terragrunt HCL]]:全局 Terragrunt 配置文件,定义远程状态存储和角色切换逻辑
+
+## Key Entities
+- **Fibos**:主讲人,分享了团队基于 Shared Account 的跨账号 Terraform 部署方案
+- **Gruntwork**:参考架构来源,原有 Gruntwork 流水线主要针对单账号设计
+- **Jenkins**:CI/CD 引擎,托管在 Shared Account,负责检测模块类型并触发部署流程
+- **AWS Landing Zone**:多账号架构框架,Shared Account + Workload Account 的分层设计
+
+## Connections
+- [[ctp-topic-9-ci-cd-with-gruntwork]] ← foundation ← [[ctp-topic-16-cross-account-terraform-modules]]
+- [[ECS Deploy Runner]] ← depends_on ← [[Shared Account]]
+- [[Cross-account Terraform Modules]] ← uses ← [[ECS Deploy Runner]]
+- [[ECS Deploy Runner]] ← assumes ← [[Cross-account ECS Deploy Runner Role]]
+- [[ECS Deploy Runner]] ← reads_state ← [[TF State Bucket Accessor]]
+- [[Root Terragrunt HCL]] ← configures ← [[Cross-account Terraform Modules]]
+- [[ctp-topic-48-terraform-vs-terragrunt]] ← related ← [[Root Terragrunt HCL]]
+- [[AWS-Landing-Zone]] ← enables ← [[Shared Account]]
+
+## Contradictions
+- 与 [[ctp-topic-9-ci-cd-with-gruntwork]](单账号 Gruntwork 流水线):原有 Gruntwork 流水线主要针对单账号设计,不处理跨账号场景;本方案通过 Shared Account 中心化架构扩展支持多账号,同时保留 Gruntwork 模块复用优势。两者为演进关系而非冲突。
+- 与 [[ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments]](Atlantis 替代 Jenkins):Atlantis 在 merge 前应用变更,每个 Landing Zone 部署单台 EC2 实例;本方案的 ECS Deploy Runner 运行在容器中,更适合跨账号大规模部署。Atlantis 的跨账号访问通过各账户 IAM 角色实现,与本方案 Assume Role 机制类似,但执行载体不同。
diff --git a/wiki/sources/ctp-topic-48-terraform-vs-terragrunt.md b/wiki/sources/ctp-topic-48-terraform-vs-terragrunt.md
new file mode 100644
index 00000000..be3b2062
--- /dev/null
+++ b/wiki/sources/ctp-topic-48-terraform-vs-terragrunt.md
@@ -0,0 +1,55 @@
+---
+title: "CTP Topic 48 Terraform vs Terragrunt"
+type: source
+tags:
+ - Terraform
+ - Terragrunt
+ - IaC
+ - DevOps
+ - CTP
+date: 2026-04-14
+---
+
+## Source File
+- [[Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/ctp-topic-48-terraform-vs-terragrunt.md]]
+
+## Summary(用中文描述)
+- 核心主题:Terraform 与 Terragrunt 的对比选型,涵盖企业级 IaC 实践
+- 问题域:多环境配置管理、基础设施代码复用、状态文件管理
+- 方法/机制:Terraform 作为核心 IaC 工具(云厂商无关),Terragrunt 作为 Terraform 的 DRY 封装层,处理跨环境变量和远程状态的重复声明
+- 结论/价值:Terraform 与 Terragrunt 命令和语法高度一致,但 Terragrunt 通过减少硬编码、提升可复用性来优化大规模企业部署;两者可互补使用
+
+## Key Claims(用中文描述)
+- Terraform(HashiCorp 出品)通过状态文件将期望状态与现有环境绑定,企业级使用须将状态文件存储在安全可访问的位置
+- Terragrunt 是 Terraform 的轻量封装,贯彻 DRY 原则,通过管理 provider 和 remote_state 块减少跨环境的重复声明
+- Terraform Enterprise 提供带 workspace 的 CI 平台,Gruntwork 提供预建可定制模块,Atlantis 实现 Git 驱动的自动化部署
+- tfsec 用于静态代码安全分析,Terratest 用于基础设施测试自动化
+
+## Key Quotes
+> "Terraform ties the desired state to the existing environment using a state file. For enterprise-scale use, storing this file in a safe, accessible location is crucial." — Bob, AWS Solutions Architect
+> "Terragrunt offers a way to use information in a repeatable way without hard coding values." — Bob
+> "All Terraform commands work with Terragrunt; a Terraform plan becomes a Terragrunt plan." — Bob
+
+## Key Concepts
+- [[Infrastructure As Code]]:通过代码定义和版本控制基础设施资源的实践
+- [[DRY Principle]]:Don't Repeat Yourself — 避免重复配置,通过抽象层复用
+- [[State File Management]]:Terraform 用状态文件绑定期望状态与实际环境
+- [[IaC Testing]]:用 Terratest 等工具对基础设施代码进行自动化测试
+
+## Key Entities
+- [[HashiCorp]]:Terraform 创立公司,提供多云基础设施编排工具
+- [[Gruntwork]]:提供预建可定制的 Terraform 模块和 Terraform 原生 AWS Landing Zone
+- [[Atlantis]]:将 Terraform 与 GitHub 集成的开源 CI/CD 工具
+- [[Terraform]]:云厂商无关的基础设施即代码工具
+- [[Terragrunt]]:Terraform 的 DRY 封装层,管理多环境配置
+
+## Connections
+- [[Terraform]] ← uses ← [[State File Management]]
+- [[Terragrunt]] ← wraps ← [[Terraform]]
+- [[Terraform]] ← provided_by ← [[HashiCorp]]
+- [[Gruntwork]] ← provides_modules_for ← [[Terraform]]
+- [[Atlantis]] ← integrates_with ← [[Terraform]]
+- [[Terraform]] ← related_concept ← [[Infrastructure As Code]]
+
+## Contradictions
+- 暂无发现与其他 Wiki 页面的直接冲突
diff --git a/wiki/sources/learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording.md b/wiki/sources/learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording.md
new file mode 100644
index 00000000..e33d5a2d
--- /dev/null
+++ b/wiki/sources/learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording.md
@@ -0,0 +1,52 @@
+---
+title: "Learning Sessions ECS Deployment using IAC - 20230808"
+type: source
+tags: [AWS, ECS, IaC, Terraform, CTP]
+date: 2023-08-08
+---
+
+## Source File
+- [[Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/learning-sessions-ecs-deployment-using-iac-20230808-183322-meeting-recording.md]]
+
+## Summary(用中文描述)
+- 核心主题:通过 IaC(Terraform)实现 ECS(Elastic Container Service)容器化应用的自动化部署,由 JP 和 Raja M 主讲
+- 问题域:企业在云端部署容器化应用时面临的不可预测性、敏捷性需求,以及 ECS 与 EKS/Kubernetes 的选型权衡
+- 方法/机制:CTP/SRE 团队基于 Gruntwork 仓库构建的 Terraform ECS 模块,支持 Docker 容器创建、自动扩缩容、自动故障恢复和金丝雀部署;通过 Listener 方式集中管理 ECS;配置文件支持 YAML/JSON;集成 CloudWatch、Splunk、Grafana、Prometheus
+- 结论/价值:ECS 作为 AWS 原生技术,与 AWS 服务深度集成,适合追求简单性和 AWS 紧密集成的场景;Terraform IaC 模块化封装降低了部署复杂度
+
+## Key Claims(用中文描述)
+- JP 指出行业面临不可预测性和敏捷性挑战,企业必须在这些挑战中生存,而这一切由代码驱动("Businesses have to thrive in the middle of all these challenges and it is forged by code.")
+- 动态扩缩容对于不可预测的负载模式至关重要,技术必须持续演进以应对
+- ECS (Elastic Container Services) 是 AWS 专有技术,与 AWS 服务深度集成,相比 EKS 或原生 Kubernetes 有其独特优势和挑战
+- CTP/SRE 团队在 Gruntwork 仓库基础上构建了 ECS 模块,将 Docker 容器作为逻辑单元创建,支持 EC2 实例或目标部署
+- ECS 模块实现了 Listener 方式集中管理,因为许多产品团队从 Gruntwork 下载代码后本地使用
+- 使用模块的前置条件包括:VPC、ELB 安全组、EFS 卷挂载
+
+## Key Quotes
+> "Businesses have to thrive in the middle of all these challenges and it is forged by code." — JP,阐述企业如何在云转型挑战中通过代码驱动适应
+> "We have implemented the listener approach because we have seen many of the products are downloading the quotes from the gruntwork and using locally." — Raja M,解释为何 CTP 团队实现 Listener 集中管理方式
+
+## Key Concepts
+- [[Infrastructure-as-Code]]:Terraform IaC 驱动 ECS 部署的核心方法论
+- [[ECS-Module-Deployment]]:CTP/SRE 团队基于 Gruntwork 构建的 ECS 自动化部署模块
+- [[Listener-Approach]]:ECS 集中管理方式,避免各产品团队重复下载使用 Gruntwork 代码
+- [[Canary-Deployment]]:ECS 模块支持的金丝雀部署策略
+
+## Key Entities
+- [[AWS]]:Amazon Web Services,提供 ECS 容器服务及配套生态(CloudWatch、VPC、ELB、EFS)
+- [[Gruntwork]]:IaC 基础设施代码库,CTP 的 ECS 模块基于 Gruntwork 仓库构建
+- [[CTP]](Cloud Transformation Programme):云转型计划,每周定期举办 Learning Sessions 学习会议
+- [[JP]]:演讲者之一,讲解 ECS 的业务和技术背景
+- [[Raja-M]]:演讲者之一,详细介绍 CTP 和 SRE 团队开发的 ECS 模块
+
+## Connections
+- [[ctp-topic-70-eks-deployment-using-iac]] ← extends ← [[Infrastructure-as-Code]](同一 IaC 主题,EKS 与 ECS 两条路径)
+- [[ctp-topic-9-ci-cd-with-gruntwork]] ← builds_on ← [[Gruntwork]](Gruntwork CI/CD 实践是 ECS 模块的基础)
+- [[ctp-topic-33-an-introduction-to-gitops]] ← related_to ← [[Infrastructure-as-Code]](GitOps 与 IaC 协同)
+
+## Contradictions
+- 与 [[ctp-topic-64-scaling-out-with-amazon-eks]] 在容器编排选型上的差异:
+ - 冲突点:ECS 与 EKS 哪个更适合企业容器化部署
+ - 当前观点:ECS 作为 AWS 原生技术与 AWS 服务深度集成,适合追求简单性和紧密集成的场景
+ - 对方观点:EKS 提供更强的可移植性和 Kubernetes 生态系统支持,适合需要多云或混合云策略的场景
+ - 注:两者并非互斥,ECS 和 EKS 可根据具体场景互补使用
diff --git a/wiki/sources/public-cloud-learning-sessions-opentext-ai-use-cases-20241126-160106-meeting-rec.md b/wiki/sources/public-cloud-learning-sessions-opentext-ai-use-cases-20241126-160106-meeting-rec.md
new file mode 100644
index 00000000..8ae78180
--- /dev/null
+++ b/wiki/sources/public-cloud-learning-sessions-opentext-ai-use-cases-20241126-160106-meeting-rec.md
@@ -0,0 +1,54 @@
+---
+title: "Public Cloud Learning Sessions (OpenText) - AI Use Cases - 20241126 160106"
+type: source
+tags:
+ - AI
+ - Use-Cases
+ - OpenText
+ - AWS
+ - Generative-AI
+date: 2024-11-26
+---
+
+## Source File
+- [[Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-opentext-ai-use-cases-20241126-160106-meeting-rec.md]]
+
+## Summary(用中文描述)
+- 核心主题:AWS AI 专家 Stephen Frank 分享 Gen2 AI(生成式 AI)的发展驱动力、企业级应用场景及 AWS 三层产品战略
+- 问题域:企业软件公司如何利用生成式 AI 实现差异化竞争,AI 数据策略选择(RAG / Fine-tuning / Continued Pre-training)
+- 方法/机制:AWS 三层产品架构(基础设施 → Amazon Bedrock → AI 应用);Amazon Q 企业知识问答;数据与 AI 模型集成的三种方法
+- 结论/价值:数据是差异化关键;RAG 可在无需重训练的情况下连接自有业务数据;实施 AI 需要培育实验文化、灵活选择模型、重视安全治理与合规
+
+## Key Claims(用中文描述)
+- 自 2000 年代以来数据量爆发式增长,加上算力提升,驱动了 Gen2 AI 的崛起
+- Amazon 在核心产品和服务中应用 AI/ML 已达 25 年
+- 生成式 AI 应用的差异化关键在于数据——通过 RAG/Fine-tuning/持续预训练与现有业务数据集成
+- AWS 三层产品战略:基础设施层(基础模型训练/推理)→ Amazon Bedrock(旗舰 API 访问)→ 即用型 AI 应用
+- Amazon Bedrock 确保用户数据与提示词不与第三方模型提供商共享,符合 GDPR 合规要求
+- 负责任 AI 的核心原则:公平性(Fairness)、可解释性(Explainability)、透明度(Transparency)
+
+## Key Quotes
+> "Data is key to differentiation, as generative AI applications integrate with existing business data to control outcomes." — Stephen Frank, AWS AI Specialist
+> "When implementing your services, we do have to look at this more holistically." — Stephen Frank, AWS AI Specialist
+
+## Key Concepts
+- [[RAG]]:将生成式 AI 应用与企业现有业务数据集成,无需重训练即可控制输出结果
+- [[Fine-Tuning]]:通过领域数据微调基础模型,提升特定任务表现
+- [[Continued-Pre-Training]]:持续预训练,在基础模型上继续训练以扩展知识
+- [[Responsible-AI]]:公平性、可解释性、透明度的 AI 实施原则
+
+## Key Entities
+- [[AWS]]:亚马逊云科技,提供三层 AI 产品战略
+- [[Amazon-Bedrock]]:AWS 旗舰生成式 AI 服务,提供 API 访问多种基础模型(Anthropic/Titan 等),保证数据不与第三方共享
+- [[Amazon-SageMaker]]:AWS 全托管机器学习平台,面向数据科学家和平台工程师
+- [[Amazon-Q]]:AWS 预构建 AI 系统,支持知识摘要、内容创建和洞察提取,自然语言连接多种数据源
+- [[Stephen-Frank]]:AWS AI 专家,主讲本次会议
+
+## Connections
+- [[public-cloud-learning-sessions-introduction-to-artificial-intelligence-ai-machin]] ← extends ← [[public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111]]
+- [[Amazon-Bedrock]] ← is part of ← [[AWS]] AI 三层产品战略
+- [[Amazon-Q]] ← is part of ← [[AWS]] AI 三层产品战略
+- [[RAG]] ← depends_on ← [[Fine-Tuning]]
+
+## Contradictions
+- 无明显内容冲突。本来源与 [[public-cloud-learning-sessions-introduction-to-artificial-intelligence-ai-machin]] 和 [[public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111]] 共同构成 Serverless & AI 知识链路,内容互补而非冲突。
diff --git a/wiki/sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091.md b/wiki/sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091.md
new file mode 100644
index 00000000..8cf4d2cb
--- /dev/null
+++ b/wiki/sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091.md
@@ -0,0 +1,51 @@
+---
+title: "Public Cloud Learning Sessions (OpenText) - Event Driven Architecture Part 1"
+type: source
+tags:
+ - EDA
+ - Event-Driven
+ - AWS
+ - Architecture
+ - OpenText
+date: 2024-09-17
+last_updated: 2026-05-05
+---
+
+## Source File
+- [[Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091]]
+
+## Summary(用中文描述)
+- 核心主题:事件驱动架构(Event-Driven Architecture,EDA)入门与概述
+- 问题域:企业级云架构中的异步通信与松耦合集成设计
+- 方法/机制:主讲人 Dr. Anil Giri(AWS 解决方案架构师)介绍通过 Amazon EventBridge、SQS 和 SNS 探索事件驱动架构;会议录音包含开场介绍与主持人协调过程(演示过程中遭遇 Teams 屏幕共享技术故障)
+- 结论/价值:帮助参与者掌握企业级集成模式(Enterprise Integration Patterns),学习实用的云计算技能,为解决现实世界业务挑战打下基础
+
+## Key Claims(用中文描述)
+- Amazon EventBridge、SQS 和 SNS 是实现事件驱动架构的核心 AWS 服务
+- 事件驱动架构能够帮助企业实现松耦合、可扩展的系统集成
+- 企业级集成模式(Enterprise Integration Patterns)是构建可靠分布式系统的理论基础
+
+## Key Quotes
+> "探索企业级集成模式,掌握实用的云计算技能,通过使用 Amazon EventBridge、SQS 和 SNS 探索事件驱动架构,以解决现实世界中的业务挑战。" — Dr. Anil Giri,AWS 解决方案架构师,开场学习目标介绍
+
+> "Give me a second. I'm trying to log in. Just give me a second." — 会议期间 Teams 屏幕共享故障场景
+
+## Key Concepts
+- [[Event-Driven-Architecture]]:一种软件架构范式,其中组件通过事件的产生、消费和响应进行通信,强调松耦合
+- [[Enterprise-Integration-Patterns]]:企业集成模式,是构建可靠分布式系统时常见问题的可复用解决方案集合
+- [[Amazon-EventBridge]]:AWS 无服务器事件总线服务,用于连接应用程序与来自各种来源的事件
+- [[Amazon-SQS]]:AWS 简单队列服务,提供完全托管的消息队列服务
+- [[Amazon-SNS]]:AWS 简单通知服务,提供发布/订阅式的消息通知服务
+
+## Key Entities
+- [[Dr.-Anil-Giri]]:AWS 解决方案架构师,Event Driven Architecture 系列主讲人
+- [[AWS]]:Amazon Web Services,云服务提供商,EventBridge/SQS/SNS 的托管方
+- [[OpenText]]:会议主办方,Public Cloud Learning Sessions 系列活动的组织者
+- [[Micro-Focus]]:原公司名称,现已被 OpenText 收购,学习会话的参与群体来源
+
+## Connections
+- [[public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091]] ← part_of ← [[public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091]](Part 1 与 Part 2 为同一系列,Part 2 包含具体演示内容)
+- [[public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee]] ← related_to ← [[Event-Driven-Architecture]](Serverless 与 EDA 高度相关,Serverless 计算天然适合事件驱动场景)
+
+## Contradictions
+- 与 [[ctp-topic-64-scaling-out-with-amazon-eks]] 在扩展方式上的差异——EDA 通过事件驱动异步扩展,EKS 通过容器编排横向扩展,两者适用于不同场景但可互补使用
diff --git a/wiki/sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091.md b/wiki/sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091.md
new file mode 100644
index 00000000..bd96c3de
--- /dev/null
+++ b/wiki/sources/public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091.md
@@ -0,0 +1,62 @@
+---
+title: "Public Cloud Learning Sessions (OpenText) - Event Driven Architecture Part 2"
+type: source
+tags:
+ - EDA
+ - Event-Driven
+ - Architecture
+ - OpenText
+date: 2024-09-17
+last_updated: 2026-05-05
+---
+
+## Source File
+- [[Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091]]
+
+## Summary(用中文描述)
+- 核心主题:事件驱动架构(EDA)进阶实践——最佳实践、团队独立性、常见消息模式
+- 问题域:如何在企业云环境中设计、落地和治理事件驱动架构
+- 方法/机制:Dr. Anil Giri(AWS 解决方案架构师)详解 EDA 三组件(事件生产者/消费者/代理)、事件路由器(EventBridge/SNS)与事件存储(SQS/Kinesis)、编排与编排模式(Choreography vs Orchestration)、幂等性、事件排序、团队去中心化所有权
+- 结论/价值:帮助团队掌握 EDA 生产级最佳实践,在保证弹性和可扩展性的同时实现团队独立自治
+
+## Key Claims(用中文描述)
+- 事件代理分两类:事件路由器(EventBridge/SNS,按规则过滤路由)和事件存储(SQS/Kinesis,由消费者自己过滤)
+- EventBridge 比 SNS 功能更丰富,支持跨 AWS 服务的事件触发和工作流编排
+- 幂等性(Idempotency)是处理 EDA 消息重复的关键机制,AWS Lambda 异步调用会自动重试
+- SQS FIFO 和 Kinesis Data Streams 可保证事件顺序;标准 SQS 和 EventBridge 支持乱序处理
+- 团队独立性应采用去中心化所有权,云卓越中心(Cloud CoE)提供基础设防,团队自主消费事件
+- Fan-out 模式通过 SNS 主题或 EventBridge 规则将事件分发到不同团队
+
+## Key Quotes
+> "Event is nothing but it's like a change in the state or an update." — Dr. Anil Giri,EDA 定义
+
+> "Everything fails every time means like whatever you have designed and whatever workload you is running it may fail any time." — 容错设计哲学
+
+## Key Concepts
+- [[Event-Driven-Architecture]]:一种软件架构范式,通过事件的生产、消费和响应实现松耦合通信
+- [[Choreography]]:编排模式的一种,各微服务自主通信,无需中央协调者
+- [[Orchestration]]:编排模式的一种,通过中央协调者(如 AWS Step Functions)控制工作流步骤
+- [[Idempotency]]:幂等性——同一操作执行一次或多次产生相同结果的特性
+- [[Fan-Out-Pattern]]:一对多消息分发模式,通过 SNS 主题或 EventBridge 规则将事件广播给多个消费者
+- [[Competing-Consumer-Pattern]]:竞争消费者模式,同一时间只有一个消费者可处理消息(SQS 实现)
+- [[Dead-Letter-Queue-DLQ]]:死信队列,用于处理失败事件,防止消息丢失
+
+## Key Entities
+- [[AWS]]:Amazon Web Services,EventBridge/SQS/SNS/Lambda/Kinesis/AWS Step Functions 的托管方
+- [[Amazon-EventBridge]]:AWS 事件路由器,支持规则过滤、跨服务触发、Schema 注册
+- [[Amazon-SQS]]:AWS 消息队列服务,分标准队列(乱序/高效)和 FIFO 队列(有序/Exactly-Once)
+- [[Amazon-SNS]]:AWS 发布/订阅通知服务,实现 Fan-out 分发
+- [[AWS-Lambda]]:AWS 无服务器函数,EDA 的核心事件消费者,异步调用自动重试
+- [[AWS-Step-Functions]]:AWS 状态机编排服务,实现 Orchestration 模式
+- [[Kinesis-Data-Streams]]:AWS 流数据服务,支持事件持久化和有序处理
+- [[Dr.-Anil-Giri]]:AWS 解决方案架构师,Event Driven Architecture 系列主讲人
+- [[OpenText]]:会议主办方,Public Cloud Learning Sessions 系列活动的组织者
+
+## Connections
+- [[public-cloud-learning-sessions-opentext-event-driven-architecture-part-1-2024091]] ← part_of ← [[public-cloud-learning-sessions-opentext-event-driven-architecture-part-2-2024091]](Part 1 与 Part 2 为同一系列,Part 2 补充具体演示内容)
+- [[public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee]] ← related_to ← [[Event-Driven-Architecture]](Serverless 天然适合事件驱动,Lambda 是 EDA 的核心执行单元)
+- [[Event-Driven-Architecture]] ← depends_on ← [[Amazon-EventBridge]](EventBridge 是 AWS EDA 的核心事件总线)
+- [[Event-Driven-Architecture]] ← uses ← [[Idempotency]](幂等性是 EDA 生产级落地的必要保障)
+
+## Contradictions
+- 与 [[ctp-topic-64-scaling-out-with-amazon-eks]] 在扩展方式上的差异——EDA 通过事件驱动异步扩展(消费者按需处理),EKS 通过容器编排横向扩展(Pod 副本数调整),两者适用于不同场景但可互补使用
diff --git a/wiki/sources/public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111.md b/wiki/sources/public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111.md
new file mode 100644
index 00000000..ed7ba611
--- /dev/null
+++ b/wiki/sources/public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111.md
@@ -0,0 +1,66 @@
+---
+title: "Public Cloud Learning Sessions (OpenText) - Generative AI & Prompt Engineering - 20241112"
+type: source
+tags:
+ - Generative-AI
+ - Prompt-Engineering
+ - OpenText
+ - AWS
+date: 2024-11-12
+---
+
+## Source File
+- [[Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111.md]]
+
+## Summary(用中文描述)
+- 核心主题:AWS 生成式 AI 服务与提示工程基础,由 OpenText 技术客户经理 Shikad Holtzman 主讲
+- 问题域:企业如何在 AWS 上构建有业务价值的生成式 AI 应用
+- 方法/机制:Amazon Bedrock 全托管基础模型服务、RAG(检索增强生成)、微调、持续预训练、Amazon Q 助手、提示工程技巧
+- 结论/价值:企业数据是差异化关键,通过 Bedrock 连接自有数据,无需重训练即可构建专属生成式 AI 应用;提示工程通过清晰指令、上下文、示例和链式思维可显著提升 LLM 输出质量
+
+## Key Claims(用中文描述)
+- Shikad Holtzman(以色列技术客户经理)通过 AWS 生成式 AI 堆栈三层架构(基础设施/服务/应用)介绍了创新机会与行业通用场景
+- 生成式 AI 通过创造新体验、提升员工生产力、提取洞察、激发创造力四大路径为企业创造价值;应用场景涵盖客服聊天机器人、代码生成摘要、文档处理和图像生成
+- 企业数据是生成式 AI 应用从通用走向专属、产生实际业务价值的关键差异化因素
+- RAG(检索增强生成)是成本最低、最快速的定制化方法,连接多数据源无需重训练模型;微调通过标注示例重训练模型;持续预训练用无标签数据适配特定领域
+- Amazon Bedrock 是全托管服务,提供来自 Anthropic、Meta、Amazon(Titan)的多种基础模型(含多模态和图像模型),并内置 RAG 知识库、微调、Agents 和 Responsible AI 能力,且用户数据和提示不会与模型提供商共享
+- Amazon Bedrock Guardrails 允许用户根据自身策略过滤有害内容
+- Amazon Q 分为企业版(连接多数据源进行搜索/摘要/洞察提取,维持现有权限)和开发者版(专注代码生成、单元测试和代码迁移)
+- 提示工程是创建、设计和优化提示词以引导 LLM 响应的过程,需清晰、准确、具体,遵循迭代测试优化;提示包含指令、上下文、用户输入和输出指示器四部分
+- 少样本提示(One-shot/Few-shot)通过提供示例帮助模型理解任务模式;链式思维(Chain of Thoughts)通过逐步推理引导模型解决复杂任务
+
+## Key Quotes
+> "Your data is your differentiator and it is what makes the difference between generic application to a specific application that can actually bring business to your value." — Shikad Holtzman,强调企业数据是生成式 AI 差异化的核心
+
+> "None of your data nor not the prompts, not the data that you are using for customizing the model is being shared with the model providers." — 强调 Amazon Bedrock 的数据隔离承诺
+
+## Key Concepts
+- [[RAG]]:检索增强生成,通过连接外部数据源,无需重训练即可让基础模型回答特定领域问题,是成本最低的定制化路径
+- [[Prompt-Engineering]]:提示工程,通过设计清晰指令、上下文、示例和输出指示器引导 LLM 生成准确相关响应的技术和迭代过程
+- [[Chain-of-Thought]]:链式思维,一种提示工程技巧,通过让模型展示逐步推理过程来提升复杂任务表现
+- [[One-Shot-Prompting]]:单样本提示,一种提示技巧,通过提供一个示例帮助模型理解任务格式和期望
+- [[Few-Shot-Prompting]]:少样本提示,通过提供多个示例(通常2-5个)让模型从示例中学习模式和规则
+- [[Responsible-AI]]:负责任 AI,Amazon Bedrock 内置的能力,包括内容过滤和道德准则实施
+- [[Guardrails-for-Amazon-Bedrock]]:Bedrock 护栏,允许用户配置自定义策略过滤有害内容的基础安全功能
+
+## Key Entities
+- [[Shikad-Holtzman]]:OpenText 技术客户经理(驻以色列),本次学习会议讲师,专注于 AWS 生成式 AI 应用与创新机会分享
+- [[Amazon-Bedrock]]:AWS 全托管基础模型服务,提供多提供商模型(Anthropic/Amazon Titan/Meta),内置 RAG、微调、Agents 和 Responsible AI 能力
+- [[Amazon-SageMaker]]:AWS 托管服务,覆盖基础模型构建、训练和部署全生命周期;SageMaker JumpStart 提供公开可用基础模型和第三方模型访问
+- [[Amazon-Q]]:AWS AI 助手,分企业版(多数据源连接、搜索摘要)和开发者版(代码生成、单元测试、代码迁移)
+- [[AWS-Trainium]]:AWS 专用训练芯片,用于基础模型训练
+- [[AWS-Inferentia]]:AWS 专用推理芯片,用于模型推理部署
+- [[AWS]]:Amazon Web Services,OpenText Cloud 转型计划的云服务提供商
+
+## Connections
+- [[Amazon-Bedrock]] ← extends ← [[Foundation-Models]]
+- [[RAG]] ← part_of ← [[Amazon-Bedrock]]
+- [[Amazon-Q]] ← part_of ← [[AWS-Generative-AI-Stack]]
+- [[Prompt-Engineering]] ← uses ← [[Chain-of-Thought]]
+- [[Prompt-Engineering]] ← uses ← [[Few-Shot-Prompting]]
+- [[Amazon-SageMaker]] ← part_of ← [[AWS-Generative-AI-Stack]]
+- [[public-cloud-learning-sessions-introduction-to-artificial-intelligence-ai-machin]] ← related ← [[public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111]](同属 AWS AI/ML 入门系列)
+- [[public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee]] ← related ← [[public-cloud-learning-sessions-opentext-generative-ai-prompt-engineering-2024111]](同属 OpenText Serverless & AI 专题)
+
+## Contradictions
+- 与 [[ctp-topic-64-scaling-out-with-amazon-eks]] 在扩展方式上的差异:EDA 通过事件驱动异步扩展,EKS 通过容器编排横向扩展,两者适用于不同场景但可互补使用
diff --git a/wiki/sources/public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee.md b/wiki/sources/public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee.md
new file mode 100644
index 00000000..befa52f4
--- /dev/null
+++ b/wiki/sources/public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee.md
@@ -0,0 +1,62 @@
+---
+title: "Public Cloud Learning Sessions - Serverless Computing - 20240903"
+type: source
+tags:
+ - Serverless
+ - AWS
+ - Lambda
+ - Step-Functions
+ - API-Gateway
+ - OpenText
+date: 2026-04-14
+---
+
+## Source File
+- [[Cloud & DevOps/Public-Cloud-Learning-Sessions/09_Serverless_AI/public-cloud-learning-sessions-opentext-serverless-computing-20240903-160139-mee.md]]
+
+## Summary(用中文描述)
+- 核心主题:AWS 无服务器计算(Serverless Computing),聚焦 AWS Lambda、Step Functions 和 API Gateway
+- 问题域:企业如何在云环境中简化应用管理、降低运维负担、加快上市时间
+- 方法/机制:Lambda 事件驱动函数 → Step Functions 工作流编排 → API Gateway API 管理,AWS 与客户共担运维责任(AWS 管基础设施,客户管代码)
+- 结论/价值:Serverless 模式通过"按需付费、自动扩展、内置安全"实现更快的市场响应和更低的 TCO
+
+## Key Claims(用中文描述)
+- AWS Lambda 将运维任务(负载均衡、自动扩展、安全)转移给云厂商,使开发团队专注业务逻辑
+- Lambda 函数支持同步、异步、事件源映射三种触发模式,可精细控制执行行为
+- Lambda 权限模型分为执行角色(决定函数能做什么)和资源策略(决定谁能触发函数)
+- Step Functions 提供 Standard 和 Express 两种工作流类型,分别适用于长时任务和高频场景
+- SAM(Serverless Application Model)基于 CloudFormation 构建,支持本地开发和测试 Lambda 函数
+- Lambda Layers 允许跨函数共享公共代码,提高复用率;ARM64 架构提供更优性价比
+
+## Key Quotes
+> "Whenever you see that you have written code and you want that this code is final, you can publish as a new version." — Lambda 版本发布的核心理念
+
+## Key Concepts
+- [[Serverless-Computing]]:将运维任务(负载均衡、自动扩展、安全补丁)转移给云厂商,使开发团队专注业务代码,无需管理服务器
+- [[Event-Driven-Architecture]]:Lambda 函数由事件触发——状态的任何变化即为事件,是 Serverless 的核心执行模型
+- [[Lambda-Permissions-Model]]:执行角色(Execution Role)决定函数能调用哪些 AWS 资源,资源策略(Resource-Based Policy)决定谁能触发该函数,两者分离实现最小权限原则
+- [[Step-Functions]]:无服务器工作流编排服务,基于状态机协调多个 AWS 服务,支持 Standard(长时)和 Express(高频)两种工作流类型
+- [[API-Gateway]]:托管式 API 创建、发布和安全服务,提供边缘优化(Edge-Optimized)、区域(Regional)和私有(Private)三种部署选项
+- [[SAM-Serverless-Application-Model]]:基于 CloudFormation 的无服务器应用开发工具,支持本地测试和部署 Lambda 函数
+
+## Key Entities
+- [[AWS Lambda]]:AWS 无服务器计算核心服务,开发者只需提供业务逻辑,AWS 负责其余所有运维工作
+- [[AWS Step Functions]]:AWS 无服务器工作流编排服务,用于协调多个 Lambda 函数和 AWS 服务的执行顺序
+- [[Amazon API Gateway]]:AWS 托管式 API 管理服务,用于创建、发布和维护安全的企业级 API
+- [[Amazon EventBridge]]:AWS 事件总线服务,用于在应用程序之间路由事件(属于 AWS Serverless 服务组合)
+- [[AWS Fargate]]:AWS 无服务器容器计算服务(与 Lambda 互补,提供容器层的 Serverless 选项)
+- [[Amazon Q]]:AWS AI 助手,可用于调试 Lambda 函数(CloudWatch 集成)
+- [[CloudWatch]]:AWS 监控服务,Lambda 将指标(请求数、错误数、延迟、节流)上报至此
+- [[Serverless-Application-Model-SAM]]:AWS 官方开源工具,基于 CloudFormation 简化无服务器应用的本地开发和部署
+
+## Connections
+- [[AWS-Lambda]] ← is_a ← [[Serverless-Computing]]
+- [[AWS-Step-Functions]] ← orchestrates ← [[AWS-Lambda]]
+- [[Amazon-API-Gateway]] ← exposes ← [[AWS-Lambda]]
+- [[Amazon-EventBridge]] ← triggers ← [[AWS-Lambda]]
+- [[SAM-Serverless-Application-Model]] ← builds_on ← [[CloudFormation]]
+- [[CloudWatch]] ← monitors ← [[AWS-Lambda]]
+- [[Serverless-Computing]] ← extends ← [[Cloud-Transformation-Programme]]
+
+## Contradictions
+- 无已知冲突