

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Operações de recursos da API Cloud Control
<a name="resource-operations"></a>

Use AWS API Cloud Control para fazer ou outra construção de verbos de comando criar, ler, atualizar, remover e listar (-L) operações em recursos em seu. Conta da AWS

**Topics**
+ [Pré-requisitos](#resource-operations-prerequisites)
+ [Especificação de credenciais](#resource-operations-permissions)
+ [Garantindo que as solicitações sejam exclusivas](#resource-operations-idempotency)
+ [Considerações](#resource-operations-considerations)
+ [Criar um recurso](resource-operations-create.md)
+ [Atualizar um recurso](resource-operations-update.md)
+ [Excluir um recurso](resource-operations-delete.md)
+ [Descobrir recursos](resource-operations-list.md)
+ [Lendo um recurso](resource-operations-read.md)
+ [Gerenciando solicitações de recursos](resource-operations-manage-requests.md)
+ [Identificação de recursos com AWS API Cloud Control](resource-identifier.md)

## Pré-requisitos para usar recursos com a API de controle da nuvem
<a name="resource-operations-prerequisites"></a>

Para provisionar um recurso específico usando a API de controle da nuvem, esse tipo de recurso deve ser compatível com a API de controle da nuvem e estar disponível para uso na sua Conta da AWS.
+ **Recursos disponíveis para uso em seu Conta da AWS**

  Para estarem disponíveis para uso em sua conta, os tipos de recursos públicos devem ser ativados e os tipos de recursos privados devem ser registrados. Os tipos AWS de recursos compatíveis são públicos e estão sempre ativados. Para obter mais informações, consulte [Usando os tipos de recursos da Cloud Control API](resource-types.md).
+ **Recursos compatíveis com a API de controle da nuvem**

  Para ver uma lista dos tipos de AWS recursos compatíveis com a Cloud Control API, consulte[Tipos de recursos compatíveis com a API de Controle da Nuvem](supported-resources.md).

  Tipos de recursos de terceiros, públicos e privados, são compatíveis com API de controle da nuvem.

  Para obter detalhes sobre como determinar se um tipo de recurso específico é compatível com a API de controle da nuvem, consulte [Determinando se um tipo de recurso é compatível com a API de Controle da Nuvem](resource-types.md#resource-types-determine-support).

Para obter informações sobre como usar tipos de recursos, consulte [Usando os tipos de recursos da Cloud Control API](resource-types.md).

## Especificação de credenciais para a API de controle da nuvem
<a name="resource-operations-permissions"></a>

Como parte da execução de operações em AWS recursos em seu nome, a Cloud Control API precisa fazer chamadas para os AWS serviços subjacentes que realmente provisionam esses recursos. Para isso, a API de controle da nuvem exige as credenciais necessárias para acessar esses serviços. Há duas maneiras de ativar a API de controle da nuvem para adquirir essas credenciais:
+ **Credenciais do usuário**

  Por padrão, a Cloud Control API cria uma sessão temporária usando suas credenciais de AWS usuário e as usa para fazer todas as chamadas necessárias para serviços downstream AWS . Essa sessão dura até 24 horas, após as quais todas as chamadas restantes para a AWS da API de controle da nuvem falharão.
+ **Credenciais do perfil de serviço**

  Você também pode especificar um perfil de serviço que a API de controle da nuvem deve assumir durante uma operação de recurso, ao fazer a solicitação do recurso. Entre outras vantagens, especificar um perfil de serviço permite que a API de controle da nuvem faça chamadas para serviços da AWS subjacentes por até 36 horas.

  Para usar um perfil de serviço, especifique o parâmetro `RoleArn` da solicitação de operação do recurso.

  Como as ações da Cloud Control API fazem parte do CloudFormation serviço, a função de serviço que você especifica é assumida pelo CloudFormation serviço (`cloudformation.amazonaws.com`). Para obter maiores informações, consulte [Perfil de serviço do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html) no *Guia do usuário do AWS CloudFormation *.

As permissões necessárias para cada manipulador de recursos são definidas na seção `handlers` do esquema desse tipo de recurso. Para obter mais informações sobre a visualização do esquema de recursos, consulte [Visualizando esquemas de tipos de recursos](resource-types.md#resource-types-schemas). A seção `handlers` é definida no [esquema de definição do tipo de recurso](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html#schema-properties-handlers).

## Garantir que as solicitações de operação de recurso sejam exclusivas ao usar a API de controle da nuvem
<a name="resource-operations-idempotency"></a>

Como prática recomendada, recomendamos que você especifique um token de idempotência com solicitações de operação de criação, exclusão e atualização de recursos. De preferência, especifique um token que seja exclusivo para cada solicitação, como um identificador exclusivo universal (UUID). Esse token garante que as solicitações possam ter ambiguidades eliminadas nos casos em que uma solicitação deve ser repetida.

Todas as operações `create-resource`, `delete-resource` e `update-resource` usam um parâmetro `client-token`, que pode ser definido como um token de idempotência.

## Algumas considerações sobre o uso da API de controle da nuvem
<a name="resource-operations-considerations"></a>

Recomendamos que você leve em consideração o seguinte comportamento do serviço ao realizar operações de recursos usando a API de controle da nuvem:
+ A API de controle da nuvem executa cada operação de recurso individualmente e independentemente de qualquer outra operação de recurso.
+ Uma única solicitação de operação de recurso para a API de controle da nuvem pode consistir em várias chamadas para o serviço subjacente que provisiona o recurso. Por esse motivo, uma solicitação de recurso pode falhar quando concluída apenas parcialmente, fazendo com que apenas algumas das alterações solicitadas sejam aplicadas ao recurso.
+ Se uma operação de recurso falhar em algum momento, a API de controle da nuvem não reverterá o recurso para o estado anterior.
+ Você só pode realizar uma operação de recurso por vez em um determinado recurso usando a API de controle da nuvem. No entanto, o recurso ainda pode ser operado diretamente, por meio do serviço subjacente que o provisionou. Não recomendamos fortemente essa abordagem, pois ela pode levar a um comportamento imprevisível.

# Criando um recurso com AWS API Cloud Control
<a name="resource-operations-create"></a>

Use o comando `create-resource` para criar um recurso.

## Realizar a composição do estado desejado do recurso
<a name="resource-operations-create-desiredstate"></a>

Para que a API de controle da nuvem crie um recurso, você precisa especificar o *estado desejado* do recurso que deseja criar. O estado desejado consiste em uma lista das propriedades do recurso que você deseja especificar e seus valores desejados.

As propriedades de um recurso são definidas em seu esquema de tipo de recurso. Isso inclui se a propriedade é obrigatória, valores válidos e outras restrições de propriedade. Para obter mais informações sobre como visualizar definições de propriedades de recursos, consulte [Visualizando esquemas de tipos de recursos](resource-types.md#resource-types-schemas).

O estado desejado que você especificar deve ser válido em relação ao esquema do tipo de recurso.

Por exemplo, suponha que você queira criar um [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 com um nome específico e uma política de retenção de 90 dias. Como primeira etapa, você deve compor o estado desejado do recurso, formatado como texto JSON.

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

Ao chamar o comando `create-resource`, você pode passar o estado desejado diretamente em linha como uma string ou, para definições de estado desejadas mais complicadas, especificar a localização do arquivo.

O comando a seguir AWS Command Line Interface (AWS CLI) cria o recurso e especifica no `desired-state` parâmetro em que a `RetentionInDays` propriedade do recurso está definida`90`, além de especificar o nome do grupo de registros.

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

## Acompanhando o progresso de uma solicitação de criação de recurso
<a name="resource-operations-create-progress"></a>

O comando `create-resource` retorna um objeto `ProgressEvent` que você pode usar para monitorar o status atual da sua solicitação de criação de recursos. Para obter mais informações, consulte [Acompanhando o progresso de uma solicitações de operações de recursos](resource-operations-manage-requests.md#resource-operations-manage-requests-track).

# Atualizando um recurso com AWS API Cloud Control
<a name="resource-operations-update"></a>

Use o comando `update-resource` para fazer atualizações em um recurso existente. Isso inclui recursos que não foram provisionados originalmente usando a API de controle da nuvem.

**Importante**  
É altamente desaconselhável usar a API de controle da nuvem para atualizar recursos que estão sob gerenciamento ativo por outros serviços. Fazer isso pode levar a resultados inesperados. Por exemplo, não use a Cloud Control API para atualizar recursos que atualmente fazem parte de uma CloudFormation pilha.

Para atualizar um recurso existente, você deve especificar o identificador do recurso. Para obter mais informações sobre como determinar o identificador de um recurso, consulte [Utilizando o identificador primário de um recurso](resource-identifier.md#resource-identifier-using).

A atualização de um recurso envolve a alteração dos valores das propriedades do recurso. As propriedades de um recurso são definidas em seu esquema de tipo de recurso. Isso inclui se a propriedade é obrigatória, valores válidos e outras restrições de propriedade. Para obter mais informações sobre como visualizar definições de propriedades de recursos, consulte [Visualizando esquemas de tipos de recursos](resource-types.md#resource-types-schemas).

## Redigir o documento de patch
<a name="resource-operations-update-patch"></a>

Para atualizar um recurso, primeiro você define as atualizações como uma lista de *operações de patch* contidas em um documento de patch JSON. Este documento de patch deve seguir o padrão definido no [https://datatracker.ietf.org/doc/html/rfc6902](https://datatracker.ietf.org/doc/html/rfc6902)JSON) Patch.

Cada operação de patch define uma única atualização para uma propriedade específica do recurso. As seguintes propriedades são necessárias:
+ `op`: O tipo de operação. A API de controle da nuvem é compatível com todas as operações definidas no RFC 6902: `add`, `remove`, `replace`, `move`, `copy` e `test`.
+ `path`: o caminho para a propriedade do recurso, em relação à seção `properties` do esquema do recurso.

Dependendo da operação, propriedades adicionais podem ser necessárias. Consulte a RFC 6902 para obter detalhes.

Ao usar o comando `update-resource`, você pode especificar o documento de patch embutido como uma string ou especificar a localização do arquivo.

O exemplo a seguir atualiza a política de retenção de um [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 chamado `CloudControlApiLogGroup` para 90 dias.

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

## Como a API de controle da nuvem atualiza os recursos
<a name="resource-operations-update-how"></a>

Para atualizar um recurso, a API de controle da nuvem primeiro recupera o estado atual do recurso e, em seguida, atualiza o recurso em um processo de duas etapas: 
+ A API de controle da nuvem combina as operações de patch especificadas na solicitação de atualização com o estado atual do recurso para gerar o estado desejado do recurso após a atualização. As operações são aplicadas sequencialmente na ordem em que aparecem no documento de patch. Cada operação na sequência é aplicada ao estado atual do recurso; o estado resultante do recurso se torna o alvo da próxima operação.

  Neste ponto do tutorial, a solicitação de atualização inteira falhará se:
  + Uma operação de patch incluída na solicitação é inválida.
  + Uma operação de patch de `test` do tipo `op` falha.

  Nesses casos, toda a solicitação de atualização falha e a API de controle da nuvem não faz atualizações no recurso.
+ Em seguida, a API de controle da nuvem chama o manipulador de atualizações do tipo de recurso para atualizar o recurso.

  Se o manipulador de atualizações falhar em algum momento, *a API de controle da nuvem não reverterá o recurso para o estado anterior*.

Por exemplo, considere o seguinte documento de patch definido para atualizar um [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. O documento contém duas operações de patch. A primeira operação é do tipo `test` e verifica se a política de retenção do recurso está definida para 3653 dias. Se for esse o caso, o recurso passa no teste e a API de controle da nuvem prossegue para a próxima operação. Essa operação substitui o valor atual da política de retenção por 180 dias. Se a política de retenção do recurso for definida com um valor diferente de 3.653 dias, a primeira operação `test` falhará e a API de controle da nuvem nunca executará a segunda operação `replace`.

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

## Acompanhando o progresso de uma solicitação de atualização de recurso
<a name="resource-operations-update-progress"></a>

O comando `update-resource` retorna um objeto `ProgressEvent` que você pode usar para rastrear o status atual da sua solicitação de operação de recursos. Para obter mais informações, consulte [Acompanhando o progresso de uma solicitações de operações de recursos](resource-operations-manage-requests.md#resource-operations-manage-requests-track).

# Excluindo um recurso com AWS API Cloud Control
<a name="resource-operations-delete"></a>

Use o comando `delete-resource` para excluir um recurso existente. Você pode excluir o recurso, independentemente de ele ter sido provisionado originalmente usando a API de controle da nuvem.

**Importante**  
É altamente desaconselhável usar a API de controle da nuvem para excluir recursos que estão sob gerenciamento ativo por outros serviços. Fazer isso pode levar a resultados inesperados. Por exemplo, não use a Cloud Control API para excluir recursos que atualmente fazem parte de uma CloudFormation pilha.

Para atualizar um recurso existente, você deve especificar o identificador do recurso. Para obter mais informações sobre como determinar o identificador de um recurso, consulte [Utilizando o identificador primário de um recurso](resource-identifier.md#resource-identifier-using).

O exemplo a seguir exclui um [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 com o nome de`CloudControlApiLogGroup`.

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

## Acompanhando o progresso de uma solicitação de exclusão de recurso
<a name="resource-operations-delete-progress"></a>

O comando `delete-resource` retorna um objeto `ProgressEvent` que você pode usar para rastrear o status atual da sua solicitação de operação de recurso. Para obter mais informações, consulte [Acompanhando o progresso de uma solicitações de operações de recursos](resource-operations-manage-requests.md#resource-operations-manage-requests-track).

# Descobrindo recursos com AWS API Cloud Control
<a name="resource-operations-list"></a>

Use o comando `list-resources` para descobrir os recursos atualmente provisionados em sua Conta da AWS e Região da AWS. Isso inclui todos os recursos do tipo de recurso especificado, independentemente de terem sido provisionados por meio da Cloud Control API, diretamente por meio do serviço subjacente ou de outro mecanismo (como fazer parte de uma AWS CloudFormation pilha).

As informações retornadas para cada recurso incluem:
+ O identificador primário do recurso.
+ Opcionalmente, ele pode incluir *parte das ou todas as* propriedades do recurso, detalhando o estado atual do recurso. Para obter mais informações, consulte [Visualizando esquemas de tipos de recursos](resource-types.md#resource-types-schemas).

O exemplo a seguir retorna uma lista de recursos do `AWS::Logs::LogGroup`.

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

A API de controle da nuvem retorna uma lista dos recursos em sua conta do tipo de recurso especificado. Por exemplo, `list-resources` retorna o identificador principal e as propriedades do recurso de todos os recursos do `AWS::Logs::LogGroup` em sua conta, independentemente de terem sido provisionados pela API de Controle da Nuvem. As informações retornadas são semelhantes às informações a seguir, dependendo dos recursos em sua conta.

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

O exemplo a seguir solicita uma lista de recursos do `AWS::Kinesis::Stream`.

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

Para streams do Kinesis, a API de Controle da Nuvem retorna o identificador principal de cada stream, junto com um *subconjunto* das propriedades do recurso. Nesse caso, apenas uma única propriedade, `Name`. Você poderia então usar o identificador primário de um stream com `get-resource` para solicitar o estado atual completo do recurso.

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

## Recursos que exigem informações adicionais.
<a name="resource-operations-list-containers"></a>

Alguns recursos exigem que você forneça informações adicionais sobre os recursos que você deseja listar como parte de sua solicitação. Nesses casos, você deve usar o parâmetro `ResourceModel` para especificar essas propriedades.

A tabela abaixo lista esses recursos e as propriedades que você deve especificar no parâmetro `ResourceModel` durante as solicitações de lista.


| Recursos | Propriedades necessárias | 
| --- | --- | 
|  [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` ou `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`, e `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/pt_br/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/pt_br/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/pt_br/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`, e `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` e `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` | 

# Lendo um recurso com AWS API Cloud Control
<a name="resource-operations-read"></a>

Usando o identificador primário de um recurso, você pode chamar o comando `get-resource` para recuperar informações detalhadas sobre o recurso. Para obter informações sobre como recuperar o identificador primário de um recurso, consulte [Identificação de recursos com AWS API Cloud Control](resource-identifier.md).

As informações retornadas pelo `get-resource` incluem o esquema do recurso, que detalha o estado atual do recurso, incluindo valores de propriedades, eventos compatíveis e permissões necessárias. Para obter mais informações, consulte [Visualizando esquemas de tipos de recursos](resource-types.md#resource-types-schemas).

O exemplo a seguir retorna o estado atual de um recurso do `AWS::Logs::LogGroup` chamado `LogGroupResourceExample`. Para recursos do `AWS::Logs::LogGroup`, o nome de um grupo de logs é seu identificador principal.

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

# Gerenciando solicitações de operação de recursos com AWS API Cloud Control
<a name="resource-operations-manage-requests"></a>

Como as operações de recursos são assíncronas, solicitações de recursos, como `create-resource` e `update-resource` retornam, um objeto `ProgressEvent` que contém informações sobre o estado atual da solicitação de criação ou atualização do recurso.

Por exemplo, uma solicitação de criação de recurso pode retornar inicialmente o objeto `ProgressEvent` a seguir.

```
{
    "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"
    }
}
```

As informações retornadas no objeto `ProgressEvent` incluem um token de solicitação que você pode usar para rastrear ou cancelar uma solicitação de operação de recurso.

**nota**  
As solicitações de operação de recursos expiram após sete dias.

## Listando solicitações de operação de recursos ativos
<a name="resource-operations-manage-requests-list"></a>

Use o `list-resource-requests` comando para retornar uma lista de solicitações ativas de operação de recursos para um Conta da AWS Região da AWS e. É possível filtrar a lista por tipo e status de solicitação.

As solicitações de operação de recurso expiram após sete dias.

O exemplo a seguir retorna solicitações ativas de operação de recursos, mas filtra todas as solicitações de criação de recursos que ainda estão em andamento.

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

As informações retornadas em cada operação de recursos incluem um token de solicitação que você pode usar para rastrear ou cancelar uma solicitação de operação de recurso.

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

## Acompanhando o progresso de uma solicitações de operações de recursos
<a name="resource-operations-manage-requests-track"></a>

Use o comando `get-resource-request-status` para monitorar o andamento da solicitação de operação do recurso. Esse comando usa o token de solicitação incluído no objeto `ProgressEvent` gerado durante a solicitação inicial de operação do recurso. (Você também pode recuperar o token de solicitação para uma solicitação de operação de recursos usando o comando `list-resource-requests`.) O comando `get-resource-request-status` retorna um objeto `ProgressEvent` atualizado contendo informações sobre o estado atual da solicitação.

Veja o exemplo a seguir.

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



## Cancelando solicitações de operação de recursos
<a name="resource-operations-manage-requests-cancel"></a>

Use o comando `cancel-resource-request` para cancelar uma solicitação de operação de recurso que está em andamento no momento. Como você só pode realizar uma única operação em um determinado recurso por vez, pode haver casos em que você precise cancelar a operação atual do recurso para disponibilizar o recurso para que outra operação possa ser executada nele.

O cancelamento de uma solicitação de recurso não garante que a API de Controle da Nuvem possa cancelar imediatamente todas as operações de recursos. Em vez disso, a API de Controle da Nuvem deixará de fazer mais chamadas para o manipulador de eventos de recursos. Na verdade, uma única solicitação de operação de recursos para a API de Controle da Nuvem pode consistir em várias chamadas para o serviço subjacente que provisiona o recurso. Por esse motivo, cancelar uma solicitação de operação de recurso pode deixar a solicitação concluída parcialmente, fazendo com que apenas algumas das alterações solicitadas sejam aplicadas ao recurso. A API de Controle da Nuvem não reverte o recurso para o estado anterior.

Somente solicitações de operações de recursos com status de `PENDING` ou `IN_PROGRESS` podem ser canceladas.

**nota**  
Embora chamar o `CancelResourceRequest` cancele as operações realizadas pela API de Controle da Nuvem, ela não encerra nenhuma operação assíncrona que possa já ter sido iniciada nos serviços downstream.

# Identificação de recursos com AWS API Cloud Control
<a name="resource-identifier"></a>

Cada tipo de recurso tem uma propriedade que é definida como seu *identificador principal*. O valor dessa propriedade deve ser exclusivo para cada recurso desse tipo em um determinado Conta da AWS Região da AWS e. Por exemplo, muitos tipos de recursos incluem uma propriedade `Name` que deve ser exclusiva para cada recurso desse tipo. Em alguns casos, o identificador primário é definido como uma combinação de várias propriedades que, juntas, formam um identificador exclusivo. Ao usar esse identificador primário, combinado com o tipo de recurso, você pode especificar exatamente em qual recurso deseja realizar operações de recursos, como `update-resource` ou `delete-resource`.

Além disso, alguns tipos de recursos definem *identificadores secundários* que também podem ser usados para identificar exclusivamente recursos desse tipo.

Para determinar qual propriedade do recurso (ou combinação de propriedades) é o identificador principal de um tipo de recurso, consulte o atributo `primaryIdentifier` do esquema do tipo de recurso. O esquema também inclui identificadores secundários definidos. Para obter mais informações, consulte [Visualizando esquemas de tipos de recursos](resource-types.md#resource-types-schemas).

## Obtendo o identificador primário de um recurso
<a name="resource-identifier-getting"></a>

Você pode encontrar o *valor* do identificador de um recurso específico usando os comandos da API de Controle da Nuvem. Cada um dos seguintes comandos retorna um objeto `ProgressEvent` que contém o identificador primário dos recursos especificados:
+ 

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

  ```
  create-resource
  ```
+ 

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

  ```
  list-resource-requests
  ```

## Utilizando o identificador primário de um recurso
<a name="resource-identifier-using"></a>

Ao usar os comandos da API de Controle da Nuvem, você pode especificar o identificador primário ou qualquer identificador secundário definido para o tipo de recurso em seu esquema de recursos. Só é possível especificar um identificador. Os identificadores primários podem ser especificados como uma string ou JSON; os identificadores secundários devem ser especificados como JSON.

Para identificadores primários compostos (ou seja, aqueles que consistem em várias propriedades de recursos agrupadas), para especificar o identificador primário como uma string, liste os valores da propriedade *na ordem em que foram especificados* na definição do identificador primário, separados por `|`.

Por exemplo, o identificador primário do recurso é definido como:

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

Portanto, para especificar o identificador primário de um recurso como uma string, use o formato a seguir.

`DatabaseName|TableName`

Por exemplo, dado um banco de dados com um nome de banco de dados `MyDatabase` e nome de tabela de `MyTable`, você especifica `MyDatabase|MyTable`.

Para identificadores de compostos especificados como JSON, a ordem das propriedades não é necessária, como mostrado no exemplo a seguir.

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

Para obter mais informações sobre identificadores de recursos, consulte [primaryidentifier](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html#schema-properties-primaryidentifier) na *interface de linha de CloudFormation comando User Move for* Extension Development.