AWS AppConfig
通过分阶段发布和验证机制安全部署应用程序配置变更,并在出现问题时自动回滚的服务
概述
AWS AppConfig 是作为 AWS Systems Manager 功能提供的配置管理服务。它可以独立于代码部署安全地分发应用程序配置变更,通过结合分阶段发布、自动回滚和验证预检,大幅降低因配置错误导致故障的风险。可以对 Lambda、ECS、EKS、EC2 上的应用程序实时应用功能开关、运维参数、允许列表等配置,无需重新部署即可控制应用程序行为。
配置文件与部署策略
AppConfig 通过应用程序、环境和配置文件三层结构组织资源。应用程序代表逻辑分组 (如微服务单元),环境区分生产、预发布、开发等部署目标。配置文件定义实际配置数据的存储位置,可指定 S3 存储桶、SSM 文档或 SSM Parameter Store 作为数据源。部署策略是控制配置变更展开速度的机制,提供线性 (Linear)、指数 (Exponential) 和立即 (AllAtOnce) 三种模式。生产环境推荐使用线性部署,例如设置为 20 分钟内每次推进 10%,在检测到异常时可将影响范围控制到最小。部署过程中如果 CloudWatch 告警触发,将自动执行回滚,立即恢复到上一个正常配置。通过这一机制,可以像管理代码部署一样安全地管理配置变更的风险。
验证器实现配置值的安全校验
AppConfig 的验证器在配置值部署之前对其内容进行校验,防止无效值到达应用程序。验证器分为语法验证器和 Lambda 验证器两种。语法验证器通过指定 JSON Schema 以声明方式验证配置值的类型、范围和必填字段。例如,可以在 Schema 中定义超时值必须是 1 到 300 之间的整数,连接 URL 必须以 https 开头等。Lambda 验证器通过自定义逻辑实现高级验证,可以实现配置值的一致性检查、与外部系统的连通性确认、业务规则验证等。验证失败时部署不会启动,配置创建者会收到错误信息。可以组合多个验证器,在实务中分阶段应用语法检查和业务逻辑检查的模式非常有效。由于能够自动排除配置变更中的人为错误,运维可靠性将大幅提升。
功能开关与运行时集成
AppConfig 的功能开关 (Feature Flag) 功能是一种无需代码部署即可切换功能启用/禁用的机制。创建功能开关专用的配置文件后,可以为每个开关定义布尔值、字符串、数值等属性,还可以设置基于用户分群或百分比的定向投放。运行时获取配置使用 AppConfig Agent。Agent 可作为 Lambda Layer、ECS Sidecar 或本地 HTTP 端点运行,将配置值缓存在本地并快速返回。轮询间隔默认为 45 秒,配置变更部署后将在下次轮询时自动生效。使用 Agent 后,应用程序代码只需通过简单的 HTTP GET 获取配置,可将 SDK 依赖降至最低。在 Lambda 环境中推荐使用 AppConfig Lambda Extension,它在函数初始化阶段获取配置并缓存到内存中,对冷启动的影响也很小。