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

Change

参数 类型 描述
ResourceChange 结构体 更改的资源和操作。
Type 字符串 更改的实体类型。

取值:Resource,表示资源。

ResourceChange

参数 类型 描述
Action 字符串 资源的相关操作。取值:
  • Add:创建资源。
  • Modify:修改资源。
  • Remove:释放资源。
Details 数组 资源的修改详情。当Action取值为Modify时,该参数有效。
说明 仅ROS类型资源栈支持该参数。
LogicalResourceId 字符串 资源的逻辑ID,即模板中定义的资源名称。
PhysicalResourceId 字符串 资源的物理ID。当Action取值为ModifyRemove时,该参数有效。
Replacement 字符串 Action取值为Modify时,表示是否通过创建新资源并删除旧资源来替换资源。 取值:
  • ROS类型资源栈
    • RequiresRecreation取值为AlwaysEvaluation取值为Static时:True,表示ROS会通过创建新资源并删除旧资源来替换资源。
    • RequiresRecreation取值为NeverEvaluation取值为Static时:False,表示ROS不会通过创建新资源并删除旧资源来替换资源。
    • RequiresRecreation取值为AlwaysEvaluation取值为Dynamic时:Conditional,表示ROS可能会通过创建新资源并删除旧资源来替换资源。
    说明 如果RequiresRecreation有多个取值,则Replacement的值取决于影响最大的更改,AlwaysConditionalNever影响递减。
  • Terraform类型资源栈
    • True:Terraform会通过创建新资源并删除旧资源来替换资源。
    • False:Terraform不会通过创建新资源并删除旧资源来替换资源。
ResourceType 字符串 资源类型。
Scope 字符串数组 Action取值为Modify时,触发更新的参数。取值:
  • Properties:Resource中的Properties参数将触发更新。
  • Metadata:Resource中的Metadata参数将触发更新。
  • DeletionPolicy:Resource中的DeletionPolicy参数将触发更新。
说明 仅ROS类型资源栈支持该参数。
PropertyChanges ResourcePropertyChange结构体数组 Action取值为Modify时,更新前后资源属性发生的变化。
说明 仅Terraform类型资源栈支持该参数。

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:ROS可以确定目标值,且目标值将更新。
  • Dynamic:ROS无法确定目标值。因为更新资源栈时,目标值取决于内部函数的结果,例如:RefFn::GetAtt
Target 结构体 触发更新的参数的具体信息。

ResourceTargetDefinition

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

ResourcePropertyChange

参数 类型 描述
Name 字符串 属性名。
BeforeValue 由属性本身决定 更新前的取值。
AfterValue 由属性本身决定 更新后的取值。
说明
  • 如果为字符串,且取值为<known_after_apply>,则表示创建或更新后才能获取。
  • 如果为字符串,且取值为<sensitive>,则表示为敏感数据。