

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

# 云控制 API 资源操作
<a name="resource-operations"></a>

使用 AWS 云端控制 API to do 或其他命令动词构造对中的资源进行创建、读取、更新、移除和列出 (-L) 操作。 AWS 账户

**Topics**
+ [先决条件](#resource-operations-prerequisites)
+ [指定凭证](#resource-operations-permissions)
+ [确保请求是唯一的](#resource-operations-idempotency)
+ [注意事项](#resource-operations-considerations)
+ [创建资源](resource-operations-create.md)
+ [更新资源](resource-operations-update.md)
+ [删除资源](resource-operations-delete.md)
+ [发现资源](resource-operations-list.md)
+ [读取资源](resource-operations-read.md)
+ [管理资源请求](resource-operations-manage-requests.md)
+ [用以下方法识别资源 AWS 云端控制 API](resource-identifier.md)

## 将资源与 Cloud Control API 结合使用的先决条件
<a name="resource-operations-prerequisites"></a>

要使用 Cloud Control API 预置特定资源，该资源类型必须支持 Cloud Control API，并且在 AWS 账户中可供使用。
+ **可供您使用的资源 AWS 账户**

  若要在账户中可供使用，必须激活公共资源类型并注册私有资源类型。支持的 AWS 资源类型为公共资源类型，并且始终处于激活状态。有关更多信息，请参阅 [使用云控制 API 资源类型](resource-types.md)。
+ **支持 Cloud Control API 的资源**

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

  第三方资源类型（公共资源和私有资源）都支持 Cloud Control API。

  有关如何确定特定资源类型是否支持 Cloud Control API 的详细信息，请参阅[确定资源类型是否支持 Cloud Control API](resource-types.md#resource-types-determine-support)。

有关使用资源类型的信息，请参阅[使用云控制 API 资源类型](resource-types.md)。

## 指定 Cloud Control API 的凭证
<a name="resource-operations-permissions"></a>

作为代表您对 AWS 资源执行操作的一部分，Cloud Control API 必须调用实际配置这些资源的底层 AWS 服务。为此，Cloud Control API 需要必要的凭证才能访问这些服务。您可以通过两种方式使 Cloud Control API 能够获得这些凭证：
+ **用户凭证**

  默认情况下，Cloud Control API 使用您的 AWS 用户凭证创建临时会话，并使用该会话对下游 AWS 服务进行任何必要的调用。此会话最长持续 24 小时，在此之后，Cloud Control API 对 AWS 的任何剩余调用都将失败。
+ **服务角色凭证**

  您还可以指定您发出资源请求时 Cloud Control API 在资源操作期间承担的服务角色。除了其他优势外，指定服务角色还可以让 Cloud Control API 在长达 36 小时的时间内调用底层 AWS 服务。

  要使用服务角色，请指定资源操作请求的 `RoleArn` 参数。

  由于 Cloud Control API 操作是服务的一部分，因此您指定的服务角色由该 CloudFormation 服务（`cloudformation.amazonaws.com`）代替。 CloudFormation 有关更多信息，请参阅《AWS CloudFormation 用户指南》**中的 [CloudFormation 服务角色](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html)。

该资源类型的架构的 `handlers` 部分中定义了每个资源处理程序所需的权限。有关查看资源架构的更多信息，请参阅[查看资源类型架构](resource-types.md#resource-types-schemas)。`handlers` 部分在[资源类型定义架构](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html#schema-properties-handlers)中定义。

## 确保使用 Cloud Control API 时资源操作请求是唯一的
<a name="resource-operations-idempotency"></a>

作为最佳实践，我们强烈建议您使用创建、删除和更新资源操作请求指定幂等性令牌。最好指定一个对于每个请求都是唯一的令牌，例如通用唯一标识符 (UUID)。这样的令牌可确保在必须重试请求的情况下可以消除请求的歧义。

`create-resource`、`delete-resource` 和 `update-resource` 操作都带有一个可以设置为幂等性令牌的 `client-token` 参数。

## 使用 Cloud Control API 时的注意事项
<a name="resource-operations-considerations"></a>

我们建议您在使用 Cloud Control API 执行资源操作时考虑以下服务行为：
+ Cloud Control API 单独并独立于任何其他资源操作执行每个资源操作。
+ 向 Cloud Control API 发出的单个资源操作请求实际上可能包含多个对预置资源的底层服务的调用。因此，资源请求在仅部分完成时可能会失败，从而导致只将某些请求的更改应用于资源。
+ 无论资源操作何时失败，Cloud Control API 都不会将资源回滚到其之前的状态。
+ 使用 Cloud Control API 对给定资源执行资源操作时，您一次只能执行一项操作。但是，您仍然可以通过预置资源的底层服务直接操作资源。我们强烈建议不要使用这种方法，因为此方法可能会导致不可预测的行为。

# 使用创建资源 AWS 云端控制 API
<a name="resource-operations-create"></a>

使用 `create-resource` 命令创建资源。

## 编写资源的所需状态
<a name="resource-operations-create-desiredstate"></a>

要让 Cloud Control API 创建资源，您必须指定要创建的资源的*所需状态*。所需状态由您要指定的资源属性及其所需值的列表组成。

资源的属性在其资源类型架构中定义。这包括属性是否为必需属性、有效值和其他属性约束。有关查看资源属性定义的更多信息，请参阅[查看资源类型架构](resource-types.md#resource-types-schemas)。

您指定的所需状态必须对资源类型架构有效。

例如，假设您要创建一个具有特定名称且保留期为 90 天的[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html)资源。首先，您必须编写 JSON 文本格式的所需资源状态。

```
{
  "LogGroupName": "CloudApiLogGroup",
  "RetentionInDays": 90
}
```

调用 `create-resource` 命令时，您可以以字符串形式直接内联传递所需状态，或者，对于更复杂的所需状态定义，可以指定文件位置。

以下 AWS Command Line Interface (AWS CLI) 命令创建资源，并在`desired-state`参数中指定资源`RetentionInDays`属性设置为`90`，此外还指定日志组名称。

```
$ aws cloudcontrol create-resource --type-name AWS::Logs::LogGroup \
    --desired-state '{"LogGroupName": "CloudApiLogGroup", "RetentionInDays":90}'
```

## 跟踪创建资源请求的进度
<a name="resource-operations-create-progress"></a>

该 `create-resource` 命令将返回一个 `ProgressEvent` 对象，您可以使用该对象监控资源创建请求的当前状态。有关更多信息，请参阅 [跟踪资源操作请求的进度](resource-operations-manage-requests.md#resource-operations-manage-requests-track)。

# 使用更新资源 AWS 云端控制 API
<a name="resource-operations-update"></a>

使用 `update-resource` 命令可以对现有资源进行更新。这包括最初未使用 Cloud Control API 预置的资源。

**重要**  
我们强烈建议不要使用 Cloud Control API 来更新其他服务当前管理的资源。这样做可能会导致意外结果。例如，不要使用 Cloud Control API 来更新当前属于 CloudFormation 堆栈的资源。

要更新现有资源，您必须指定资源的标识符。有关确定资源标识符的更多信息，请参阅[使用资源的主标识符](resource-identifier.md#resource-identifier-using)。

更新资源需要更改资源属性值。资源的属性在其资源类型架构中定义。这包括属性是否为必需属性、有效值和其他属性约束。有关查看资源属性定义的更多信息，请参阅[查看资源类型架构](resource-types.md#resource-types-schemas)。

## 编写补丁文档
<a name="resource-operations-update-patch"></a>

要更新资源，首先要将更新定义为 JSON 补丁文档中包含的*补丁操作*列表。此补丁文档必须符合 [https://datatracker.ietf.org/doc/html/rfc6902](https://datatracker.ietf.org/doc/html/rfc6902) 补丁中定义的标准。

每个补丁操作都会定义对特定资源属性的单一更新。需要具有以下属性：
+ `op`：操作类型。Cloud Control API 支持 RFC 6902 中定义的所有操作：`add`、`remove`、`replace`、`move`、`copy` 和 `test`。
+ `path`：相对于资源架构的 `properties` 部分的资源属性路径。

根据操作的不同，可能需要其他属性。有关具体信息，请参阅 RFC 6902。

使用 `update-resource` 命令时，可以将补丁文档内联指定为字符串，也可以指定文件位置。

以下示例将名为的[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html)资源的保留策略更新`CloudControlApiLogGroup`为 90 天。

```
$ aws cloudcontrol update-resource --type-name AWS::Logs::LogGroup \
    --identifier CloudControlApiLogGroup \
    --patch-document '[{"op":"replace","path":"RetentionInDays","value":90}]'
```

## Cloud Control API 如何更新资源
<a name="resource-operations-update-how"></a>

为了更新资源，Cloud Control API 会首先检索资源的当前状态，然后通过以下两步过程更新资源：
+ Cloud Control API 将更新请求中指定的补丁操作与资源的当前状态相结合，以在资源更新后生成所需的资源状态。系统按操作在补丁文档中出现的顺序依次应用操作。序列中的每个操作都应用于资源的当前状态；生成的资源状态将成为下一个操作的目标。

  此时，如果出现以下情况，整个更新请求将失败：
  + 请求中包含的补丁操作无效。
  + `op` 类型 `test` 的补丁操作失败。

  在这种情况下，整个更新请求将会失败，Cloud Control API 不会对资源进行任何更新。
+ 然后，Cloud Control API 会调用该资源类型的更新处理程序来更新资源。

  无论更新处理程序何时失败，*Cloud Control API 都不会将资源回滚到其之前的状态。*

例如，考虑以下为更新[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html)资源而定义的补丁文档。该文档包含两个补丁操作。第一个操作是 `test` 类型的操作，此操作检查资源的保留策略是否设置为 3653 天。如果是这样的话，资源将通过测试，Cloud Control API 会继续执行下一个操作。此操作会将当前的保留策略值替换为 180 天。如果资源的保留策略设置为 3653 天以外的其他值，则第一个 `test` 操作将失败，Cloud Control API 将永远不会运行第二个 `replace` 操作。

```
[
  {
    "op": "test",
    "path": "/RetentionInDays",
    "value":3653
  },
  {
    "op": "replace",
    "path": "/RetentionInDays",
    "value":180
  }
]
```

## 跟踪更新资源请求的进度
<a name="resource-operations-update-progress"></a>

该 `update-resource` 命令将返回一个 `ProgressEvent` 对象，您可以使用该对象跟踪资源操作请求的当前状态。有关更多信息，请参阅 [跟踪资源操作请求的进度](resource-operations-manage-requests.md#resource-operations-manage-requests-track)。

# 使用删除资源 AWS 云端控制 API
<a name="resource-operations-delete"></a>

使用 `delete-resource` 命令删除现有资源。无论最初是否使用 Cloud Control API 预置了资源，您都可以删除该资源。

**重要**  
我们强烈建议不要使用 Cloud Control API 来删除其他服务当前管理的资源。这样做可能会导致意外结果。例如，不要使用 Cloud Control API 来删除当前属于 CloudFormation 堆栈的资源。

要更新现有资源，您必须指定资源的标识符。有关查找资源标识符的更多信息，请参阅[使用资源的主标识符](resource-identifier.md#resource-identifier-using)。

以下示例删除名称为的[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html)资源`CloudControlApiLogGroup`。

```
$ aws cloudcontrol delete-resource \
    --type-name AWS::Logs::LogGroup --identifier CloudControlApiLogGroup
```

## 跟踪删除资源请求的进度
<a name="resource-operations-delete-progress"></a>

该 `delete-resource` 命令将返回一个 `ProgressEvent` 对象，您可以使用该对象跟踪资源操作请求的当前状态。有关更多信息，请参阅 [跟踪资源操作请求的进度](resource-operations-manage-requests.md#resource-operations-manage-requests-track)。

# 通过以下方式发现资源 AWS 云端控制 API
<a name="resource-operations-list"></a>

使用 `list-resources` 命令可以发现 AWS 账户 和 AWS 区域中当前预置的资源。这包括指定资源类型的所有资源，无论它们是通过 Cloud Control API、直接通过底层服务还是其他机制（例如作为 AWS CloudFormation 堆栈的一部分）进行配置。

为每种资源返回的信息包括：
+ 此资源的主标识符。
+ 或者，它可以包括*部分或全部*资源的属性，并详细说明资源的当前状态。有关更多信息，请参阅 [查看资源类型架构](resource-types.md#resource-types-schemas)。

以下示例将返回 `AWS::Logs::LogGroup` 资源的列表。

```
$ aws cloudcontrol list-resources --type-name AWS::Logs::LogGroup
```

Cloud Control API 会返回账户中指定资源类型的资源列表。例如，`list-resources` 会返回账户中所有 `AWS::Logs::LogGroup` 资源的主标识符和资源属性，而与这些资源是否由 Cloud Control API 预置无关。返回的信息类似于以下内容，具体取决于账户中的资源。

```
{
  "TypeName": "AWS::Logs::LogGroup",
  "ResourceDescriptions":
  [
    {
      "Identifier": "CloudControlExample", 
      "Properties": '{"RetentionInDays":180, "LogGroupName": "CloudControlExample", "Arn": "arn:aws:logs:us-west-2:123456789012:log-group:CloudControlExample:*"}'
    },
    {
      "Identifier": "AnotherLogGroupResourceExample", 
      "Properties": '{"RetentionInDays":90, "LogGroupName": "AnotherLogGroupResourceExample", "Arn": "arn:aws:logs:us-west-2:123456789012:log-group:AnotherLogGroupResourceExample:*"}'
    }
  ]
}
```

以下示例将请求一系列 `AWS::Kinesis::Stream` 资源。

```
$ aws cloudcontrol list-resources --type-name AWS::Kinesis::Stream
```

对于 Kinesis 流，Cloud Control API 会返回每个流的主标识符以及资源属性的*子集*。在本例中，只是一个 `Name` 属性。然后，您可以将流的主标识符与 `get-resource` 结合使用，以请求资源的完整当前状态。

```
{
    "TypeName": "AWS::Kinesis::Stream",
    "ResourceDescriptions": [
        {
            "Identifier": "MyKinesisStream",
            "Properties": '{"Name": "MyKinesisStream"}'
        },
        {
            "Identifier": "AnotherStream",
            "Properties": '{"Name": "AnotherStream"}'
        }
    ]
}
```

## 需要其他信息的资源
<a name="resource-operations-list-containers"></a>

某些资源要求您提供有关要在请求中列出的资源的更多信息。在这些情况下，必须使用 `ResourceModel` 参数指定这些属性。

下表列出了这些资源，以及您在列出请求期间在 `ResourceModel` 参数中指定的属性。


| 资源 | 必需属性 | 
| --- | --- | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationversion.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationversion.html)  |  `RestApiId`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html)  |  `RestApiId`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudformation-resourceversion.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudformation-resourceversion.html)  |  `TypeArn` 或 `TypeName`  | 
|   [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-integration.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-integration.html)   | `DomainName` | 
|   [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-objecttype.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-objecttype.html)   | `DomainName` | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-transitgatewaymulticastgroupmember.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-transitgatewaymulticastgroupmember.html)  |  `TransitGatewayMulticastDomainId`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-transitgatewaymulticastgroupsource.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-transitgatewaymulticastgroupsource.html)  |  `TransitGatewayMulticastDomainId`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskset.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskset.html) | `Cluster`、`Service` 和 `ID` | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-addon.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-addon.html)  |  `ClusterName`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-fargateprofile.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-fargateprofile.html)  |  `ClusterName`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html)  |  `LoadBalancerArn`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html)  |  `ListenerArn`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversion.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversion.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloudcontrolapi/latest/userguide/resource-operations-list.html)  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversionmetadata.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversionmetadata.html)  |  `SchemaVersionId`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotsitewise-accesspolicy.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotsitewise-accesspolicy.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloudcontrolapi/latest/userguide/resource-operations-list.html)  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotsitewise-dashboard.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotsitewise-dashboard.html)  |  `ProjectId`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotsitewise-project.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotsitewise-project.html)  |  `PortalId`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-datasource.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-datasource.html)  |  `IndexId`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-faq.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-faq.html)  |  `IndexId`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html)  |  `FlowArn`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html)  |  `FlowArn`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html)  |  `FlowArn`  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowvpcinterface.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowvpcinterface.html)  |  `FlowArn`  | 
|   [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediapackage-asset.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediapackage-asset.html)   | `PackagingGroupId` | 
|   [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediapackage-packagingconfiguration.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediapackage-packagingconfiguration.html)   | `PackagingGroupId` | 
|   [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-loggingconfiguration.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-loggingconfiguration.html)   |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloudcontrolapi/latest/userguide/resource-operations-list.html)  | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-analysis.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-analysis.html)  | `AwsAccountId` | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-dashboard.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-dashboard.html)  | `AwsAccountId` | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-dataset.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-dataset.html)  | `AwsAccountId` | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-datasource.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-datasource.html)  | `AwsAccountId` | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-template.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-template.html)  | `AwsAccountId` | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-theme.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-theme.html)  | `AwsAccountId` | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html)  | `DBProxyName` | 
|   [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3outposts-accesspoint.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3outposts-accesspoint.html)   | `Bucket` | 
|   [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3outposts-bucket.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3outposts-bucket.html)   | `OutpostId` | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-assignment.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-assignment.html)  | `InstanceArn`、`PermissionSetArn`、`PrincipalId`、`PrincipalType`、`TargetId` 和 `TargetType` | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-instanceaccesscontrolattributeconfiguration.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-instanceaccesscontrolattributeconfiguration.html)  | `InstanceArn` | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-permissionset.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-permissionset.html)  | `InstanceArn` 和 `PermissionSetArn` | 
|  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html)  | `Scope` | 

