

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 管理 Terraform 開放原始碼產品狀態錯誤
<a name="provisioned-products-lifecycle"></a>

Terraform 開放原始碼`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 確保為所有`TAINTED`從 設定為 的佈建產品建立資源群組`ProvisionProduct`。如果 Terraform 佈建引擎未傳回 `ResourceIdentifier`，或如果 AWS Service Catalog 無法建立資源群組，則佈建產品會設為 `ERROR` 狀態，強制您終止。