

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

# 使用云控制 API 资源类型
<a name="resource-types"></a>

要将资源类型与一起使用 AWS 云端控制 API，则该资源类型必须存在并已激活 AWS 账户。支持的 AWS 资源类型为公共资源类型，且始终处于激活状态。您可以选择激活第三方出版商提供的公共资源类型，也可以通过 AWS CloudFormation 扩展注册表激活。

*扩展注册表是一项*功能 AWS CloudFormation ，其中包含有关您的账户中可用资源类型的详细信息。这些类型可能包括第三方发布的资源类型，以及 AWS发布的资源类型。您可以使用注册表管理账户中的资源类型，包括：
+ 查看可用且激活的资源类型。
+ 注册私有资源类型以在账户中使用。
+ 激活公共第三方资源类型。
+ 管理资源类型*版本*，包括在账户中设置资源类型的默认版本。
+ 设置资源类型的账户级别配置属性（如果有）。

您还可以使用 CloudFormation 注册表查看资源类型的架构，其中包含有关如何通过 Cloud Control API 使用该资源的重要信息，例如属性定义和权限要求。有关更多信息，请参阅 [查看资源类型架构](#resource-types-schemas)。

除了 CloudFormation API 之外，还可以通过 CloudFormation 控制台访问注册表。

**注意**  
目前并非 CloudFormation 注册表中列出的所有资源类型都支持 Cloud Control API。有关更多信息，请参阅 [确定资源类型是否支持 Cloud Control API](#resource-types-determine-support)。

有关资源类型管理选项的更多信息，请参阅[《*AWS CloudFormation 用户指南》*中的使用 CloudFormation 注册表](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry.html)。

## 使用 CloudFormation API 管理资源类型
<a name="resource-types-manage-APIs"></a>

除了通过 CloudFormation 控制台访问扩展注册表外，您还可以使用 CloudFormation API 中包含的操作来识别和管理账户中的资源类型。下表列出了可用于发现、激活和配置账户中的可用资源类型的 API 操作。


| CloudFormation API 操作 | AWS CLI 命令 | 说明 | 
| --- | --- | --- | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeType.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeType.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-type.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-type.html)  | 返回有关资源类型的详细信息。 | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListTypes.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListTypes.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-types.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-types.html)  | 返回有关资源类型的摘要信息。 | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/activate-type.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/activate-type.html)  | 激活公共第三方资源类型，使其在账户可用。 | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeactivateType.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeactivateType.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/deactivate-type.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/deactivate-type.html)  | 在账户中停用公共第三方资源类型。 | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListTypeVersions.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListTypeVersions.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-type-versions.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-type-versions.html)  | 返回有关资源类型版本的摘要信息。 | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeDefaultVersion.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeDefaultVersion.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-default-version.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-default-version.html)  | 指定资源类型的默认版本。 | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_BatchDescribeTypeConfigurations.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_BatchDescribeTypeConfigurations.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/batch-describe-type-configurations.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/batch-describe-type-configurations.html)  | 返回指定资源类型的配置数据。 | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-configuration.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-configuration.html)  | 指定账户中资源类型的配置数据。 | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/register-type.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/register-type.html)  | 激活私有第三方资源，使其在账户可用。 | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeregisterType.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeregisterType.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/deregister-type.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/deregister-type.html)  | 注销私有第三方资源，使其在账户中无法使用。 | 

## 确定资源类型是否支持 Cloud Control API
<a name="resource-types-determine-support"></a>

默认情况下，在 CloudFormation 注册表中发布的资源类型会自动支持 Cloud Control API 资源操作。除公共第三方资源类型外，这还包括私有资源类型。但是， AWS CloudFormation 注册表还包含归类为*不可配置*的旧资源类型。这些资源类型目前不支持 Cloud Control API，您无法在资源操作中使用它们。

有关当前支持 Cloud Control API 资源操作的 AWS 公共资源类型的列表，请参阅[支持 Cloud Control API 的资源类型](supported-resources.md)。

您还可以使用 AWS Command Line Interface (AWS CLI) 生成支持的资源类型列表或确定特定资源类型是否支持 Cloud Control API。

**使用生成支持的资源列表 AWS CLI**
+ 结合下列参数使用 `list-types` 命令：
  + `type`：指定 `RESOURCE` 可仅选择资源类型。
  + `visibility`：指定 `PUBLIC` 可选择公共资源，或者指定 `PRIVATE` 可选择私有资源。
  + `provisioning-type`：指定 `FULLY_MUTABLE` 或 `IMMUTABLE` 可仅选择那些可预置的资源类型。

  例如，以下命令从 CloudFormation 注册表中选择前 100 个完全可变的公共资源类型。

  ```
  $ aws cloudformation list-types \
      --type RESOURCE --visibility PUBLIC \
      --provisioning-type FULLY_MUTABLE --max-results 100
  ```

**使用以下方法确定特定资源类型是否支持云控制 API AWS CLI**
+ 使用 `describe-type` 命令可返回资源类型的详细信息。

  具有 `FULLY_MUTABLE` 或 `IMMUTABLE` 的 `ProvisioningType` 的资源类型支持 Cloud Control API 资源操作。

  以下示例返回 `AWS::Logs::LogGroup` 资源类型的详细信息。

  ```
  $ aws cloudformation describe-type \
      --type RESOURCE --type-name AWS::Logs::LogGroup
  ```

## 查看资源类型架构
<a name="resource-types-schemas"></a>

在资源创建和更新操作期间，您可以指定要设置的资源属性及其值。资源的属性在其*资源类型架构*中定义。这包括数据类型、属性是否为必需属性、有效值和其他属性约束。

您可以使用 CloudFormation 控制台或查看资源类型的架构 AWS CLI。此外，《AWS CloudFormation 用户指南》**还包含 AWS 发布的每种可用资源类型的参考主题。有关资源类型属性的详细信息以及使用示例，请参阅[AWS 资源和属性类型参考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)部分中的相应主题。

**注意**  
并非《AWS CloudFormation 用户指南》**中列出的所有资源类型都可与 Cloud Control API 结合使用。要确定资源类型是否可用，请参阅[支持 Cloud Control API 的资源类型](supported-resources.md)。

有关资源类型定义架构（定义如何创作资源类型架构）的详细信息，请参阅《*扩展开发 CloudFormation CLI 用户指南*》中的[资源类型定义架构](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html)。

有关如何查看现有资源的当前状态（包括其当前属性值）的信息，请参见[使用阅读资源 AWS 云端控制 API](resource-operations-read.md)。<a name="resource-operations-create-view-schema-console"></a>

## 使用 CloudFormation 控制台查看资源类型架构
<a name="resource-operations-create-view-schema-console"></a>

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/cloudformat](https://console.aws.amazon.com/cloudformation/) ion 上打开 CloudFormation 控制台。

1. 在**CloudFormation**导航窗格的**注册表**下，选择**已激活的扩展**。

1. 在**资源类型**选项卡上，选择要查看其资源架构的资源类型。

   CloudFormation 显示资源类型详细信息页面。**架构**选项卡上显示了资源架构。<a name="resource-operations-create-view-schema-cli"></a>

## 使用查看资源类型架构 AWS CLI
<a name="resource-operations-create-view-schema-cli"></a>
+ 运行 `[describe-type](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-type.html)`。

  在返回的输出中，`Schema` 结构包含资源类型架构。

  例如，以下命令会返回有关 `AWS::Logs::LogGroup` 资源类型的信息。

  ```
  $ aws cloudformation describe-type \
      --type RESOURCE --type-name AWS::Logs::LogGroup
  ```

### 查看资源属性的属性
<a name="resource-types-schemas-properties"></a>

资源类型属性在资源类型架构的 `properties` 部分中定义。这包括属性数据类型、属性是否为必需属性，以及任何约束，例如允许的值或所需模式。

此外，在资源级别设置的某些属性可以控制何时或是否可以指定属性。这包括：
+ 定义为 `required` 的属性必须在资源创建期间以所需状态来指定。
+ 定义为 `createOnlyProperties` 的属性可以由用户进行设置，但只能在资源创建期间设置。
+ 用户无法设置定义为 `readOnlyProperties` 的属性。
+ 定义为 `writeOnlyProperties` 的属性可以由用户在创建或更新资源时指定，但在读取或列出请求期间无法返回。

### 查看支持的资源操作
<a name="resource-types-schemas-events"></a>

您可以通过参考资源类型架构的 `handlers` 部分来确定资源类型支持哪些操作。如果资源类型支持某项操作，则此操作会在 `handlers` 部分中列出，并且包含一个列出处理程序所需权限的 `permissions` 元素。

例如，以下是 `AWS::Logs::LogGroup` 资源类型的资源类型架构的 `handlers` 部分。此部分表明该资源类型支持所有五种资源操作，并列出了每个处理程序所需的权限。

```
  "handlers": {
    "create": {
      "permissions": [
        "logs:DescribeLogGroups",
        "logs:CreateLogGroup",
        "logs:PutRetentionPolicy"
      ]
    },
    "read": {
      "permissions": [
        "logs:DescribeLogGroups"
      ]
    },
    "update": {
      "permissions": [
        "logs:DescribeLogGroups",
        "logs:AssociateKmsKey",
        "logs:DisassociateKmsKey",
        "logs:PutRetentionPolicy",
        "logs:DeleteRetentionPolicy"
      ]
    },
    "delete": {
      "permissions": [
        "logs:DescribeLogGroups",
        "logs:DeleteLogGroup"
      ]
    },
    "list": {
      "permissions": [
        "logs:DescribeLogGroups"
      ]
    }
  }
```