# 使用阅读资源 AWS 云端控制 API
<a name="resource-operations-read"></a>

使用资源的主标识符，您可以调用 `get-resource` 命令来检索有关该资源的详细信息。有关检索资源的主标识符的信息，请参阅[用以下方法识别资源 AWS 云端控制 API](resource-identifier.md)。

`get-resource` 返回的信息包括资源的架构，该架构详细说明了资源的当前状态，包括属性值、支持的事件和必要的权限。有关更多信息，请参阅 [查看资源类型架构](resource-types.md#resource-types-schemas)。

以下示例返回名称为 `LogGroupResourceExample` 的 `AWS::Logs::LogGroup` 资源的当前状态。对于 `AWS::Logs::LogGroup` 资源，日志组的名称是其主标识符。

```
$ aws cloudcontrol get-resource --type-name AWS::Logs::LogGroup --identifier LogGroupResourceExample
```

# 使用管理资源操作请求 AWS 云端控制 API
<a name="resource-operations-manage-requests"></a>

由于资源操作是异步操作，因此诸如 `create-resource` 和 `update-resource` 之类的资源请求会返回一个 `ProgressEvent` 对象，其中包含有关资源创建或更新请求的当前状态的信息。

例如，资源创建请求最初可能会返回以下 `ProgressEvent` 对象。

```
{
    "ProgressEvent": {
        "EventTime": "2021-08-09T18:17:15.219Z",
        "TypeName": "AWS::Logs::LogGroup",
        "OperationStatus": "IN_PROGRESS",
        "Operation": "CREATE",
        "Identifier": "LogGroupResourceExample",
        "RequestToken": "5f40c577-3534-4b20-9599-0b0123456789"
    }
}
```

`ProgressEvent` 对象中返回的信息包括一个请求令牌，您以后可以使用该令牌跟踪或取消资源操作请求。

**注意**  
资源操作请求将在七天后过期。

## 列出活动资源操作请求
<a name="resource-operations-manage-requests-list"></a>

使用`list-resource-requests`命令返回 AWS 账户 和的活动资源操作请求列表 AWS 区域。您可以按请求类型和状态来筛选此列表。

资源操作请求将在七天后过期。

以下示例将返回活动资源操作请求，但它会筛选出仍在进行的任何资源创建请求。

```
$ aws cloudcontrol list-resource-requests --resource-request-status-filter \
    Operations=CREATE,OperationStatuses=IN_PROGRESS
```

针对每项资源操作返回的信息均包括一个请求令牌，您以后可以使用该令牌跟踪或取消资源操作请求。

```
{
    "ResourceRequestStatusSummaries": [
        {
            "EventTime": "2021-08-09T18:17:16.591Z",
            "TypeName": "AWS::Logs::LogGroup",
            "OperationStatus": "SUCCESS",
            "Operation": "CREATE",
            "Identifier": "LogGroupResourceExample",
            "RequestToken": "5f40c577-3534-4b20-9599-0b0123456789"
        }
    ]
}
```

## 跟踪资源操作请求的进度
<a name="resource-operations-manage-requests-track"></a>

使用 `get-resource-request-status` 命令可以跟踪资源操作请求的进度。此命令获取初始资源操作请求期间生成的 `ProgressEvent` 对象中包含的请求令牌。（您还可以使用 `list-resource-requests` 命令检索资源操作请求的请求令牌。） 该 `get-resource-request-status` 命令将返回一个更新的 `ProgressEvent` 对象，其中包含有关当前请求状态的信息。

请参阅以下示例。

```
$ aws cloudcontrol get-resource-request-status \
    --request-token 5f40c577-3534-4b20-9599-0b0123456789
```



## 取消资源操作请求
<a name="resource-operations-manage-requests-cancel"></a>

使用 `cancel-resource-request` 命令可取消当前正在进行的资源操作请求。由于您一次只能对给定资源执行一项操作，因此在某些情况下，您可能需要取消当前的资源操作以使该资源可用，以便可以对其执行另一项操作。

取消资源请求并不能保证 Cloud Control API 可以立即取消所有资源操作。相反，Cloud Control API 将停止进一步调用资源事件处理程序。向 Cloud Control API 发出的单个资源操作请求实际上可能包含多个对预置资源的底层服务的调用。因此，取消资源操作请求可能会使请求部分完成，从而导致只对资源应用部分请求的更改。Cloud Control API 不会将资源回滚到其之前的状态。

只能取消状态为 `PENDING` 或 `IN_PROGRESS` 的资源操作请求。

**注意**  
虽然调用 `CancelResourceRequest` 会取消 Cloud Control API 执行的操作，但不会终止任何可能已经在下游服务中启动的异步操作。

# 用以下方法识别资源 AWS 云端控制 API
<a name="resource-identifier"></a>

每种资源类型都有一个定义为其*主标识符*的属性。对于给定和中该类型的每种资源，此属性的值必须是唯一 AWS 账户 的 AWS 区域。例如，许多资源类型包括一个 `Name` 属性，此属性对于该类型的每个资源都必须是唯一的。在某些情况下，主标识符被定义为多个属性的组合，这些属性共同构成一个唯一标识符。通过将此主标识符与资源类型结合使用，可以确切指定要对哪个资源执行资源操作，例如 `update-resource` 或 `delete-resource`。

此外，某些资源类型定义了*辅助标识符*，这些标识符也可用于唯一标识该类型的资源。

要确定哪个资源属性（或属性组合）是资源类型的主标识符，请参阅资源类型架构的 `primaryIdentifier` 属性。该架构还包括定义的辅助标识符。有关更多信息，请参阅 [查看资源类型架构](resource-types.md#resource-types-schemas)。

## 获取资源的主标识符
<a name="resource-identifier-getting"></a>

您可以使用 Cloud Control API 命令查找特定资源的标识符*值*。以下每条命令都返回一个包含指定资源的主标识符的 `ProgressEvent` 对象：
+ 

  ```
  cancel-resource-request
  ```
+ 

  ```
  create-resource
  ```
+ 

  ```
  get-resource-request-status
  ```
+ 

  ```
  list-resource-requests
  ```

## 使用资源的主标识符
<a name="resource-identifier-using"></a>

使用 Cloud Control API 命令时，您可以指定在资源架构中为资源类型定义的主标识符或任何辅助标识符。您只能指定一个标识符。主标识符可以指定为字符串或 JSON；辅助标识符必须指定为 JSON。

对于复合主标识符（即由串在一起的多个资源属性组成的标识符），要将主标识符指定为字符串，请按主标识符定义中*指定属性值的顺序*列出属性值，这些列出的属性值用 `|` 分隔。

例如， 资源的主标识符定义为：

`"primaryIdentifier": [ "/properties/DatabaseName", "/properties/TableName" ]`

因此，要将 资源的主标识符指定为字符串，可使用以下格式。

`DatabaseName|TableName`

例如，假定一个数据库的数据库名称为 `MyDatabase`，表名为 `MyTable`，则可以指定 `MyDatabase|MyTable`。

对于指定为 JSON 的复合标识符，不需要考虑属性顺序，如以下示例所示。

```
{
  "TableName": "MyTable",
  "DatabaseName": "MyDatabase"
}
```

有关资源标识符的更多信息，请参阅《*扩展开发的CloudFormation 命令行界面用户移动*》中的 p [rimary](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html#schema-properties-primaryidentifier) identifier。