通过偏差检测,您可以检测资源栈的实际配置是否与其模版配置不同或已经偏差。

前提条件

请确保您已经创建了资源栈。具体操作,请参见创建资源栈

使用限制

  • 只有以下状态的资源栈支持偏差检测。
    状态 说明
    CREATE_COMPLETE 资源栈创建成功。
    UPDATE_FAILED 资源栈更新失败。
    UPDATE_COMPLETE 资源栈更新完成。
    ROLLBACK_COMPLETE 资源栈回滚完成。
    ROLLBACK_FAILED 资源栈回滚失败。
    CHECK_COMPLETE 资源栈校验完成。
    CHECK_FAILED 资源栈校验失败。
  • 目前只支持部分资源的偏差检测。更多信息,请参见支持偏差检测和资源导入的资源类型

检测偏差(控制台)

  1. 登录资源编排控制台
  2. 在左侧导航栏,单击资源栈
  3. 在页面左上角的地域下拉列表,选择资源栈的所在地域。
  4. 在目标资源栈的操作列,选择1 > 检测偏差
    您也可以单击资源栈名称下面的资源栈ID,在资源栈信息页签,单击检测偏差
  5. 偏差页签,查看资源栈的偏差状态上一次偏差检查时间资源偏差状态

检测偏差(阿里云CLI)

您可以借助阿里云命令行工具 CLI(Alibaba Cloud CLI),调用偏差检测相关接口检测资源栈偏差。具体如下:

  • 调用DetectStackDrift接口对资源栈进行偏差检测。您需要指定资源栈ID,以及用于此次偏差检测操作筛选条件的特定资源名称。

    输入以下命令:

    aliyun ros DetectStackDrift --StackId bc1a154f-d073-4e77-9ae5-323d3b23****

    预期输出:

    {
        "DriftDetectionId": "ad9cf0c7-938e-40b3-9466-ec9f25a1****",
        "RequestId": "B288A0BE-D927-4888-B0F7-B35EF84B6E6F"
    }
  • 调用GetStackDriftDetectionStatus接口查询偏差检测的状态。此接口将获取DetectStackDrift返回的资源栈偏差检测ID。

    在以下示例中,我们采用了如上DetectStackDrift示例返回的资源栈偏差检测ID,并将其作为参数传递给GetStackDriftDetectionStatus。此参数返回操作详细信息,显示偏差检测操作已完成。

    输入以下命令:

    aliyun ros GetStackDriftDetectionStatus --DriftDetectionId ad9cf0c7-938e-40b3-9466-ec9f25a1****

    预期输出:

    {
        "RequestId": "52398D3A-E868-4F95-8B5E-6A2DFB778B16",
        "DriftDetectionTime": "2020-03-17T07:21:17",
        "DriftDetectionStatusReason": "Detect stack drift successfully",
        "DriftedStackResourceCount": 2,
        "DriftDetectionStatus": "DETECTION_COMPLETE",
        "StackDriftStatus": "DRIFTED",
        "DriftDetectionId": "ad9cf0c7-938e-40b3-9466-ec9f25a1****",
        "StackId": "bc1a154f-d073-4e77-9ae5-323d3b23****"
    }
  • 调用ListStackResourceDrifts接口查询资源栈的资源偏差详情。

    输入以下命令:

    aliyun ros ListStackResourceDrifts --StackId bc1a154f-d073-4e77-9ae5-323d3b23****

    预期输出:

    {
      "ResourceDrifts": [
        {
          "ResourceDriftStatus": "MODIFIED",
          "LogicalResourceId": "Vpc1",
          "PropertyDifferences": [
            {
              "ActualValue": "test11",
              "PropertyPath": "/Description",
              "ExpectedValue": "test1",
              "DifferenceType": "NOT_EQUAL"
            }
          ],
          "PhysicalResourceId": "vpc-m5euqfvmzygb7xqmx****",
          "ExpectedProperties": "{\"CidrBlock\": \"192.168.0.0/16\", \"Description\": \"test1\", \"VpcName\": \"test1\"}",
          "DriftDetectionTime": "2020-03-17T07:21:17",
          "ResourceType": "ALIYUN::ECS::VPC",
          "ActualProperties": "{\"CidrBlock\": \"192.168.0.0/16\", \"Description\": \"test11\", \"VpcName\": \"test1\"}",
          "StackId": "bc1a154f-d073-4e77-9ae5-323d3b23****"
        },
        {
          "ResourceDriftStatus": "DELETED",
          "LogicalResourceId": "Vpc2",
          "PhysicalResourceId": "vpc-m5exf3skxrxtvtkbc****",
          "DriftDetectionTime": "2020-03-17T07:21:17",
          "ResourceType": "ALIYUN::ECS::VPC",
          "StackId": "bc1a154f-d073-4e77-9ae5-323d3b23****"
        }
      ],
      "RequestId": "8E1DE57B-6124-482B-8283-EF5562653308"
    }