CreateResource - AWS Cloud Control API

CreateResource

Creates the specified resource. For more information, see Creating a resource in the AWS Cloud Control API User Guide.

After you have initiated a resource creation request, you can monitor the progress of your request by calling GetResourceRequestStatus using the RequestToken of the ProgressEvent type returned by CreateResource.

Request Syntax

{ "ClientToken": "string", "DesiredState": "string", "RoleArn": "string", "TypeName": "string", "TypeVersionId": "string" }

Request Parameters

For information about the parameters that are common to all actions, see Common Parameters.

The request accepts the following data in JSON format.

ClientToken

A unique identifier to ensure the idempotency of the resource request. As a best practice, specify this token to ensure idempotency, so that AWS Cloud Control API can accurately distinguish between request retries and new resource requests. You might retry a resource request to ensure that it was successfully received.

A client token is valid for 36 hours once used. After that, a resource request with the same client token is treated as a new request.

If you do not specify a client token, one is generated for inclusion in the request.

For more information, see Ensuring resource operation requests are unique in the AWS Cloud Control API User Guide.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 128.

Pattern: [-A-Za-z0-9+/=]+

Required: No

DesiredState

Structured data format representing the desired state of the resource, consisting of that resource's properties and their desired values.

Note

Cloud Control API currently supports JSON as a structured data format.

Specify the desired state as one of the following:

  • A JSON blob

  • A local path containing the desired state in JSON data format

For more information, see Composing the desired state of the resource in the AWS Cloud Control API User Guide.

For more information about the properties of a specific resource, refer to the related topic for the resource in the Resource and property types reference in the AWS CloudFormation Users Guide.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 16384.

Required: Yes

RoleArn

The Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role for Cloud Control API to use when performing this resource operation. The role specified must have the permissions required for this operation. The necessary permissions for each event handler are defined in the handlers section of the resource type definition schema.

If you do not specify a role, Cloud Control API uses a temporary session created using your AWS user credentials.

For more information, see Specifying credentials in the AWS Cloud Control API User Guide.

Type: String

Length Constraints: Minimum length of 20. Maximum length of 2048.

Pattern: arn:.+:iam::[0-9]{12}:role/.+

Required: No

TypeName

The name of the resource type.

Type: String

Length Constraints: Minimum length of 10. Maximum length of 196.

Pattern: [A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}

Required: Yes

TypeVersionId

For private resource types, the type version to use in this resource operation. If you do not specify a resource version, CloudFormation uses the default version.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 128.

Pattern: [A-Za-z0-9-]+

Required: No

Response Syntax

{ "ProgressEvent": { "ErrorCode": "string", "EventTime": number, "Identifier": "string", "Operation": "string", "OperationStatus": "string", "RequestToken": "string", "ResourceModel": "string", "RetryAfter": number, "StatusMessage": "string", "TypeName": "string" } }

Response Elements

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

ProgressEvent

Represents the current status of the resource creation request.

After you have initiated a resource creation request, you can monitor the progress of your request by calling GetResourceRequestStatus using the RequestToken of the ProgressEvent returned by CreateResource.

Type: ProgressEvent object

Errors

For information about the errors that are common to all actions, see Common Errors.

AlreadyExistsException

The resource with the name requested already exists.

HTTP Status Code: 400

ClientTokenConflictException

The specified client token has already been used in another resource request.

It is best practice for client tokens to be unique for each resource operation request. However, client token expire after 36 hours.

HTTP Status Code: 400

ConcurrentOperationException

Another resource operation is currently being performed on this resource.

HTTP Status Code: 400

GeneralServiceException

The resource handler has returned that the downstream service generated an error that does not map to any other handler error code.

HTTP Status Code: 400

HandlerFailureException

The resource handler has failed without a returning a more specific error code. This can include timeouts.

HTTP Status Code: 400

HandlerInternalFailureException

The resource handler has returned that an unexpected error occurred within the resource handler.

HTTP Status Code: 400

InvalidCredentialsException

The resource handler has returned that the credentials provided by the user are invalid.

HTTP Status Code: 400

InvalidRequestException

The resource handler has returned that invalid input from the user has generated a generic exception.

HTTP Status Code: 400

NetworkFailureException

The resource handler has returned that the request could not be completed due to networking issues, such as a failure to receive a response from the server.

HTTP Status Code: 400

NotStabilizedException

The resource handler has returned that the downstream resource failed to complete all of its ready-state checks.

HTTP Status Code: 400

NotUpdatableException

One or more properties included in this resource operation are defined as create-only, and therefore cannot be updated.

HTTP Status Code: 400

PrivateTypeException

Cloud Control API has not received a valid response from the resource handler, due to a configuration error. This includes issues such as the resource handler returning an invalid response, or timing out.

HTTP Status Code: 400

ResourceConflictException

The resource is temporarily unavailable to be acted upon. For example, if the resource is currently undergoing an operation and cannot be acted upon until that operation is finished.

HTTP Status Code: 400

ResourceNotFoundException

A resource with the specified identifier cannot be found.

HTTP Status Code: 400

ServiceInternalErrorException

The resource handler has returned that the downstream service returned an internal error, typically with a 5XX HTTP status code.

HTTP Status Code: 400

ServiceLimitExceededException

The resource handler has returned that a non-transient resource limit was reached on the service side.

HTTP Status Code: 400

ThrottlingException

The request was denied due to request throttling.

HTTP Status Code: 400

TypeNotFoundException

The specified extension does not exist in the CloudFormation registry.

HTTP Status Code: 400

UnsupportedActionException

The specified resource does not support this resource operation.

HTTP Status Code: 400

Examples

CreateResource

The following example creates a resource of type AWS::Logs::LogGroup named LogGroupResourceExample and with a retention policy of 90 days.

Sample Request

https://cloudcontrolapi.us-east-1.amazonaws.com/ ?Action=CreateResource &TypeName=AWS::Logs::LogGroup &DesiredState={"LogGroupName": "LogGroupResourceExample","RetentionInDays":90} &Version=2021-09-30 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=[Access key ID and scope] &X-Amz-Date=20160316T233349Z &X-Amz-SignedHeaders=content-type;host &X-Amz-Signature=[Signature]

Sample Response

<CreateResourceResponse xmlns="http://cloudcontrol.amazonaws.com/doc/2021-09-30/"> <CreateResourceResult> <ProgressEvent> <Identifier>CloudApiLogGroup</Identifier> <OperationStatus>IN_PROGRESS</OperationStatus> <EventTime>2021-07-27T18:07:16.468Z</EventTime> <TypeName>AWS::Logs::LogGroup</TypeName> <RequestToken>f2fcf5a1-7f17-4c7a-b67f-ab0123456789</RequestToken> <Operation>CREATE</Operation> </ProgressEvent> </CreateResourceResult> <ResponseMetadata> <RequestId>d995ea2f-446c-4688-8656-573123456789</RequestId> </ResponseMetadata> </CreateResourceResponse>

See Also

For more information about using this API in one of the language-specific AWS SDKs, see the following: