

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Operaciones de recursos de la API de Cloud Control
<a name="resource-operations"></a>

Se usa API de control de nube de AWS para hacer u otra construcción de verbos de comando para crear, leer, actualizar, eliminar y enumerar (-L) operaciones en los recursos de su cuenta. Cuenta de AWS

**Topics**
+ [Requisitos previos](#resource-operations-prerequisites)
+ [Especificación de credenciales](#resource-operations-permissions)
+ [Garantizar que las solicitudes son únicas](#resource-operations-idempotency)
+ [Consideraciones](#resource-operations-considerations)
+ [Creación de un recurso](resource-operations-create.md)
+ [Actualización de un recurso](resource-operations-update.md)
+ [Eliminación de un recurso](resource-operations-delete.md)
+ [Detección de recursos](resource-operations-list.md)
+ [Lectura de un recurso](resource-operations-read.md)
+ [Administración de solicitudes de recursos](resource-operations-manage-requests.md)
+ [Identificar los recursos con API de control de nube de AWS](resource-identifier.md)

## Requisitos previos para usar los recursos con la API de control en la nube
<a name="resource-operations-prerequisites"></a>

Para aprovisionar un recurso específico mediante la API de control en la nube, ese tipo de recurso debe ser compatible con la API de control en la nube y estar disponible para su uso en la Cuenta de AWS.
+ **Recursos disponibles para su uso en su Cuenta de AWS**

  Para que estén disponibles para su uso en la cuenta, los tipos de recursos públicos deben estar activados, y los tipos de recursos privados deben estar registrados. Los tipos AWS de recursos admitidos son públicos y están siempre activados. Para obtener más información, consulte [Uso de los tipos de recursos de la API de Cloud Control](resource-types.md).
+ **Recursos compatibles con la API de control en la nube**

  Para ver una lista de los tipos de AWS recursos compatibles con la API de Cloud Control, consulta[Tipos de recursos compatibles con la API de control en la nube](supported-resources.md).

  Los tipos de recursos de terceros, tanto públicos como privados, son compatibles con la API de control en la nube.

  Para obtener más información sobre cómo determinar si un tipo de recurso específico es compatible con la API de control en la nube, consulte [Determinar si un tipo de recurso es compatible con la API de control en la nube](resource-types.md#resource-types-determine-support).

Para obtener información sobre el uso de los tipos de recursos, consulte [Uso de los tipos de recursos de la API de Cloud Control](resource-types.md).

## Especificación de las credenciales para la API de control en la nube
<a name="resource-operations-permissions"></a>

Como parte de la realización de operaciones con AWS los recursos en tu nombre, la API de Cloud Control debe realizar llamadas a los AWS servicios subyacentes que realmente aprovisionan esos recursos. Para ello, la API de control en la nube requiere las credenciales necesarias para acceder a esos servicios. Hay dos formas de habilitar la API de control en la nube para obtener esas credenciales:
+ **Credenciales de usuario**

  De forma predeterminada, la API de Cloud Control crea una sesión temporal con tus credenciales de AWS usuario y la usa para realizar las llamadas necesarias a AWS los servicios intermedios. Esta sesión dura hasta 24 horas, tras las cuales la API de control en la nube no podrá realizar ninguna llamada restante a AWS .
+ **Credenciales del rol de servicio**

  También puede especificar un rol de servicio para que la API de control en la nube lo asuma durante una operación de recursos, al realizar la solicitud de recursos. Entre otras ventajas, especificar un rol de servicio permite a la API de control en la nube realizar llamadas a los servicios de AWS subyacentes durante un máximo de 36 horas.

  Para usar un rol de servicio, especifique el parámetro `RoleArn` de la solicitud de operación de recursos.

  Como las acciones de la API de Cloud Control forman parte del CloudFormation servicio, el servicio asume la función de CloudFormation servicio que especifiques (`cloudformation.amazonaws.com`). Para obtener más información, consulte [Rol de servicio CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html) en la *Guía del usuario de AWS CloudFormation *.

Los permisos necesarios para cada controlador de recursos se definen en la sección `handlers` del esquema de ese tipo de recurso. Para obtener más información sobre la visualización del esquema de recursos, consulte [Visualización de esquemas de tipos de recursos](resource-types.md#resource-types-schemas). La sección `handlers` se define en el [esquema de definiciones de tipos de recursos](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html#schema-properties-handlers).

## Garantizar que las solicitudes de operación de recursos son únicas al usar la API de control en la nube
<a name="resource-operations-idempotency"></a>

Como práctica recomendada, le recomendamos encarecidamente que especifique un token de idempotencia en las solicitudes de operaciones de creación, eliminación y actualización de recursos. Preferiblemente, especifique un token que sea único para cada solicitud, como un identificador único universal (UUID). Este token garantiza que las solicitudes se pueden desambiguar en los casos en que haya que repetir una solicitud.

Todas las operaciones de `create-resource`, `delete-resource` y `update-resource` utilizan un parámetro `client-token`, que se puede configurar como un token de idempotencia.

## Consideraciones al utilizar la API de control en la nube
<a name="resource-operations-considerations"></a>

Le recomendamos que tenga en cuenta el siguiente comportamiento del servicio al realizar operaciones de recursos con la API de control en la nube:
+ La API de control en la nube realiza cada operación de recursos de forma individual e independiente de cualquier otra operación de recursos.
+ De hecho, una sola solicitud de operación de recursos a la API de control en la nube podría consistir en varias llamadas al servicio subyacente que aprovisiona el recurso. Por este motivo, una solicitud de recurso puede fallar si solo se ha completado parcialmente, lo que puede provocar que solo se apliquen algunos de los cambios solicitados al recurso.
+ Si una operación de recursos falla en algún momento, la API de control en la nube no revierte el recurso a su estado anterior.
+ Solo puede realizar una operación de recurso a la vez en un recurso determinado mediante la API de control en la nube. Sin embargo, el recurso se puede seguir operando directamente, a través del servicio subyacente que lo aprovisionó. Le recomendamos encarecidamente no utilizar este enfoque porque puede provocar un comportamiento impredecible.

# Crear un recurso con API de control de nube de AWS
<a name="resource-operations-create"></a>

Utilice el comando `create-resource` para crear un recurso.

## Composición del estado deseado del recurso
<a name="resource-operations-create-desiredstate"></a>

Para que la API de control en la nube cree un recurso, debe especificar el *estado deseado* del recurso que desea crear. El estado deseado consiste en una lista de las propiedades del recurso que desee especificar y sus valores deseados.

Las propiedades de un recurso se definen en su esquema de tipos de recursos. Esto incluye si la propiedad es obligatoria, los valores válidos y otras restricciones de propiedad. Para obtener más información acerca de la visualización de definiciones de propiedades de los recursos, consulte [Visualización de esquemas de tipos de recursos](resource-types.md#resource-types-schemas).

El estado deseado que especifique debe ser válido en el esquema de tipos de recurso.

Como ejemplo, supongamos que desea crear un [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)recurso con un nombre específico y una política de retención de 90 días. El primer paso es componer el estado deseado del recurso, con formato de texto JSON.

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

Al llamar al comando `create-resource`, puede pasar el estado deseado directamente en línea como una cadena o, para definiciones de estado deseadas más complicadas, especificar una ubicación de archivo.

El comando siguiente AWS Command Line Interface (AWS CLI) crea el recurso y especifica en el `desired-state` parámetro en el que está establecida la `RetentionInDays` propiedad del recurso`90`, además de especificar el nombre del grupo de registros.

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

## Seguimiento del progreso de una solicitud de creación de recurso
<a name="resource-operations-create-progress"></a>

El comando `create-resource` devuelve un objeto `ProgressEvent` que puede utilizar para supervisar el estado actual de la solicitud de creación de recurso. Para obtener más información, consulte [Seguimiento del progreso de las solicitudes de operación de recursos](resource-operations-manage-requests.md#resource-operations-manage-requests-track).

# Actualizar un recurso con API de control de nube de AWS
<a name="resource-operations-update"></a>

Utilice el comando `update-resource` para realizar actualizaciones en un recurso existente. Esto incluye los recursos que no se aprovisionaron originalmente con la API de control en la nube.

**importante**  
Le recomendamos encarecidamente no utilizar la API de control en la nube para actualizar los recursos que gestionan activamente otros servicios. Si lo hace, pueden producirse resultados inesperados. Por ejemplo, no utilices la API de Cloud Control para actualizar los recursos que actualmente forman parte de una CloudFormation pila.

Para actualizar un recurso existente, debe especificar el identificador del recurso. Para obtener más información acerca de la determinación del identificador de un recurso, consulte [Uso del identificador principal de un recurso](resource-identifier.md#resource-identifier-using).

La actualización de un recurso implica cambiar los valores de las propiedades del recurso. Las propiedades de un recurso se definen en su esquema de tipos de recursos. Esto incluye si la propiedad es obligatoria, los valores válidos y otras restricciones de propiedad. Para obtener más información acerca de la visualización de definiciones de propiedades de los recursos, consulte [Visualización de esquemas de tipos de recursos](resource-types.md#resource-types-schemas).

## Redacción del documento de parche
<a name="resource-operations-update-patch"></a>

Para actualizar un recurso, primero debe definir las actualizaciones como una lista de *operaciones de parche* incluida en un documento de parche JSON. Este documento de parche debe cumplir con el estándar definido en el [https://datatracker.ietf.org/doc/html/rfc6902](https://datatracker.ietf.org/doc/html/rfc6902)

Cada operación de parche define una única actualización de una propiedad de recurso específica. Las siguientes propiedades son necesarias:
+ `op`: tipo de operación. La API de control en la nube admite todas las operaciones definidas en RFC 6902: `add`, `remove`, `replace`, `move`, `copy` y `test`.
+ `path`: la ruta a la propiedad del recurso, en relación con la sección `properties` del esquema de recursos.

En función de la operación, es posible que se requieran propiedades adicionales. Consulte RFC 6902 para obtener información específica.

Al utilizar el comando `update-resource`, puede especificar el documento de parche en línea como una cadena o la ubicación de un archivo.

En el siguiente ejemplo, se actualiza la política de retención de un [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)recurso denominado 90 `CloudControlApiLogGroup` días.

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

## Cómo actualiza la API de control en la nube los recursos
<a name="resource-operations-update-how"></a>

Para actualizar un recurso, la API de control en la nube primero recupera el estado actual del recurso y, después, lo actualiza en un proceso de dos pasos: 
+ La API de control en la nube combina las operaciones de parche especificadas en la solicitud de actualización con el estado actual del recurso para generar su estado deseado una vez actualizado. Las operaciones se aplican secuencialmente en el orden en que aparecen en el documento de parche. Cada operación de la secuencia se aplica al estado actual del recurso; el estado del recurso resultante se convierte en el objetivo de la siguiente operación.

  En este punto, se produce un error en toda la solicitud de actualización si:
  + Una operación de parche incluida en la solicitud no es válida.
  + Se produce un error en una operación de parche de tipo `op` `test`.

  En esos casos, se produce un error en toda la solicitud de actualización, y la API de control en la nube no actualiza el recurso.
+ Luego la API de control en la nube llama al controlador de actualizaciones del tipo de recurso para actualizar el recurso.

  Si el controlador de actualizaciones falla en algún momento, la *API de control en la nube no revierte el recurso a su estado anterior*.

Por ejemplo, considere el siguiente documento de revisión que se define para actualizar un [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)recurso. El documento contiene dos operaciones de parche. La primera operación es de tipo `test` y comprueba si la política de retención del recurso está establecida en 3653 días. Si ese es el caso, el recurso pasa la prueba y la API de control en la nube pasa a la siguiente operación. Esta operación reemplaza el valor de la política de retención actual por 180 días. Si la política de retención del recurso se establece en un valor distinto de 3653 días, la primera operación `test` fallará y la API de control en la nube nunca ejecutará la segunda operación `replace`.

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

## Seguimiento del progreso de una solicitud de actualización de recurso
<a name="resource-operations-update-progress"></a>

El comando `update-resource` devuelve un objeto `ProgressEvent` que puede utilizar para hacer un seguimiento del estado actual de la solicitud de operación de recurso. Para obtener más información, consulte [Seguimiento del progreso de las solicitudes de operación de recursos](resource-operations-manage-requests.md#resource-operations-manage-requests-track).

# Eliminar un recurso con API de control de nube de AWS
<a name="resource-operations-delete"></a>

Utilice el comando `delete-resource` para eliminar un recurso existente. Puede eliminar el recurso independientemente de si el recurso se aprovisionó originalmente o no mediante la API de control en la nube.

**importante**  
Le recomendamos encarecidamente no utilizar la API de control en la nube para eliminar los recursos que gestionan activamente otros servicios. Si lo hace, pueden producirse resultados inesperados. Por ejemplo, no utilices la API de Cloud Control para eliminar los recursos que actualmente forman parte de una CloudFormation pila.

Para actualizar un recurso existente, debe especificar el identificador del recurso. Para obtener más información sobre cómo buscar el identificador de un recurso, consulte [Uso del identificador principal de un recurso](resource-identifier.md#resource-identifier-using).

En el siguiente ejemplo, se elimina un [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)recurso con el nombre de`CloudControlApiLogGroup`.

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

## Seguimiento del progreso de una solicitud de eliminación de recurso
<a name="resource-operations-delete-progress"></a>

El comando `delete-resource` devuelve un objeto `ProgressEvent` que puede utilizar para hacer un seguimiento del estado actual de la solicitud de operación de recurso. Para obtener más información, consulte [Seguimiento del progreso de las solicitudes de operación de recursos](resource-operations-manage-requests.md#resource-operations-manage-requests-track).

# Descubriendo recursos con API de control de nube de AWS
<a name="resource-operations-list"></a>

Utilice el comando `list-resources` para detectar los recursos actualmente aprovisionados en su Cuenta de AWS y Región de AWS. Esto incluye todos los recursos del tipo de recurso especificado, independientemente de si se aprovisionaron a través de la API de Cloud Control, directamente a través del servicio subyacente o de otro mecanismo (por ejemplo, si forman parte de una AWS CloudFormation pila).

La información que se devuelve de cada recurso incluye:
+ El identificador principal del recurso.
+ También puede incluir una *parte o la totalidad* de las propiedades del recurso, detallando el estado actual del recurso. Para obtener más información, consulte [Visualización de esquemas de tipos de recursos](resource-types.md#resource-types-schemas).

El siguiente ejemplo devuelve una lista de recursos `AWS::Logs::LogGroup`.

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

La API de control en la nube devuelve una lista de los recursos de su cuenta del tipo de recurso especificado. Por ejemplo, `list-resources` devuelve el identificador principal y las propiedades de los recursos de todos los recursos `AWS::Logs::LogGroup` de su cuenta, independientemente de si fueron aprovisionados por la API de control en la nube o no. La información devuelta es similar a la siguiente, en función de los recursos de su cuenta.

```
{
  "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:*"}'
    }
  ]
}
```

El siguiente ejemplo solicita una lista de recursos `AWS::Kinesis::Stream`.

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

En el caso de las transmisiones de Kinesis, la API de control en la nube devuelve el identificador principal de cada transmisión, junto con un *subconjunto* de las propiedades de los recursos. En este caso, solo una propiedad, `Name`. A continuación, puede utilizar el identificador principal de una transmisión con `get-resource` para solicitar el estado actual completo del recurso.

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

## Recursos que requieren información adicional
<a name="resource-operations-list-containers"></a>

Algunos recursos requieren que proporciones información adicional sobre los recursos que deseas incluir en la lista como parte de tu solicitud. En estos casos, debe usar el parámetro `ResourceModel` para especificar estas propiedades.

En la siguiente tabla se enumeran estos recursos y las propiedades que se deben especificar en el parámetro `ResourceModel` durante las solicitudes de lista.


| Recursos | Propiedades necesarias | 
| --- | --- | 
|  [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` o `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`, y `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/es_es/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/es_es/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/es_es/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`, y `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` y `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` | 

# Leer un recurso con API de control de nube de AWS
<a name="resource-operations-read"></a>

Con el identificador principal de un recurso, puede llamar al comando `get-resource` para recuperar información detallada sobre el recurso. Para obtener información sobre cómo recuperar el identificador de un recurso, consulte [Identificar los recursos con API de control de nube de AWS](resource-identifier.md).

La información que devuelve `get-resource` incluye el esquema del recurso, que detalla el estado actual del recurso, como los valores de las propiedades, los eventos admitidos y los permisos necesarios. Para obtener más información, consulte [Visualización de esquemas de tipos de recursos](resource-types.md#resource-types-schemas).

El siguiente ejemplo devuelve el estado actual de un recurso `AWS::Logs::LogGroup` denominado `LogGroupResourceExample`. En el caso de los recursos `AWS::Logs::LogGroup`, el nombre de un grupo de registro es su identificador principal.

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

# Administrar las solicitudes de operación de recursos con API de control de nube de AWS
<a name="resource-operations-manage-requests"></a>

Como las operaciones de recursos son asíncronas, las solicitudes de recursos, como `create-resource` y `update-resource`, devuelven un objeto `ProgressEvent` que contiene información sobre el estado actual de su solicitud de creación o actualización de recurso.

Por ejemplo, una solicitud de creación de recursos podría devolver inicialmente el siguiente objeto `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"
    }
}
```

La información devuelta en el objeto `ProgressEvent` incluye un token de solicitud que, a continuación, puede usar para hacer el seguimiento o cancelar una solicitud de operación de recursos.

**nota**  
Las solicitudes de operación de recursos caducan a los siete días.

## Enumeración de las solicitudes de operación de recursos activas
<a name="resource-operations-manage-requests-list"></a>

Utilice el `list-resource-requests` comando para devolver una lista de las solicitudes de operaciones de recursos activas para un Cuenta de AWS y Región de AWS. Puede filtrar la lista por tipo y estado de solicitud.

Las solicitudes de operación de recursos caducan a los siete días.

El siguiente ejemplo devuelve las solicitudes de operación de recursos activas, pero excluye las solicitudes de creación de recursos que aún estén en curso.

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

La información devuelta de cada operación de recursos incluye un token de solicitud que, a continuación, puede usar para hacer el seguimiento o cancelar una solicitud de operación de recursos.

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

## Seguimiento del progreso de las solicitudes de operación de recursos
<a name="resource-operations-manage-requests-track"></a>

Utilice el comando `get-resource-request-status` para hacer un seguimiento del progreso de su solicitud de operación de recursos. Este comando toma el token de solicitud incluido en el objeto `ProgressEvent` generado durante la solicitud inicial de operación de recursos. (También puede recuperar el token de solicitud de una solicitud de operación de recursos mediante el comando `list-resource-requests`). El comando `get-resource-request-status` devuelve un objeto `ProgressEvent` actualizado que contiene información sobre el estado actual de la solicitud.

Consulte el siguiente ejemplo.

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



## Cancelación de las solicitudes de operación de recursos
<a name="resource-operations-manage-requests-cancel"></a>

Utilice el comando `cancel-resource-request` para cancelar una solicitud de operación de recursos que esté actualmente en curso. Como solo puede realizar una sola operación en un recurso determinado a la vez, puede haber casos en los que necesite cancelar la operación de recurso actual para que el recurso esté disponible y poder realizar otra operación en él.

Cancelar una solicitud de recurso no garantiza que la API de control en la nube pueda cancelar inmediatamente todas las operaciones de recursos. Por el contrario, la API de control en la nube dejará de realizar más llamadas al controlador de eventos del recurso. De hecho, una sola solicitud de operación de recursos a la API de control en la nube podría consistir en varias llamadas al servicio subyacente que aprovisiona el recurso. Por este motivo, cancelar una solicitud de operación de recursos podría dejar la solicitud parcialmente completada, lo que puede provocar que solo se apliquen algunos de los cambios solicitados al recurso. La API de control en la nube no revierte el recurso a su estado anterior.

Solo se pueden cancelar las solicitudes de operaciones de recursos con un estado `PENDING` o `IN_PROGRESS`.

**nota**  
Si bien las llamadas a `CancelResourceRequest` cancelan las operaciones que realiza la API de control en la nube, no finalizan ninguna operación asíncrona que ya se haya iniciado en los servicios posteriores.

# Identificar los recursos con API de control de nube de AWS
<a name="resource-identifier"></a>

Cada tipo de recurso tiene una propiedad que se define como su *identificador principal*. El valor de esta propiedad debe ser único para cada recurso de ese tipo en una Cuenta de AWS y determinada Región de AWS. Por ejemplo, muchos tipos de recursos incluyen una propiedad `Name` que debe ser única para cada recurso de ese tipo. En algunos casos, el identificador principal se define como una combinación de varias propiedades que juntas forman un identificador único. Al usar este identificador principal, combinado con el tipo de recurso, puede especificar exactamente en qué recurso desea realizar operaciones de recursos, como `update-resource` o `delete-resource`.

Además, algunos tipos de recursos definen *identificadores secundarios* que también se pueden usar para identificar de forma exclusiva los recursos de ese tipo.

Para determinar qué propiedad (o combinación de propiedades) del recurso es el identificador principal de un tipo de recurso, consulte el atributo `primaryIdentifier` del esquema de tipos de recursos. El esquema también incluye los identificadores secundarios definidos. Para obtener más información, consulte [Visualización de esquemas de tipos de recursos](resource-types.md#resource-types-schemas).

## Obtención del identificador principal de un recurso
<a name="resource-identifier-getting"></a>

Puede encontrar el *valor* del identificador de un recurso específico mediante los comandos de la API de control en la nube. Cada uno de los siguientes comandos devuelve un objeto `ProgressEvent` que contiene el identificador principal de los recursos especificados:
+ 

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

  ```
  create-resource
  ```
+ 

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

  ```
  list-resource-requests
  ```

## Uso del identificador principal de un recurso
<a name="resource-identifier-using"></a>

Al usar los comandos de la API de control en la nube, puede especificar el identificador principal o cualquier identificador secundario definido para el tipo de recurso en su esquema de recursos. Solo puede especificar un identificador. Los identificadores principales se pueden especificar como una cadena o JSON; los identificadores secundarios se deben especificar como JSON.

En el caso de los identificadores principales compuestos (es decir, aquellos que constan de varias propiedades de recursos agrupadas), para especificar el identificador principal como una cadena, enumere los valores de las propiedades *en el orden en que se especifican* en la definición del identificador principal, separados por `|`.

Por ejemplo, el identificador principal del recurso se define como:

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

Por lo tanto, para especificar el identificador principal de un recurso como una cadena, utilice el siguiente formato.

`DatabaseName|TableName`

Por ejemplo, si se trata de una base de datos con nombre de base de datos `MyDatabase` y nombre de tabla `MyTable`, especifique `MyDatabase|MyTable`.

En el caso de los identificadores compuestos especificados como JSON, no es necesario que las propiedades estén ordenadas, como se muestra en el siguiente ejemplo.

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

Para obtener más información sobre los identificadores de recursos, consulte [primaryidentifier](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html#schema-properties-primaryidentifier) en la *interfaz de línea de CloudFormation comandos User Move for* Extension Development.