跳到主要内容

ROS 特性支持

InfraGuard 支持广泛的 ROS(资源编排服务)模板特性,能够对您的基础设施代码进行静态分析和验证。

函数

InfraGuard 支持以下 ROS 函数:

字符串函数

编码函数

列表函数

映射函数

数学函数

条件函数

实用函数

条件

InfraGuard 完全支持 ROS 条件功能,包括:

  • 条件定义 - 在 Conditions 部分定义条件
  • 条件函数 - 在条件中使用 Fn::EqualsFn::AndFn::OrFn::NotFn::If
  • 条件引用 - 在资源和输出中引用条件
  • 依赖关系解析 - 自动解析条件依赖关系

YAML 短语法

InfraGuard 支持 ROS 函数的 YAML 短语法(标签表示法):

  • !Ref - Ref 的简写形式
  • !GetAtt - Fn::GetAtt 的简写形式
  • 所有其他 Fn::* 函数都可以写作 !FunctionName

YAML 解析器会在模板加载时自动将这些短语法转换为标准的映射表示。

暂不支持的特性

InfraGuard 专注于静态分析,在静态模式下目前不支持以下特性:

运行时函数

  • Fn::GetAtt - 需要实际创建资源后才能获取属性
  • Fn::GetAZs - 需要运行时查询云服务商
  • Fn::GetStackOutput - 需要访问其他资源栈的输出

模板部分

  • Locals - 本地变量定义
  • Transform - 模板转换和宏
  • Rules - 模板验证规则
  • Mappings - 静态值映射(不会进行策略违规分析)

特殊引用

  • 伪参数(如 ALIYUN::StackIdALIYUN::Region 等)- 系统提供的参数

这些特性在使用静态模式时会在分析输出中被保留原样,不会进行求值或验证。

提示:对于使用静态分析不支持的特性(如 Fn::GetAttFn::GetAZs 等)的模板,我们推荐使用 --mode preview 来利用 ROS PreviewStack API 进行更准确的分析。预览模式通过实际的云服务商上下文评估模板,从而支持运行时函数和其他动态特性。

相关资源