

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

# 管理產品
<a name="catalogs_products"></a>

您可以建立產品、根據更新後的範本建立新版本來更新產品，並將產品分組到產品組合中，以將它們分發給使用者。

產品新版本已傳播給有權透過產品組合存取產品的所有使用者。當您分發更新時，最終使用者可以更新現有的佈建產品。

**Topics**
+ [檢視產品頁面](#productmgmt-menu)
+ [建立產品](productmgmt-cloudresource.md)
+ [將產品新增至產品組合](catalogs_portfolios_adding-products.md)
+ [更新產品](productmgmt-update.md)
+ [從 GitHub、GitHub Enterprise 或 Bitbucket 將產品同步至範本檔案](git-synced-sc-products.md)
+ [刪除產品](productmgmt-delete.md)
+ [管理版本](managing-versions.md)

## 檢視產品頁面
<a name="productmgmt-menu"></a>

您可以從 AWS Service Catalog 管理員主控台中的產品**清單**頁面管理產品。

**檢視**產品清單**頁面**

1. 在 https：//[https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/) 開啟 Service Catalog 主控台。

1. 選擇**產品清單**。

# 建立產品
<a name="productmgmt-cloudresource"></a>

 您可以從 AWS Service Catalog 管理員主控台中的產品頁面建立**產品**。

**注意**  
建立 Terraform 產品需要額外的組態，包括 Terraform 佈建引擎和啟動角色。如需詳細資訊，請檢閱 [Terraform 產品入門](getstarted-Terraform.md)。

**建立新的 AWS Service Catalog 產品**

1. 導覽至**產品清單**頁面。

1. 選擇**建立產品**，然後選擇**建立產品**。

1. **產品詳細資訊** – 可讓您選擇要建立的產品類型。 AWS Service Catalog 支援 CloudFormation、Terraform Cloud 和外部 （支援 Terraform Community Edition) 產品類型。產品詳細資訊也包含當您在清單或詳細資訊頁面中搜尋和檢視產品時顯示的中繼資料。輸入下列資料：
   + **Product name** (產品名稱) – 即產品名稱。
   +  **產品描述 **– 描述會顯示在產品清單中，以協助您選擇正確的產品。
   + **擁有者** – 發佈此產品的人員或組織。擁有者可以是您的 IT 組織或管理員的名稱。
   + **Distributor **（選用） – 應用程式發佈者的名稱。此欄位可讓您排序產品清單，以更輕鬆地尋找產品。

1. **版本詳細資訊**可讓您新增範本檔案並建置產品。輸入下列資料：
   +  **選擇方法** – 新增範本檔案有四種方式。
     + **使用本機範本檔案** - 從本機磁碟機上傳 CloudFormation 範本或 Terraform tar.gz 組態檔案。
     + **使用 Amazon S3 URL** - 指定指向存放在 Amazon S3 中的 CloudFormation 範本或 Terraform tar.gz 組態檔案的 URL。如果您指定 Amazon S3 URL，則必須以 開頭`https://`。
     + **使用外部儲存庫** - 指定您的 GitHub、GitHub Enterprise 或 Bitbucket 程式碼儲存庫。 AWS Service Catalog 可讓您將產品同步至範本檔案。對於 Terraform 產品，範本檔案格式必須是在 Tar 中封存並以 Gzip 壓縮的單一檔案。
     + **使用現有的 CloudFormation 堆疊** - 輸入現有 CloudFormation 堆疊的 ARN。此方法不支援 Terraform Cloud 或外部產品。
   +  **版本名稱** （選用） – 產品版本的名稱 （例如 "v1"、"v2beta")。不可使用空格。
   +  **描述** （選用） – 產品版本的描述，包括此版本與其他版本的差異。
   +  **指引** – 在**產品詳細資訊**頁面上的版本索引標籤中受管。在建立產品工作流程期間建立產品版本時，該版本的指引會設為預設。若要進一步了解指引，請參閱[管理版本](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/managing-versions.html)。

1. **支援詳細資訊**可識別您公司內的組織，並提供支援聯絡窗口。輸入下列資料：
   + **Email contact** (電子郵件聯絡人 [選擇性]) – 回報產品問題的電子郵件地址。
   + **支援連結** （選用） – 網站 URL，使用者可以在此找到支援資訊或檔案票證。URL 必須以 `http://`或 `https://` 開頭。管理員負責維護支援資訊的準確性和存取權。
   + **支援描述** （選用） – 說明您應該如何使用**電子郵件聯絡人**和**支援**連結。

1.  **管理標籤** （選用） – 除了使用標籤來分類資源之外，您也可以使用它們來驗證建立此資源的許可。

1. **建立產品** – 當您完成表單時，請選取**建立產品**。幾秒鐘後，產品會出現在**產品清單**頁面上。可能需要重新整理瀏覽器才能看到產品。

您也可以使用 CodePipeline 建立和設定管道，將產品範本部署到 AWS Service Catalog ，並交付您在來源儲存庫中所做的變更。如需詳細資訊，請參閱[教學課程：建立部署到的管道 AWS Service Catalog](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-S3-servicecatalog.html)。

