Cloud Control API
Protocol: JSON 1.1 (X-Amz-Target: CloudApiService.*)
Endpoint: POST http://localhost:4566/
Cloud Control provides a uniform CRUD(L) surface over CloudFormation resource types
(AWS::S3::Bucket, AWS::EC2::Instance, ...) instead of a bespoke API per service.
Floci's emulator reuses the same resource provisioner CloudFormation stacks call, so a
resource behaves consistently whether it's provisioned by a stack or directly through
Cloud Control.
Supported Operations
| Operation | Description |
|---|---|
CreateResource |
Provision a resource of the given TypeName from a DesiredState JSON document |
DeleteResource |
Delete a resource by TypeName and Identifier |
GetResource |
Read a resource's current properties by TypeName and Identifier |
ListResources |
List resources of a TypeName |
GetResourceRequestStatus |
Poll a CreateResource/DeleteResource request by its token |
Behavior
- Asynchronous create/delete:
CreateResourcereturns anIN_PROGRESSProgressEventand a request token immediately; provisioning runs in the background. PollGetResourceRequestStatuswith the token until the status isSUCCESSorFAILED.DeleteResourceis synchronous (deletes are fast enough not to need polling) but still returns aProgressEventfor API-shape consistency. ListResources/GetResourcetype coverage: the read side listsAWS::S3::Bucket,AWS::EC2::VPC,AWS::EC2::Subnet,AWS::EC2::SecurityGroup,AWS::EC2::Instance,AWS::EC2::LaunchTemplate,AWS::IAM::Role,AWS::IAM::User, andAWS::IAM::InstanceProfile.CreateResourceaccepts any type the underlying CloudFormation resource provisioner supports (the same set stacks can provision), which is broader than the read side. A resource created through Cloud Control but outside the read-side type list is still readable viaGetResource, from create-time state, but will not appear inListResources.ListResourceson an unlisted type:TypeNamevalues outside the list above fail withUnsupportedActionException(HTTP 400) instead of returning an emptyResourceDescriptions. This applies to any type Floci does not enumerate on the read side, whether or not the type is real in AWS, since Floci has no CloudFormation type registry to tell the two apart.- Delete needs create-time state: types whose delete depends on attributes
captured at create time (currently
AWS::EKS::NodegroupandAWS::IAM::Policy, plus anyCustom::*/AWS::CloudFormation::CustomResource) failDeleteResourcewith a clear error if that state isn't held, rather than reportingSUCCESSover a resource that's still there. - No account context: Cloud Control requests don't carry an account id; Floci uses
its default test account (
000000000000) for all resources.