本文介绍更改集的四种数据结构,包括Change、ResourceChange、ResourceChangeDetail和ResourceTargetDefinition。

Change

参数 类型 描述
ResourceChange 结构体 ROS将执行的资源和操作。
Type 字符串 更改的实体类型。目前仅支持Resource

ResourceChange

参数 类型 描述
Action 字符串 ROS对资源执行的操作。取值:
  • Add:创建资源。
  • Modify:修改资源。
  • Remove:释放资源。
Details 数组 ROS对资源的修改详情。只有当ActionModify时,才显示该字段。
LogicalResourceId 字符串 资源的逻辑ID,即模板中定义的资源名称。
PhysicalResourceId 字符串 资源的物理ID。当ActionAdd时,由于资源未创建,没有物理ID。
Replacement 字符串 ActionModify时,ROS是否通过创建新资源并删除旧资源来替换资源。
取值:
  • True:ROS会通过创建新资源并删除旧资源来替换资源。
  • False:ROS不会通过创建新资源并删除旧资源来替换资源。
  • Conditional:ROS可能会通过创建新资源并删除旧资源来替换资源。
此值取决于ResourceTargetDefinition结构中RequiresRecreation属性的值。
  • 如果RequiresRecreation字段为AlwaysEvaluation字段为Static,则ReplacementTrue
  • 如果RequiresRecreation字段为AlwaysEvaluation字段为Dynamic,则ReplacementConditional
  • 如果RequiresRecreation有多个更改值,则Replacement值取决于影响最大的更改,AlwaysConditionalNever影响递减。
ResourceType 字符串 ROS资源类型
Scope 字符串数组 ActionModify时,触发更新的字段。取值:
  • Properties:Resource中的Properties字段发生了更新。
  • Metadata:Resource中的Metadata字段发生了更新。
  • DeletionPolicy:Resource中的DeletionPolicy字段发生了更新。

ResourceChangeDetail

参数 类型 描述
ChangeSource 字符串 触发更新的原因。取值:
  • ResourceReference:引用了其他资源的物理ID,引用的资源物理ID可能发生了变化。
  • ParameterReference:引用的参数发生了变化。
  • ResourceAttribute:引用了其他资源的输出属性,引用资源的输出属性可能发生了变化。
  • DirectModification:直接修改了模板。
  • Automatic:如果嵌套资源栈(ALIYUN::ROS::Stack)未进行修改,则ROS会将其ChangeSource设置为Automatic,因为嵌套资源栈中指定的模板可能已经发生了更改。在您对父资源栈运行更新之前,ROS不会对嵌套资源栈模板进行更改。
  • System:虽然某些资源的输入未发生变化,但是特定的条件或内部机制也会触发更新,例如:ALIYUN::ROS::WaitConditionHandle
CausingEntity 字符串 ChangeSource关联的对象。对应关系如下:
  • ResourceReference:资源名
  • ParameterReference:参数名
  • ResourceAttribute资源名.参数名
  • DirectModification:null
  • Automatic:资源名
  • System:资源名
Evaluation 字符串 ROS是否可以确定目标值,以及在执行更改集之前目标值是否将更改。取值:
  • Static

    当取值为Static时,ROS可以确定目标值,且目标值将改变。

  • Dynamic

    当取值为Dynamic时,无法确定目标值。因为更新资源栈时,目标值取决于内部函数的结果,例如:RefFn::GetAtt

Target 结构体 描述触发更新的字段的具体信息。

ResourceTargetDefinition

参数 类型 描述
Attribute 字符串 指定触发更新字段。取值:
  • Properties:Resource中的Properties字段发生了更新。
  • Metadata:Resource中的Metadata字段发生了更新。
  • DeletionPolicy:Resource中的DeletionPolicy字段发生了更新。
Name 字符串 AttributeProperties时,表示具体的属性名,其他情况为null
RequiresRecreation 字符串 AttributeProperties时,表示对此属性的更改是否导致重新创建资源。取值:
  • Never:不会导致重新创建资源。
  • Conditionally:可能导致重新创建资源。
  • Always:会导致重新创建资源。