您可以在 CloudFormation 或 Terraform 範本中定義參數屬性，並在佈建期間強制執行這些規則。這些屬性可以定義值的最小和最大長度、最小和最大值、允許的值，以及規則表達式。如果提供的值不符合參數屬性， 會在佈建期間 AWS Service Catalog 發出警告。若要進一步了解參數屬性，請參閱*CloudFormation 《 使用者指南*》中的[參數](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html)。

## 疑難排解
<a name="productmgmt-cloudresource-troubleshooting"></a>

 您必須具有從 Amazon S3 儲存貯體擷取物件的許可。否則，您可能會在啟動或更新產品時遇到下列錯誤。

```
Error: failed to process product version s3 access denied exception
```

 如果您遇到此訊息，請確定 具有從下列儲存貯體擷取物件的許可：
+  存放佈建成品範本的儲存貯體。
+  以 "***cf-templates-\$1***" 開頭的儲存貯體，以及 AWS Service Catalog 存放佈建成品範本的 。
+  以 "***sc-\$1***" 開頭的內部儲存貯體，以及 AWS Service Catalog 存放中繼資料的位置。您無法從您的帳戶看到此儲存貯體。

 下列範例政策顯示從先前提及的儲存貯體擷取物件所需的最低許可。

```
{
          "Sid": "VisualEditor1",
          "Effect": "Allow",
          "Action": "s3:GetObject*",
          "Resource": [
              "arn:aws:s3:::YOUR_TEMPLATE_BUCKET",
              "arn:aws:s3:::YOUR_TEMPLATE_BUCKET/*",
              "arn:aws:s3:::cf-templates-*",
              "arn:aws:s3:::cf-templates-*/*",
              "arn:aws:s3:::sc-*",
              "arn:aws:s3:::sc-*/*"
          ]
      }
```

# 將產品新增至產品組合
<a name="catalogs_portfolios_adding-products"></a>

 您可以將產品新增至任意數量的產品組合。產品更新時，包含產品的所有產品組合 （包括共用產品組合） 會自動接收新版本。

**將產品從您的目錄新增到產品組合中**

1.  導覽至**產品清單**頁面。

1.  選取產品，然後選擇**動作**。從下拉式選單中，選擇**將產品新增至產品組合**。系統會將您導向至**將*name-of-product*新增至產品組合**頁面。

1.  選擇產品組合，然後選擇**將產品新增至產品組合**。

將 Terraform 產品新增至產品組合時，產品需要啟動限制條件。您必須從帳戶選取 IAM 角色、輸入 IAM 角色 ARN，或輸入角色名稱。如果您指定角色名稱，且帳戶使用啟動限制，則帳戶會針對 IAM 角色使用該名稱。這可讓啟動角色限制與帳戶無關，確保您可以為每個共用帳戶建立較少的資源。如需詳細資訊和說明，請參閱 [步驟 6：將啟動限制新增至 Terraform 產品](getstarted-launchconstraint-Terraform.md) 

 產品組合可以包含許多混合 CloudFormation 和 Terraform 產品類型的產品。

# 更新產品
<a name="productmgmt-update"></a>

 當您更新產品的範本時，您會建立新的產品版本。新的產品版本會自動提供給有權存取包含產品的產品組合的所有使用者。

**注意**  
更新現有產品時，您無法變更產品類型 (CloudFormation 或 Teraform)。例如，如果您更新 CloudFormation 產品，則無法將現有 CloudFormation 範本取代為 Terraform tar.gz 組態檔案。您必須使用新的 CloudFormation 範本檔案更新現有的 CloudFormation 範本檔案。

 目前執行先前產品版本的佈建產品的最終使用者可以將其佈建產品更新為新版本。當產品有新版本可用時，使用者可以使用**佈建產品清單**或佈建產品詳細資訊頁面上的**更新**佈建產品命令。 ****

在建立新的產品版本之前， AWS Service Catalog 建議您在 Terraform 引擎中 CloudFormation 或在 中測試產品更新，以確保它們正常運作。

**建立新的產品版本**

1.  導覽至**產品清單**頁面。

1.  選擇您要更新的產品。系統會將您導向至*產品詳細資訊*頁面。

1.  在*產品詳細資訊*頁面上，展開**版本**索引標籤，然後選擇**建立新版本**。

1.  在**版本詳細資訊**下，執行下列動作：
   + **選擇範本** – 新增範本檔案有四種方式。

     *使用本機範本檔案* - 從本機磁碟機上傳 CloudFormation 範本或 Terraform tar.gz 組態檔案。

     *使用 Amazon S3 URL* - 指定指向存放在 Amazon S3 中的 CloudFormation 範本或 Terraform tar.gz 組態檔案的 URL。如果您指定 Amazon S3 URL，必須以 https：// 開頭。

     *使用外部儲存庫* - 指定您的 GitHub、GitHub Enterprise 或 Bitbucket 程式碼儲存庫。 AWS Service Catalog 可讓您將產品同步至範本檔案。對於 Terraform 產品，範本檔案格式必須是在 Tar 中封存並以 Gzip 壓縮的單一檔案。

     *使用現有的 CloudFormation 堆疊* - 輸入現有 CloudFormation 堆疊的 ARN。此方法不支援 Terraform Cloud 或外部產品。
   + **版本標題** – 產品版本的名稱 （例如 "v1"、"v2beta")。不可使用空格。
   + **描述** （選用） – 產品版本的描述，包括此版本與先前版本的差異。

