开始使用 Cloud Control API - 云控制 API

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

开始使用 Cloud Control API

使用此简短教程开始使用执行资源操作 AWS Cloud Control API。您将学习关于使用 Cloud Control API 创建、读取、更新、删除和列出资源的基础知识。

步骤 1:创建资源

在本教程中,请创建 AWS::Logs::LogGroup 类型的资源。将该日志组命名为 CloudControlExample,并将其保留策略设置为 90 天。

  1. 在 AWS Command Line Interface (AWS CLI) 中,使用以下参数运行create-resource命令:

    • type-name 指定为 AWS::Logs::LogGroup

    • desired-state 指定为一个字符串,其中包含设置所需属性的 JSON:

      {"LogGroupName": "CloudControlExample", "RetentionInDays": 90}

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

    Cloud Control API 会返回一个包含有关资源操作请求状态的信息的 ProgressEvent 对象。

    { "ProgressEvent": { "EventTime": "2021-08-26T22:07:23.347Z", "TypeName": "AWS::Logs::LogGroup", "OperationStatus": "IN_PROGRESS", "Operation": "CREATE", "Identifier": "CloudControlExample", "RequestToken": "758f4a4e-fef4-491a-9b07-00123456789" } }
  2. 要跟踪资源操作请求的状态,请运行带以下参数的 get-resource-request-status 命令:

    • request-token 参数指定为 ProgressEvent 对象中返回的 RequestToken 属性值。

    $ aws cloudcontrol get-resource-request-status --request-token 758f4a4e-fef4-491a-9b07-00123456789

    Cloud Control API 会返回一个包含有关资源操作请求状态的信息的 ProgressEvent 对象。当 Cloud Control API 成功创建资源后,它会将 OperationStatus 值设置为 SUCCESS

    { "ProgressEvent": { "EventTime": "2021-08-26T22:29:23.326Z", "TypeName": "AWS::Logs::LogGroup", "OperationStatus": "SUCCESS", "Operation": "CREATE", "Identifier": "CloudControlExample", "RequestToken": "758f4a4e-fef4-491a-9b07-00123456789" } }

步骤 2:读取(描述)资源

接下来,读取您刚创建的资源的当前状态。

  • 在中 AWS CLI,使用以下参数运行get-resource命令:

    • identifier 指定为创建资源时 ProgressEvent 对象中返回的 identifier 属性值。在本例中,它是 CloudControlExample,即您为日志组指定的名称。

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

    Cloud Control API 返回有关资源当前状态的详细信息,包括其属性和设置的模型。在本例中,这包括资源创建时由 Amazon Ev CloudWatch ents 生成的属性。Arn

    { "TypeName": "AWS::Logs::LogGroup", "ResourceDescription": { "Identifier": "CloudControlExample", "ResourceModel": '{"RetentionInDays": 90, "LogGroupName": "CloudControlExample", "Arn": "arn:aws:logs:us-west-2:090123456789:log-group:CloudControlExample:*"}' } }

步骤 3:更新资源

接下来,更新日志组,将保留策略天数翻一番,使其达到 180 天。

  1. 在中 AWS CLI,使用以下参数运行update-resource命令:

    • type-name 指定为 AWS::Logs::LogGroup

    • identifier 指定为创建资源时 ProgressEvent 对象中返回的 identifier 属性值。在本例中,它是 CloudControlExample,即您为日志组指定的名称。

    • patch-document 参数指定为字符串,其中包含的 JSON 表示将保留策略更新为 180 天的替换操作。

      [{"op": "replace", "path": "RetentionInDays", "value": 180}]

      有关撰写补丁文档的详细信息,请参阅编写补丁文档

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

    Cloud Control API 会返回一个包含有关资源操作请求状态的信息的 ProgressEvent 对象。

    { "ProgressEvent": { "EventTime": "2021-08-26T22:29:22.547Z", "ResourceModel": '{"RetentionInDays":180,"LogGroupName":"CloudControlExample"}', "TypeName": "AWS::Logs::LogGroup", "OperationStatus": "IN_PROGRESS", "Operation": "UPDATE", "Identifier": "CloudControlExample", "RequestToken": "2026055d-f21c-4b50-bd40-111111111111" } }
  2. 要跟踪资源操作请求的状态,请运行带以下参数的 get-resource-request-status 命令:

    • request-token 参数指定为 ProgressEvent 对象中返回的 RequestToken 属性值。

    $ aws cloudcontrol get-resource-request-status --request-token 2026055d-f21c-4b50-bd40-123456789012

    Cloud Control API 会返回一个包含有关资源操作请求状态的信息的 ProgressEvent 对象。当 Cloud Control API 成功更新资源后,它会将 OperationStatus 值设置为 SUCCESS

    { "ProgressEvent": { "EventTime": "2021-08-26T22:29:23.326Z", "TypeName": "AWS::Logs::LogGroup", "OperationStatus": "SUCCESS", "Operation": "UPDATE", "Identifier": "CloudControlExample", "RequestToken": "2026055d-f21c-4b50-bd40-123456789012" } }

步骤 4:列出特定类型的所有资源

接下来,使用 Cloud Control API 发现 AWS 账户中的资源。

  • 在中 AWS CLI,使用以下参数运行list-resources命令:

    • type-name 指定为 AWS::Logs::LogGroup

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

    Cloud Control API 会按主标识符返回账户中 AWS::Logs::LogGroup 资源的列表。这包括 CloudControlExample、您在本教程中创建的资源,以及账户中已存在的任何其他日志组。此外,对于 AWS::Logs::LogGroup 资源,list-resources 返回的信息包括每个资源的属性。

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

第 5 步:删除资源

最后,从本教程中删除要清理的日志组。

  1. 在中 AWS CLI,使用以下参数运行delete-resource命令:

    • type-name 指定为 AWS::Logs::LogGroup

    • identifier 指定为创建资源时 ProgressEvent 对象中返回的 identifier 属性值。在本例中,它是 CloudControlExample,即您为日志组指定的名称。

    $ aws cloudcontrol delete-resource --type-name AWS::Logs::LogGroup --identifier CloudControlExample

    Cloud Control API 会返回一个包含有关资源操作请求状态的信息的 ProgressEvent 对象。

    { "ProgressEvent": { "EventTime": "2021-08-26T22:50:20.037Z", "TypeName": "AWS::Logs::LogGroup", "OperationStatus": "IN_PROGRESS", "Operation": "DELETE", "Identifier": "CloudControlExample", "RequestToken": "bb0ed9cd-84f9-44c2-b638-000000000000" } }
  2. 要跟踪资源操作请求的状态,请运行带以下参数的 get-resource-request-status 命令:

    • request-token 参数指定为 ProgressEvent 对象中返回的 RequestToken 属性值。

    $ aws cloudcontrol get-resource-request-status --request-token 2026055d-f21c-4b50-bd40-111111111111

    Cloud Control API 会返回一个包含有关资源操作请求状态的信息的 ProgressEvent 对象。当 Cloud Control API 成功删除资源后,它会将 OperationStatus 值设置为 SUCCESS

    { "ProgressEvent": { "EventTime": "2021-08-26T22:50:20.831Z", "TypeName": "AWS::Logs::LogGroup", "OperationStatus": "SUCCESS", "Operation": "DELETE", "Identifier": "CloudControlExample", "RequestToken": "bb0ed9cd-84f9-44c2-b638-000000000000" } }

后续步骤

有关在资源中使用云控制 API 的详细信息和示例,请参阅云控制API资源操作