

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 管理 Terraform 开源产品状态错误
<a name="provisioned-products-lifecycle"></a>

Terraform Open Source `ProvisionProduct` 故障会路由到 `TAINTED` 状态，进而允许每个预配置的产品继续进行 `UpdateProvisionedProduct`。发生这种情况时：
+ `UpdateProvisionedProduct` **不会**尝试更新或更正标签，也不会尝试创建或修改资源组。
+ `UpdateProvisionedProduct` 在决定是否应将预配置产品设置为 `AVAILABLE` 或 `TAINTED` 时，**不会**考虑先前配置操作的失败。

AWS Service Catalog 仅在此期间应用标签`ProvisionProduct`。由于 `ProvisionProduct` 操作失败而导致的任何标记失败都**不会**自动解决。

## 状态错误示例
<a name="provisioned-products-lifecycle-errors"></a>

**示例 1：在期间 AWS Service Catalog 不创建资源组** `ProvisionProduct`

在以下场景中，即使没有支持资源组，也没有对资源应用任何标签，您仍有预配置产品处于 `AVAILABLE` 状态。

1. 您的操作启动 `ProvisionProduct`。

1. Terraform 预配置引擎会以工作流程故障对 `ProvisionProduct` 做出响应，但不提供 `ResourceIdentifier`。

1. `ProvisionProduct` 工作流程不会创建资源组，并随后将预配置的产品状态设置为 `ERROR`。

1. 然后，您可启动 `UpdateProvisionedproduct` 操作。

1. Terraform 预配置引擎会做出表示“成功”的回复。

1. 因此，`UpdateprovisionedProduct` 工作流程将预配置产品的状态设置为 `AVAILABLE`，但**不会**创建资源组，也不会尝试应用任何标签。

**示例 2：在此期间 AWS Service Catalog 创建新资源** `UpdateProvisionedProduct`

在以下场景中，即使新资源**未**应用任何标签，您仍有预配置产品处于 `AVAILABLE` 状态。

1. 您的操作启动 `ProvisionProduct`。

1. Terraform 预配置引擎会做出表示“成功”的回复，并提供 `ResourceIdentifier`。

1. `ProvisionProduct` 工作流程创建资源组并将标签应用于所有已识别的资源。

1. 您启动 `UpdateProvisionedProduct` 一个创建新资源的新构件。

1. Terraform 预配置引擎会做出表示“成功”的回复。

1. `UpdateProvisionedProduct` 工作流程将预配置产品状态设置为 `AVAILABLE`，但**不会**尝试将任何其他标签应用于新资源。

### 状态错误解决方案
<a name="provisioned-products-lifecycle-solutions"></a>

AWS Service Catalog 确保为所有设置为 from 的预配置产品创建资源组。`TAINTED` `ProvisionProduct`如果 Terraform 配置引擎未返回`ResourceIdentifier`，或者创建资源组 AWS Service Catalog 失败，则预配置产品将设置为`ERROR`状态，迫使您终止。