

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

# 管理预配置产品
<a name="provisioned-products"></a>

AWS Service Catalog 提供了用于管理预配置产品的接口。您可以基于访问级别查看、更新和终止您的目录中的所有预配置产品。有关示例流程，请参阅下面几节。

**Topics**
+ [以管理员的身份管理预配置产品](provisioned-products-admin.md)
+ [更改预配置产品的所有者](change-pp-owner.md)
+ [更新预配置产品的模板](pp-templates.md)
+ [教程：确定用户资源分配](provisioned-products-tutorial.md)
+ [管理 Terraform 开源产品状态错误](provisioned-products-lifecycle.md)
+ [管理 Terraform 开源产品状态文件](getstarted-terraform-engine-state.md)

# 以管理员的身份管理预配置产品
<a name="provisioned-products-admin"></a>

 要管理账户的所有预配置产品，您需要具备 `AWSServiceCatalogAdminFullAccess` 或与预配置产品写入访问权限的同等 IAM 权限。有关更多信息，请参阅 [Identity and Access Management AWS Service Catalog](controlling_access.md)。

**提示**  
 对于静态预配置产品链接，在配置预配置产品之前，您必须在产品构件模板中引用预配置产品输出。有关更多信息及示例，请参阅以下内容：  
 [AWS::ServiceCatalog::CloudFormationProvisionedProduct](https://amazonaws.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html#aws-resource-servicecatalog-cloudformationprovisionedproduct--examples)（在 *AWS CloudFormation 用户指南*中）。
 [DescribeProvisioningParameters (ProvisioningArtifactOutputKeys)](https://amazonaws.com/servicecatalog/latest/dg/API_DescribeProvisioningParameters.html#API_DescribeProvisioningParameters_ResponseElements) 在《*AWS Service Catalog 开发者指南》*中。

**查看和管理所有预配置产品**

1. 打开 AWS Service Catalog 控制台，网址为[https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)。

   如果您已经登录到 AWS Service Catalog 控制台，请选择 S **ervice Catalog**，然后选择**最终用户**。

1. 如有必要，向下滚动到**预配置产品**部分。

1. 在**预配置产品**部分中，选择**查看：**列表，然后选择要查看的访问级别：**用户**、**角色**或**账户**。此操作会显示目录中的所有预配置产品。

1. 选择一个预配置产品进行查看、更新或终止。有关此方面信息的更多信息，请参阅[查看预配置产品信息](https://docs.aws.amazon.com/servicecatalog/latest/userguide/enduser-viewstack.html)。

# 更改预配置产品的所有者
<a name="change-pp-owner"></a>

 您可以随时更改预配置产品的所有者。您需要知道要设置为新所有者的用户或角色的 ARN。

 默认情况下，此功能可供使用 `AWSServiceCatalogAdminFullAccess` 托管策略的管理员使用。您可以在 AWS Identity and Access Management (IAM) 中向最终用户授予`servicecatalog:UpdateProvisionedProductProperties`权限，从而为他们启用该功能。

**更改预配置产品的所有者**

1.  在 AWS Service Catalog 控制台中，选择**预配置产品列表**。

1. 找到要更新的预配置产品，然后选择其旁边的三个点并选择**更改预配置产品所有者**。您还可以在已配置产品的详情页面的**操作**菜单中找到**更改所有者**选项。

1.  在对话框中，输入要设置为新所有者的用户或角色的 ARN。ARN 以 `arn:` 开头并包含其他信息，这些信息之间用冒号或斜杠分隔，例如 `arn:aws:iam::123456789012:user/NewOwner`。

1.  选择**提交**。更新所有者后，您将看到一条成功消息。

## 另请参阅
<a name="change-pp-owner-see-also"></a>
+  [UpdateProvisionedProductProperties](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_UpdateProvisionedProductProperties.html) 

# 更新预配置产品的模板
<a name="pp-templates"></a>

您可以将预配置产品的当前模板更改为其他模板。例如，如果您在 Service Catalog 中有一个 EC2 产品，则可以更新该 EC2 产品，保留相同的预配置产品 ID，但将模板更改为 S3 存储桶。

**注意**  
已预配置的 Terraform 开源或 Terraform Cloud 产品不支持更新模板。如果您想为现有 Terraform 产品使用不同的模板，则必须删除该产品，然后使用希望使用的模板创建新产品。

**更新预配置产品模板**

1. 从左侧的导航菜单中选择**预配置产品**。

1. 在**预配置产品**中，选择预配置产品，然后选择**操作**、**更新**。

   请注意，您也可以在**预配置产品详细信息**页面中选择**操作**、**更新**。

1. （可选）在**产品详细信息**中，选择**更改产品**。

   在**更改产品**中，请注意以下警告：

   *更改产品会将此预配置产品更新为不同的产品模板。这可能会终止资源并创建新资源。*

   您可以将预配置产品更新至同一产品中的其他版本。

1. （可选）在**产品**中，选择要更新至其他模板的产品。然后选择**更改**。

   在**产品详细信息**中，请注意以下警告：

   *[Product name] 将从 [current template name] 更新为 [new template name]。但是，您的预配置产品的名称 [Provisioned Product name] 不会更改。*

   您可以将预配置产品更新至同一产品中的其他版本。

1. 在**产品版本**中，选择所需的产品版本。

1. 在**参数**中，选择适当的参数。

1. 选择**更新**。

   在**预配置产品详细信息**中，您可以看到更新的详细信息。预配置的产品名称不会更改，但更新后预配置产品具有不同的模板。

# 教程：确定用户资源分配
<a name="provisioned-products-tutorial"></a>

您可以使用 AWS Service Catalog 控制台识别配置了产品和与该产品关联的资源的用户。本教程将帮助您将该示例转换为您自己的特定预配置产品。

要管理账户的所有预配置产品，您需要具备 `AWSServiceCatalogAdminFullAccess` 或对预配置产品的同等写入访问权限。有关更多信息，请参阅*《AWS Service Catalog 用户指南》*中的[身份和访问权限管理](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/controlling_access.html)。

**确定预配置产品的用户和关联的资源**

1. 打开 [https://console.aws.amazon.com/servic](https://console.aws.amazon.com/servicecatalog) eCatalog。

1. 从左侧的导航菜单中选择**预配置产品**。

1. 在**访问筛选条件**下拉菜单中，选择**账户**。  
![\[Provisioned products interface with search bar, access filter dropdown, and table columns.\]](http://docs.aws.amazon.com/zh_cn/servicecatalog/latest/adminguide/images/access-filter-dropdown.png)

1. 在**账户**视图中，选择并打开预配置产品以显示其详细信息。  
![\[Provisioned products table showing one S3 bucket product with its creation date and status.\]](http://docs.aws.amazon.com/zh_cn/servicecatalog/latest/adminguide/images/account-view.png)

   您可以查看预配置产品详细信息。

     
![\[Provisioned product details page showing status, ID, name, creation date, and other information.\]](http://docs.aws.amazon.com/zh_cn/servicecatalog/latest/adminguide/images/details-pp.png)

1. 向下滚动到**事件**部分。请注意 `Provisioned product ID` 和 `CloudformationStackARN` 的值。  
![\[Events section showing UPDATE_PROVISIONED_PRODUCT with CloudFormationStackARN details.\]](http://docs.aws.amazon.com/zh_cn/servicecatalog/latest/adminguide/images/events-container.png)

1. 使用预配置的产品 ID 来识别与本次发布相对应的 AWS CloudTrail 记录并识别请求用户（通常，您在联合身份验证期间输入电子邮件地址）。在本示例中，请求用户为“steve”。

   ```
   {
     "eventVersion":"1.03","userIdentity":
     {
       "type":"AssumedRole",
       "principalId":"[id]:steve",
       "arn":"arn:aws:sts::[account number]:assumed-role/SC-usertest/steve",
       "accountId":[account number],
       "accessKeyId":[access key],
       "sessionContext":
       {
         "attributes":
         {
           "mfaAuthenticated":[boolean],
           "creationDate":[timestamp]
         },
         "sessionIssuer":
         {
           "type":"Role",
           "principalId":"AROAJEXAMPLELH3QXY",
           "arn":"arn:aws:iam::[account number]:role/[name]",
           "accountId":[account number],
           "userName":[username]
         }
       }
     },
     "eventTime":"2016-08-17T19:20:58Z","eventSource":"servicecatalog.amazonaws.com",
     "eventName":"ProvisionProduct",
     "awsRegion":"us-west-2",
     "sourceIPAddress":[ip address],
     "userAgent":"Coral/Netty",
     "requestParameters":
     {
       "provisioningArtifactId":[id],
       "productId":[id],
       "provisioningParameters":[Shows all the parameters that the end user entered],
       "provisionToken":[token],
       "pathId":[id],
       "provisionedProductName":[name],
       "tags":[],
       "notificationArns":[]
     },
     "responseElements":
     {
       "recordDetail":
       {
         "provisioningArtifactId":[id],
         "status":"IN_PROGRESS",
         "recordId":[id],
         "createdTime":"Aug 17, 2016 7:20:58 PM",
         "recordTags":[],
         "recordType":"PROVISION_PRODUCT",
         "provisionedProductType":"CFN_STACK",
         "pathId":[id],
         "productId":[id],
         "provisionedProductName":"testSCproduct",
         "recordErrors":[],
         "provisionedProductId":[id]
       }
     },
     "requestID":[id],
     "eventID":[id],
     "eventType":"AwsApiCall",
     "recipientAccountId":[account number]
   }
   ```

1. 使用该`CloudformationStackARN`值来识别 CloudFormation 事件，以查找有关已创建资源的信息。您也可以使用 CloudFormation API 来获取此信息。有关更多信息，请参阅 [AWS CloudFormation API 参考](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/)。

您可以使用 AWS Service Catalog API 或执行步骤 1 到 4 AWS CLI。有关更多信息，请参阅[AWS Service Catalog 《开发人员指南》](https://docs.aws.amazon.com/servicecatalog/latest/dg/what-is-service-catalog.html)中的[AWS Service Catalog 命令行参考](https://docs.aws.amazon.com/cli/latest/reference/servicecatalog/)。

# 管理 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`状态，迫使您终止。

# 管理 Terraform 开源产品状态文件
<a name="getstarted-terraform-engine-state"></a>

每个 Terraform 开源预配置产品都有一个**单状态文件**。预配置产品与其状态文件之间存在一一对应关系。文件存储在名为 `sc-terraform-engine-state-${AWS::AccountId}-${AWS::Region}` 的 Amazon S3 存储桶中。状态文件保存在 `AccountID` 或 `ProvisionedProductID` 对象键下。

状态文件的访问权限仅限于`GetStateFile` AWS Lambda 和 Amazon EC2 启动模板。 AWS Service Catalog 管理员**无法**直接访问 Amazon S3 中的状态文件。管理员必须使用 Amazon EC2 访问这些文件。默认情况下， AWS Service Catalog 管理员可以看到状态文件列表，但无法读取或写入文件内容。只有 Terraform 预配置引擎可以读取或写入文件内容。