1. 選擇**建立產品版本**。

 您也可以使用 CodePipeline 建立和設定管道，將產品範本部署到其中 AWS Service Catalog，並在來源儲存庫中交付變更。如需詳細資訊，請參閱[教學課程：建立部署到的管道 AWS Service Catalog](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-S3-servicecatalog.html)。

# 從 GitHub、GitHub Enterprise 或 Bitbucket 將產品同步至範本檔案
<a name="git-synced-sc-products"></a>

AWS Service Catalog 可讓您將產品同步至透過外部儲存庫提供者管理的範本檔案。 AWS Service Catalog 是指具有此類範本連線的產品，做為 *Git 同步*產品。儲存庫選項包括 GitHub、GitHub Enterprise 或 Bitbucket。使用外部儲存庫帳戶授權 AWS 帳戶 之後，您可以建立新的 AWS Service Catalog 產品或更新現有產品，以同步至儲存庫中的範本檔案。當對範本檔案進行變更並在儲存庫中遞交時 （例如，使用 git-push)， AWS Service Catalog 會自動偵測變更並建立新的產品版本 （成品）。

**Topics**
+ [將產品同步至外部範本檔案所需的許可](#required-perms-synced-repo)
+ [建立帳戶連線](#create-synced-product)
+ [檢視 Git 同步產品連線](#view-repo-sync)
+ [更新 Git 同步產品連線](#update-repo-sync)
+ [刪除 Git 同步產品連線](#delete-repo-sync)
+ [從 GitHub、GitHub Enterprise 或 Bitbucket 將 Terraform 產品同步至範本檔案](#git-synced-Terraform)
+ [AWS 區域 支援 Git 同步產品](git-sync-supported-regions.md)

## 將產品同步至外部範本檔案所需的許可
<a name="required-perms-synced-repo"></a>

您可以使用下列 AWS Identity and Access Management (IAM) 政策做為範本，讓 AWS Service Catalog 管理員從外部儲存庫將產品同步至範本檔案。此政策包含 CodeConnections 和 的必要許可 AWS Service Catalog。 AWS Service Catalog 建議您複製以下範本政策，並在 AWS Service Catalog `AWSServiceCatalogAdminFullAccess`啟用儲存庫同步產品時使用 [受管政策](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/security-iam-awsmanpol)。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CodeStarAccess",
            "Effect": "Allow",
            "Action": [
            "codestar-connections:UseConnection",
            "codestar-connections:PassConnection",
            "codestar-connections:CreateConnection",
            "codestar-connections:DeleteConnection",
            "codestar-connections:GetConnection",
            "codestar-connections:ListConnections",
            "codestar-connections:ListInstallationTargets",
            "codestar-connections:GetInstallationUrl",
            "codestar-connections:StartOAuthHandshake",
            "codestar-connections:UpdateConnectionInstallation",
            "codestar-connections:GetIndividualAccessToken"
            ],
            "Resource": "arn:aws:codestar-connections:*:*:connection/*"
        },
        {
        "Sid": "CreateSLR",
        "Effect": "Allow",
        "Action": "iam:CreateServiceLinkedRole",
        "Resource": "arn:aws:iam::*:role/aws-service-role/sync.servicecatalog.amazonaws.com/AWSServiceRoleForServiceCatalogArtifactSync",
        "Condition": {
        "StringLike": {
        "iam:AWSServiceName": "sync.servicecatalog.amazonaws.com"
                }
            }
        }
    ]
}
```

------

## 建立帳戶連線
<a name="create-synced-product"></a>

將範本檔案同步至 AWS Service Catalog 產品之前，您必須建立並授權一次性account-to-account連線。您可以使用此連線來指定包含所需範本檔案的儲存庫詳細資訊。您可以使用 AWS Service Catalog 主控台、CodeConnections 主控台、 AWS Command Line Interface (CLI) 或 CodeConnections APIs建立連線。

建立連線後，您可以使用 AWS Service Catalog 主控台、 AWS Service Catalog API 或 CLI 來建立同步 AWS Service Catalog 產品。 AWS Service Catalog 管理員可以根據儲存庫和分支中的範本檔案建立新的或更新現有 AWS Service Catalog 產品。如果在儲存庫中遞交變更， AWS Service Catalog 會自動偵測變更並建立新的產品版本。先前的產品版本會維持在規定的版本限制，並指派**已棄用**的狀態。

此外，在建立連線之後 AWS Service Catalog ， 會自動建立服務連結角色 (SLR)。此 SLR AWS Service Catalog 允許 偵測遞交至儲存庫的任何範本檔案變更。SLR 也允許 AWS Service Catalog 自動為同步產品建立新的產品版本。如需 SLR 許可和功能的詳細資訊，請參閱 [的服務連結角色 AWS Service Catalog](#required-perms-synced-repo)。

**建立新的 Git 同步產品**

1. 在左側導覽面板中，選擇**產品清單**，然後選擇**建立產品**。

1. 輸入**產品詳細資訊**。

1. 在版本詳細資訊中，選擇**使用 AWS CodeStar 提供者指定程式碼儲存庫**，然後選擇**建立新的 AWS CodeStar 連線**連結。

1. 建立連線後，請重新整理連線清單，然後選取新的連線。指定儲存庫詳細資訊，包括**儲存庫**、**分支**和**範本檔案路徑**。

   如需使用 Terraform 組態檔案的資訊，請參閱 [從 GitHub、GitHub Enterprise 或 Bitbucket 將 Terraform 產品同步至範本檔案](#git-synced-Terraform)。

   1. （建立新的 AWS Service Catalog 產品資源時為選用） 在**支援詳細資訊**區段中，新增產品的中繼資料。

   1. （建立新的 AWS Service Catalog 產品資源時選用） 在**標籤**區段中，選擇**新增標籤**，然後輸入**金鑰**和**值**對。

1. 選擇**建立新產品**。

**建立多個 Git 同步產品**

1. 在 AWS Service Catalog 主控台左側導覽面板中，選擇**產品清單**，然後選擇**建立多個 git 受管產品**。

1. 輸入**常見產品詳細資訊**。

1. 在外部儲存庫詳細資訊中，選取**AWS CodeStar 連線**，然後指定**儲存庫**和**分支**。

1. 在新增產品窗格中，輸入**範本檔案路徑**和**產品名稱**。選擇**新增項目**，並視需要繼續新增產品。

1. 新增所有必要的產品後，請選擇**大量建立產品**。

**將現有 AWS Service Catalog 產品連線至外部儲存庫**

1. 在 AWS Service Catalog 主控台左側導覽面板中，選擇**產品清單**，然後選擇**將產品連線至外部儲存庫**。

1. 在選取產品頁面上，選取您要連線至外部儲存庫的產品，然後選擇**下一步**。

1. 在指定來源詳細資訊頁面上，選取現有的 AWS CodeStar 連線，然後指定**儲存庫**、**分支**和**範本檔案路徑**。

1. 選擇**下一步**。

1. 在檢閱和提交頁面上，驗證連線詳細資訊，然後選擇**將產品連線至外部儲存庫**。

## 檢視 Git 同步產品連線
<a name="view-repo-sync"></a>

您可以使用 AWS Service Catalog 主控台、API 或 AWS CLI 來檢視儲存庫連線詳細資訊。對於連結至範本檔案 AWS Service Catalog 的產品，您可以從上次同步**狀態**擷取有關儲存庫連線以及範本上次與產品同步的資訊。

**注意**  
您可以在產品層級檢視儲存庫資訊和**上次同步狀態**。使用者必須在 CodeConnections APIs 中擁有 IAM 許可，才能檢視儲存庫詳細資訊。如需這些 IAM [許可所需政策的詳細資訊，請參閱將 AWS Service Catalog 產品同步至範本檔案](#required-perms-synced-repo)的必要許可。

**使用 檢視連線和儲存庫詳細資訊 AWS 管理主控台**

1. 在左側導覽面板中，選擇**產品清單**。

1. 從清單中選擇產品。

1. 在**產品**頁面上，導覽至**產品來源詳細資訊**區段。

1. 若要檢視產品版本的來源修訂 ID，請選擇**建立的最後一個版本**連結。**版本詳細資訊**區段會顯示來源修訂版 ID。

**使用 檢視連線和儲存庫詳細資訊 AWS CLI**

從 中 AWS CLI，執行下列命令：

`$ aws servicecatalog describe-product-as-admin`

`$ aws servicecatalog describe-provisioning-artifact`

`$ aws servicecatalog search-product-as-admin`

`$ aws servicecatalog list-provisioning-artifacts`

## 更新 Git 同步產品連線
<a name="update-repo-sync"></a>

您可以使用 AWS Service Catalog 主控台、 AWS Service Catalog API 或 更新現有的帳戶連線和 Git 同步產品 AWS CLI。

若要了解如何將現有 AWS Service Catalog 產品連線至範本檔案，請參閱[建立新的 Git 同步產品連線](#create-synced-product)。

**將現有產品更新為 Git 同步產品**

1. 在左側導覽面板中，選擇**產品清單**，然後選擇下列其中一個選項：
   + 若要更新**單一產品**，請選取產品，導覽至**產品來源詳細資訊**區段，然後選擇**編輯詳細資訊**。
   + 若要更新**多個產品**，請選擇**將產品連接到外部儲存庫**，選取最多十個產品，然後選擇**下一步**。

1. 在**產品來源詳細資訊**區段中，執行下列更新：
   + 指定連線。
   + 指定儲存庫。
   + 指定分支。
   + 為範本檔案命名。

1. 選擇**儲存變更**。

**注意**  
對於尚未連接到外部儲存庫的產品，您可以在選取產品後，使用在產品資訊頁面頂端的提醒中顯示的**連接到外部儲存庫**選項。

您也可以使用 AWS Service Catalog 主控台或 AWS CLI 來 
+ 將現有 AWS Service Catalog 產品連接到外部儲存庫中的範本檔案
+ 更新產品中繼資料，包括產品名稱、描述和標籤。
+ 重新設定 （更新同步以使用不同的儲存庫來源） 先前連線 AWS Service Catalog 產品的連線。

**使用 AWS Service Catalog 主控台更新連線和儲存庫詳細資訊**

1. 在 AWS Service Catalog 主控台左側導覽面板中，選擇**產品清單**，然後選取目前連線至外部儲存庫的產品。

1. 在**產品來源詳細資訊**區段中，選擇**編輯產品來源**。

1. 在**產品來源詳細資訊**區段中，指定新的所需儲存庫。

1. 選擇**儲存變更**。

**使用 更新連線和儲存庫詳細資訊 AWS CLI**

從 AWS CLI 執行 `$ aws servicecatalog update-product`和 `$ aws servicecatalog update-provisioning-artifact`命令。

## 刪除 Git 同步產品連線
<a name="delete-repo-sync"></a>

您可以使用 AWS Service Catalog 主控台、CodeConnections API 或 刪除 AWS Service Catalog 產品和範本檔案之間的連線 AWS CLI。當您中斷產品與範本檔案的連線時，同步 AWS Service Catalog 產品會切換到定期受管產品。中斷連線產品後，如果範本檔案已變更並遞交至先前連線的儲存庫，則*不會*反映變更。若要將 AWS Service Catalog 產品重新連線至外部儲存庫中的範本檔案，請參閱[更新連線和同步 AWS Service Catalog 產品]()。

**使用 AWS Service Catalog 主控台中斷連接 Git 同步產品**

1. 在 中 AWS 管理主控台，從左側導覽面板中選擇**產品清單**。

1. 從清單中選擇產品。

1. 在**產品**頁面上，導覽至**產品來源詳細資訊**區段。

1. 選擇**中斷連線**。

1. 確認動作，然後選擇**中斷連線**。

**使用 中斷連接 Git 同步產品 AWS CLI**

從 AWS CLI執行 `$ aws servicecatalog update-product`命令。在`ConnectionParameters`輸入中，移除指定的連線。

**使用 CodeConnections API 或 刪除連線 AWS CLI**

在 CodeConnections API 或 中 AWS CLI，執行 `$ aws codestar-connections delete-connection`命令。

## 從 GitHub、GitHub Enterprise 或 Bitbucket 將 Terraform 產品同步至範本檔案
<a name="git-synced-Terraform"></a>

使用 Terraform 組態檔案建立 Git 同步產品時，檔案路徑只接受 tar.gz 格式。檔案路徑中不接受 Terraform 資料夾格式。

# AWS 區域 支援 Git 同步產品
<a name="git-sync-supported-regions"></a>

AWS Service Catalog 支援 中的 Git 同步 produtc， AWS 區域 如下表所示。


****  

| AWS 區域 名稱 | AWS 區域 身分 | 支援 Git 同步產品 | 
| --- | --- | --- | 
| 美國東部 (維吉尼亞北部) | us-east-1 | 是 | 
| 美國東部 (俄亥俄) | us-east-2 | 是 | 
| 美國西部 (加利佛尼亞北部) | us-west-1 | 是 | 
| 美國西部 (奧勒岡) | us-west-2 | 是 | 
| Africa (Cape Town) | af-south-1 | 否 | 
| 亞太地區 (香港) | ap-east-1 | 否 | 
| 亞太地區 (雅加達) | ap-southeast-3 | 否 | 
| 亞太區域 (孟買) | ap-south-1 | 是 | 
| 亞太區域 (大阪) | ap-northeast-3 | 否 | 
| 亞太區域 (首爾) | ap-northeast-2 | 是 | 
| 亞太區域 (新加坡) | ap-southeast-1 | 是 | 
| 亞太區域 (雪梨) | ap-southeast-2 | 是 | 
| 亞太區域 (東京) | ap-northeast-1 | 是 | 
| 加拿大 (中部) | ca-central-1 | 是 | 
| 歐洲 (法蘭克福) | eu-central-1 | 是 | 
| 歐洲 (愛爾蘭) | eu-west-1 | 是 | 
| 歐洲 (倫敦) | eu-west-2 | 是 | 
| 歐洲 (米蘭) | eu-south-1 | 否 | 
| Europe (Paris) | eu-west-3 | 是 | 
| Europe (Stockholm) | eu-north-1 | 是 | 
| Middle East (Bahrain) | me-south-1 | 否 | 
| 南美洲 (聖保羅) | sa-east-1 | 是 | 
| AWS GovCloud （美國東部） | us-gov-east-1 | 否 | 
| AWS GovCloud （美國西部） | us-gov-west-1 | 否 | 

# 刪除產品
<a name="productmgmt-delete"></a>

當您刪除產品時， 會從包含產品的每個產品組合 AWS Service Catalog 中移除所有產品版本。

AWS Service Catalog 可讓您使用 AWS Service Catalog 主控台或 刪除產品 AWS CLI。若要成功刪除產品，您必須先取消與產品相關聯的所有資源的關聯。產品資源關聯的範例包括產品組合關聯、預算、TagOptions 和服務動作。

**重要**  
 產品刪除後就無法復原。

**使用 AWS Service Catalog 主控台刪除產品**

1.  導覽至**產品組合**頁面，然後選取包含您要刪除之產品的產品組合。

1.  選取您要刪除的產品，然後選擇產品窗格右上角的**刪除**。

1. 對於*沒有相關聯資源*的產品，請在文字方塊中輸入 **Delete** 以確認您要刪除的產品，然後選擇 **Delete**。

   對於*具有相關聯資源*的產品，請繼續步驟 4。

1. 在**刪除產品**視窗中，檢閱**關聯**表格，其中會顯示所有產品關聯的資源。當您刪除產品時， AWS Service Catalog 嘗試取消這些資源的關聯。

1. 確認您想要刪除產品，並在文字方塊中輸入 **Delete** 來移除所有相關聯的資源。

1. 選擇**取消關聯並刪除**。

如果 AWS Service Catalog 無法取消所有產品資源的關聯，則不會刪除該產品。**刪除產品**視窗會顯示失敗的取消關聯數目，以及每個失敗的描述。如需在刪除產品時解決失敗資源取消關聯的詳細資訊，請參閱*在以下刪除產品時解決失敗的資源取消關聯*。

**Topics**
+ [使用 刪除產品 AWS CLI](product-delete-cli.md)
+ [解決刪除產品時失敗的資源取消關聯](product-delete-exception.md)

# 使用 刪除產品 AWS CLI
<a name="product-delete-cli"></a>

AWS Service Catalog 可讓您使用 [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)(AWS CLI) 從您的產品組合中刪除產品。是一種 AWS CLI 開放原始碼工具，可讓您使用命令列 Shell 中的 命令與 AWS 服務互動。 AWS Service Catalog 強制刪除函數需要[AWS CLI 別名](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-alias.html)，這是您可以在 中建立的捷徑 AWS CLI ，以縮短您經常使用的命令或指令碼。

## 先決條件
<a name="product-delete-cli-requirements"></a>
+ 安裝及設定 AWS CLI。如需詳細資訊，請參閱[安裝或更新最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)和[組態基本概念](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)。使用最低 AWS CLI 版本 1.11.24 或 2.0.0。
+ 刪除產品 CLI 別名需要與 bash 相容的終端機和 JQ 命令列 JSON 處理器。如需安裝命令列 JSON 處理器的詳細資訊，請參閱[下載 jq](https://stedolan.github.io/jq/download/)。
+ 建立 AWS CLI 別名以批次處理 `Disassociation` API 呼叫，讓您能夠在單一命令中刪除產品。

若要成功刪除產品，您必須先取消與產品相關聯的所有資源的關聯。產品資源關聯的範例包括產品組合關聯、預算、標籤選項和服務動作。使用 CLI 刪除產品時，CLI `force-delete-product` 別名可讓您呼叫 `Disassociate` API 來取消關聯任何會阻止 `DeleteProduct` API 的資源。這可避免個別取消關聯的個別呼叫。

**注意**  
以下程序中顯示的檔案路徑可能會根據您用來執行這些動作的作業系統而有所不同。

## 建立 AWS CLI 別名以刪除 AWS Service Catalog 產品
<a name="product-delete-cli-alias"></a>

使用 AWS CLI 刪除 AWS Service Catalog 產品時，CLI `force-delete-product` 別名可讓您呼叫 `Disassociate` API，以取消任何會阻止`DeleteProduct`呼叫的資源的關聯。

**在 AWS CLI 組態資料夾中建立 `alias` 檔案**

1. 在 AWS CLI 主控台中，導覽至 configuraiton 資料夾。根據預設，組態資料夾路徑`~/.aws/`位於 Linux 和 macOS `%USERPROFILE%\.aws\`或 Windows。

1. `cli` 使用檔案導覽或在您偏好的終端機中輸入下列命令來建立名為 的子資料夾：

   ```
                $ mkdir -p ~/.aws/cli
   ```

   產生的`cli`資料夾預設路徑位於 `~/.aws/cli/` Linux 和 MacOS `%USERPROFILE%\.aws\cli`或 Windows。

1. 在新`cli`資料夾中，建立名為 `alias` 且沒有副檔名的文字檔案。您可以使用`alias`檔案導覽或在偏好的終端機中輸入下列命令來建立檔案：

   ```
                 $ touch ~/.aws/cli/alias
   ```

1. 在第一行`[toplevel]`輸入 。

1. 儲存檔案。

接下來，您可以透過手動將別名指令碼貼入 `alias` 檔案，或使用終端機視窗中的命令，將 force-delete-product 別名新增至 檔案。

**手動將 force-delete-product 別名新增至您的`alias`檔案**

1. 在 AWS CLI 主控台中，導覽至您的 AWS CLI 組態資料夾並開啟 `alias` 檔案。

1. 將下列程式碼別名輸入 檔案，位於 `[toplevel]`行下方：

   ```
                [command servicecatalog]
             	 force-delete-product =
             	   !f() {
             	     if [ "$#" -ne 1 ]; then
             	         echo "Illegal number of parameters"
             	         exit 1
             	     fi
             	 
             	     if [[ "$1" != prod-* ]]; then
             	        echo "Please provide a valid product id."
             	        exit 1
             	     fi
             	 
             	     productId=$1
             	     describeProductAsAdminResponse=$(aws servicecatalog describe-product-as-admin --id $productId)
             	     listPortfoliosForProductResponse=$(aws servicecatalog list-portfolios-for-product --product-id $productId)
             	 
             	     tagOptions=$(echo "$describeProductAsAdminResponse" | jq -r '.TagOptions[].Id')
             	     budgetName=$(echo "$describeProductAsAdminResponse" | jq -r '.Budgets[].BudgetName')
             	     portfolios=$(echo "$listPortfoliosForProductResponse" | jq -r '.PortfolioDetails[].Id')
             	     provisioningArtifacts=$(echo "$describeProductAsAdminResponse" | jq -r '.ProvisioningArtifactSummaries[].Id')
             	     provisioningArtifactServiceActionAssociations=()
             	 
             	     for provisioningArtifactId in $provisioningArtifacts; do
             	       listServiceActionsForProvisioningArtifactResponse=$(aws servicecatalog list-service-actions-for-provisioning-artifact --product-id $productId --provisioning-artifact-id $provisioningArtifactId)
             	       serviceActions=$(echo "$listServiceActionsForProvisioningArtifactResponse" | jq -r '[.ServiceActionSummaries[].Id] | join(",")')
             	       if [[ -n "$serviceActions" ]]; then
             	         provisioningArtifactServiceActionAssociations+=("${provisioningArtifactId}:${serviceActions}")
             	       fi
             	     done
             	 
             	     echo "Before deleting a product, the following associated resources must be disassociated. These resources will not be deleted. This action may take some time, depending on the number of resources being disassociated."
             	 
             	     echo "Portfolios:"
             	     for portfolioId in $portfolios; do
             	       echo "\t${portfolioId}"
             	     done
             	 
             	     echo "Budgets:"
             	     if [[ -n "$budgetName" ]]; then
             	       echo "\t${budgetName}"
             	     fi
             	 
             	     echo "Tag Options:"
             	     for tagOptionId in $tagOptions; do
             	       echo "\t${tagOptionId}"
             	     done
             	 
             	     echo "Service Actions on Provisioning Artifact:"
             	     for association in "${provisioningArtifactServiceActionAssociations[@]}"; do
             	       echo "\t${association}"
             	     done
             	 
             	     read -p "Are you sure you want to delete ${productId}? y,n "
             	     if [[ ! $REPLY =~ ^[Yy]$ ]]; then
             	        exit
             	     fi
             	 
             	     for portfolioId in $portfolios; do
             	       echo "Disassociating ${portfolioId}"
             	       aws servicecatalog disassociate-product-from-portfolio --product-id $productId --portfolio-id $portfolioId
             	     done
             	 
             	     if [[ -n "$budgetName" ]]; then
             	       echo "Disassociating ${budgetName}"
             	       aws servicecatalog disassociate-budget-from-resource --budget-name "$budgetName" --resource-id $productId
             	     fi
             	 
             	     for tagOptionId in $tagOptions; do
             	       echo "Disassociating ${tagOptionId}"
             	       aws servicecatalog disassociate-tag-option-from-resource --tag-option-id $tagOptionId --resource-id $productId
             	     done
             	 
             	     for association in "${provisioningArtifactServiceActionAssociations[@]}"; do
             	       associationPair=(${association//:/ })
             	       provisioningArtifactId=${associationPair[0]}
             	       serviceActionsList=${associationPair[1]}
             	       serviceActionIds=${serviceActionsList//,/ }
             	       for serviceActionId in $serviceActionIds; do
             	         echo "Disassociating ${serviceActionId} from ${provisioningArtifactId}"
             	         aws servicecatalog disassociate-service-action-from-provisioning-artifact --product-id $productId --provisioning-artifact-id $provisioningArtifactId --service-action-id $serviceActionId
             	       done
             	     done
             	 
             	     echo "Deleting product ${productId}"
             	     aws servicecatalog delete-product --id $productId
             	 
             	   }; f
   ```

1. 儲存檔案。

**使用終端機視窗將 force-delete-product 別名新增至您的`alias`檔案**

1. 開啟終端機視窗並執行下列命令

   `$ cat >> ~/.aws/cli/alias`

1. 將別名指令碼貼到終端機視窗，然後按 *CTRL\$1D* 結束`cat`命令。

**呼叫 force-delete-product 別名**

1. 在終端機視窗中，執行下列命令來呼叫刪除產品別名

   `$ aws servicecatalog force-delete-product {product-id} `

   以下範例顯示`force-delete-product`別名命令及其產生的回應 

   ```
                 $ aws servicecatalog force-delete-product prod-123
   ```

   ```
                 Before deleting a product, the following associated resources must be disassociated. These resources will not be deleted. This action may take some time, depending on the number of resources being disassociated.
                 Portfolios:
                   port-123
                 Budgets:
                     budgetName
                 Tag Options:
                     tag-123
                 Service Actions on Provisioning Artifact:
                     pa-123:act-123
                 Are you sure you want to delete prod-123? y,n
   ```

1. 輸入 `y` 以確認您想要刪除產品。

成功刪除產品後，終端機視窗會顯示下列結果

```
          Disassociating port-123
          Disassociating budgetName
          Disassociating tag-123
          Disassociating act-123 from pa-123
          Deleting product prod-123
```

## 其他資源
<a name="product-delete-cli-resources"></a>

如需使用 AWS CLI別名和刪除 AWS Service Catalog 產品的詳細資訊，請檢閱下列資源：
+ 《 *AWS Command Line Interface (CLI)* [AWS CLI 使用者指南》中的建立和使用別名](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-alias.html)。
+ [AWS CLI 別名儲存庫](https://github.com/awslabs/awscli-aliases) git 儲存庫。
+ [刪除 AWS Service Catalog 產品](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-delete.html)。
+ [AWS re：Invent 2016：YouTube 上的有效 AWS CLI 使用者](https://youtu.be/Xc1dHtWa9-Q?t=1593)。 *YouTube* 

# 解決刪除產品時失敗的資源取消關聯
<a name="product-delete-exception"></a>

如果您之前因資源取消關聯例外狀況而嘗試[刪除產品](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-delete.html)失敗，請檢閱下列例外狀況清單及其解決方法。

**注意**  
如果您在收到失敗的資源取消關聯訊息之前關閉**刪除產品**視窗，您可以遵循繼續*執行刪除產品*區段中的步驟一到三，以再次開啟視窗。

**解決失敗的資源取消關聯**

在**刪除產品**視窗中，檢閱關聯資料表**狀態**欄。識別失敗的資源取消關聯例外狀況和建議的解決方案：


****  

| 狀態例外類型 | 原因 | Resolution | 
| --- | --- | --- | 
| 產品產品-\$1\$1\$1\$1 | AWS Service Catalog 無法刪除產品，因為產品仍有關聯的 TagOptions、預算、至少一個ProvisioningArtifact有關聯的動作、產品仍指派給產品組合、產品有使用者，或產品有限制條件。 | 嘗試再次刪除產品。 | 
| 使用者： username 未獲授權執行： | 嘗試刪除產品的使用者沒有取消產品資源關聯的必要許可。 | AWS Service Catalog 建議聯絡您的 帳戶管理員，以取得有關取消關聯您目前沒有取消關聯的許可產品資源的詳細資訊。 | 

# 管理版本
<a name="managing-versions"></a>

 您可以在建立產品時指派產品版本，而且可以隨時更新產品版本。

 版本具有 CloudFormation 範本、標題、描述、狀態和指引。

## 版本狀態
<a name="version-status"></a>

 版本可具有下列三種狀態的其中一種：
+  **Active (作用中)** - 版本清單中會顯示作用中版本，且可讓使用者啟動。
+  **Inactive (非作用中)** - 版本清單中會隱藏非作用中版本。從此版本啟動的現有佈建產品不會受到影響。
+  **已刪除** - 從版本清單中移除已刪除的版本。刪除版本無法復原。

## 版本指導
<a name="version-guidance"></a>

 您可以設定版本指導，將產品版本相關資訊提供給最終使用者。版本指導只會影響作用中產品版本。

 版本指導有下列兩種選項：
+  **無** - 根據預設，產品版本沒有任何指引。最終使用者可以使用該版本來更新和啟動佈建產品。
+  **已棄用** - 使用者無法使用已棄用的產品版本啟動新的佈建產品。如果先前啟動的 p 佈建產品使用現已棄用版本，使用者只能使用現有版本或新版本更新該佈建產品。

## 更新版本
<a name="updating-versions"></a>

 您可以在建立產品時指派產品版本，而且也可以隨時更新版本。如需有關建立產品的詳細資訊，請參閱[建立產品](productmgmt-cloudresource.md)。

**更新產品版本**

1.  在 AWS Service Catalog 主控台中，選擇**產品**。

1.  從產品清單中選擇您要更新版本的產品。

1.  在 **Product details (產品詳細資料)** 頁面上，選擇 **Versions (版本)** 標籤，然後選擇您要更新的版本。

1.  在 **Version details (版本詳細資料)** 頁面上，編輯產品版本，然後選擇 **Save changes (儲存變更)**。