Identifying resources - Cloud Control API

Identifying resources

Every resource type has a property that is defined as its primary identifier. The value of this property must be unique for each resource of that type in a given AWS account and AWS Region. For example, many resource types include a Name property that must be unique for each resource of that type. In some cases, the primary identifier is defined as a combination of multiple properties that together form a unique identifier. By using this primary identifier, combined with the resource type, you can specify exactly which resource on which you want to perform resource operations such as update-resource or delete-resource.

In addition, some resource types define secondary identifiers that can also be used to uniquely identify resources of that type.

To determine which resource property (or combination of properties) is the primary identifier for a resource type, refer to the primaryIdentifier attribute of the resource type schema. The schema includes secondary identifiers defined, as well. For more information, see Viewing resource type schemas.

Getting a resource's primary identifier

You can find the identifier value for a specific resource by using Cloud Control API commands. Each of the following commands returns a ProgressEvent object that contains the primary identifier of the specified resources:

  • cancel-resource-request
  • create-resource
  • get-resource-request-status
  • list-resource-requests

Using a resource's primary identifier

When using Cloud Control API commands, you can specify the primary identifier or any secondary identifier defined for the resource type in its resource schema. You can only specify one identifier. Primary identifiers can be specified as a string or JSON; secondary identifiers must be specified as JSON.

For compound primary identifiers (that is, one that consists of multiple resource properties strung together), to specify the primary identifier as a string, list the property values in the order that they are specified in the primary identifier definition, separated by |.

For example, the primary identifier for the resource is defined as:

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

So, to specify the primary identifier of a resource as a string, you use the following format.

DatabaseName|TableName

For example, given a database with a database name of MyDatabase and table name of MyTable, you specify MyDatabase|MyTable.

For compound identifiers specified as JSON, property order is not required, as shown in the following example.

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

For more information about resource identifiers, see primaryidentifier in the CloudFormation Command Line Interface User Move for Extension Development.