数据结构

您可以通过查看更改集了解更改集对资源栈的具体更改,本文为您介绍更改集JSON更改的详细内容。

JSON更改组成部分

更改集的JSON更改部分由下列部分组成。具体信息,请参见下文。

  • Change:具体的更改操作,包含更改类型和要执行操作的对象。

  • ResourceChange:资源变更内容,包含资源名称、资源类型和要执行的操作等。

  • ResourceChangeDetail:资源更改的详细内容,包含资源属性和资源更改前后的状态。

  • ResourceTargetDefinition:资源更改的目标定义,包含要更改资源的目标属性和配置。

  • ResourcePropertyChange:资源属性的更改,包含更改前后的属性值和属性名称。

  • ModuleInfo:模块的相关信息。

JSON更改详细内容

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取值为Never、Evaluation取值为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时,更新前后资源属性发生的变化。更多信息,请参见ResourcePropertyChange

说明

仅Terraform类型资源栈支持该参数。

ModuleInfo

ModuleInfo结构体数组

资源来源模块的信息。资源来自于模块时,才返回该字段。更多信息,请参见ModuleInfo

说明

仅ROS类型资源栈支持该参数。

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>,则表示为敏感数据。

ModuleInfo

参数

类型

描述

LogicalIdHierarchy

字符串

包含资源的一个或多个模块的逻辑ID的串联列表。 模块从最外层开始列出,并以/分隔。

在以下示例中,资源是从嵌套在父模块moduleA中的模块moduleB创建的。

moduleA/moduleB

TypeHierarchy

字符串

包含资源的一个或多个模块类型的串联列表。 模块类型从最外层开始列出,并以/分隔。

在以下示例中,资源是从MODULE::ROS::Child::Example类型的模块创建的,该模块嵌套在MODULE::ROS::Parent::Example类型的父模块中。

MODULE::ROS::Parent::Example/MODULE::ROS::Child::Example

相关文档

关于如何查看JSON更改,请参见查看更改集