当您在资源编排服务ROS(Resource Orchestration Service)之外更改资源配置时,可以使用偏差检测功能检测资源栈中资源的变更信息。您也可以采取纠正措施,使资源栈资源与资源栈模板中的定义同步,以确保资源配置的一致性。

功能特性

偏差检测对象 说明 偏差检测所需权限
资源 将预期的资源属性值指定为模板参数的值,并将预期值与这些资源属性的实际值进行比较。如果某个资源的实际属性值与预期属性值不同,则资源存在偏差。
  • 该资源的读取权限。
  • ros:DetectStackResourceDrift权限。
资源栈 如果资源栈中的资源存在偏差,则资源栈存在偏差。
说明 ROS将生成已经存在偏差的资源栈中每个资源的详细信息。
  • 资源栈中每个资源的读取权限。例如:如果资源栈包含ALIYUN::VPC::EIP资源,则您必须具有vpc:DescribeEipAddresses权限才能在资源栈上进行偏差检测。
  • ros:DetectStackDrift权限。
资源栈组 根据属于资源栈组的资源栈实例的偏差状态来描述资源栈组的总体偏差状态。如果资源栈实例关联的资源栈存在偏差,则实例所在的资源栈组存在偏差。
  • 资源栈组中资源栈包含的每个资源的读取权限。
  • ros:DetectStackGroupDrift权限。

支持偏差检测的资源和资源栈

偏差检测对象 说明
资源 关于偏差检测支持的资源类型,请参见支持偏差检测和资源导入的资源类型
资源栈 偏差检测支持的资源栈状态如下:
  • CREATE_COMPLETE
  • UPDATE_COMPLETE
  • ROLLBACK_COMPLETE
  • ROLLBACK_FAILED
  • CHECK_COMPLETE

使用限制

  • 检测资源栈的偏差状态时,ROS不会在任何属于该资源栈的嵌套资源栈上检测偏差。您可以直接在嵌套资源栈上启动偏差检测操作。
  • 在某些情况下,ROS可能无法返回准确的偏差结果。您应该了解这些情况,以便正确解释您的偏差检测结果。
    • 在某些情况下,属性数组中包含的对象将报告为偏差,而实际上它们是从负责该资源的底层服务提供给属性的默认值。
    • 您可以在资源栈模板中指定某些资源属性。ROS无法将其与生成的资源栈资源中的属性进行比较,因此这些属性不能包括在偏差检测结果中。这些属性可分为四大类:
      • ROS无法在资源栈模板中映射回初始资源属性值的属性值。
      • 负责资源的服务不返回的属性值。
      • 某些属性值被有意设计成永远不会由资源所属的服务返回。这些属性值往往包含机密信息,例如密码或其他不应泄露的敏感数据。
      • ROS尚未支持的资源属性。

      资源的属性究竟是否支持偏差检查,可以通过GetResourceType接口查询。以查询ALIYUN::ESS::ScalingRule资源的返回值为例,最外层的SupportDriftDetection字段表明资源是否支持偏差检查。如果取值为true,表明资源支持偏差检查,此时每个属性都有SupportDriftDetection字段表明该属性是否支持偏差检查。

      {
          ...
          "ResourceType": "ALIYUN::ESS::ScalingRule",
          "Properties": {
              "ScalingRuleName": {
                  ...
                  "SupportDriftDetection": true
              },
              ...
          },
          "SupportDriftDetection": true
      }

使用偏差检测

  1. 检测资源、资源栈或资源栈组的偏差状态。
  2. 纠正资源栈、资源栈组的偏差状态。
    • 纠正资源栈的偏差状态
      说明 纠正资源栈的偏差状态通过纠正资源的偏差状态来实现,不支持单独纠正一个资源。
    • 纠正资源栈组的偏差状态:纠正资源栈组中所有资源栈的偏差状态。
  3. 查询偏差检测状态码。

    更多信息,请参见偏差检测状态码