Amazon MSK
Amazon MSK (Managed Streaming for Apache Kafka, kafka) on fakecloud: a complete 59-operation control plane (100% conformance). restJson1.
fakecloud implements Amazon MSK (Managed Streaming for Apache Kafka) as a restJson1 service. All 59 operations ship with 100% conformance against AWS's own Smithy model, backed by account-partitioned state that persists across restarts in persistent mode. MSK signs as kafka.
Amazon MSK on fakecloud is a faithful control plane: every Create/Update is reflected by its Describe/List, every Delete deletes, and AWS's async cluster lifecycle is modelled by returning the transient state and settling on the next describe (an interrupted transition reconciles on restart).
The real Apache Kafka broker data plane - topics created on a running Kafka container and GetBootstrapBrokers returning a genuinely reachable endpoint - is a later batch. In this release the topic operations and bootstrap-broker strings are real control-plane behavior: CreateTopic persists a topic that DescribeTopic/ListTopics reflect, and GetBootstrapBrokers returns broker endpoint strings synthesized from the cluster's broker nodes (well-formed b-N.<cluster>...kafka.<region>.amazonaws.com:9092 forms).
Resources
- Clusters -
CreateCluster(provisioned) andCreateClusterV2(provisioned or serverless) return anarn:aws:kafka:<region>:<account>:cluster/<name>/<uuid>-<n>ARN with a monotonic-Nsuffix and aStateofCREATING, settling toACTIVEon the next describe.DescribeClusterreturns the fullClusterInfo;DescribeClusterV2returns theClusterunion shape (provisioned vs serverless).ListClusters/ListClustersV2supportClusterNameFilter(andClusterTypeFilter) plusMaxResults/NextTokenpagination and are region-scoped. A duplicate cluster name in the same account and region is aConflictException.DeleteClustermoves the cluster toDELETINGand the next reconcile reaps it. - Cluster updates -
UpdateBrokerCount,UpdateBrokerStorage,UpdateBrokerType,UpdateClusterConfiguration,UpdateClusterKafkaVersion,UpdateMonitoring,UpdateSecurity,UpdateConnectivity,UpdateStorage,UpdateRebalancing, andRebootBrokereach record aClusterOperation(withOperationTypeand anOperationStatethat settles toUPDATE_COMPLETE), apply the change to the cluster, bump itsCurrentVersion, and move it toUPDATING/REBOOTING_BROKER(settling toACTIVEon the next describe).ListClusterOperations/ListClusterOperationsV2andDescribeClusterOperation/DescribeClusterOperationV2return them. - Broker nodes -
ListNodessynthesizes oneBrokerNodeInfoperNumberOfBrokerNodes(broker id1..=N, client VPC IP, ENI, subnet, endpoints, and current software info).GetBootstrapBrokersreturns the plaintext (:9092), TLS (:9094), SASL/SCRAM (:9096), and SASL/IAM (:9098) connection strings derived from those nodes. - Configurations -
CreateConfigurationstores the base64ServerPropertieswith a monotonic revision list (revision1,CreationTime,Description);UpdateConfigurationadds a revision;DescribeConfigurationRevisionreturns a revision'sServerProperties.ListConfigurations/ListConfigurationRevisionspaginate. - SCRAM secrets -
BatchAssociateScramSecret/BatchDisassociateScramSecretmaintain a per-cluster list of secret ARNs (returningUnprocessedScramSecrets: []);ListScramSecretspaginates them. - Cluster policy -
PutClusterPolicy/GetClusterPolicy/DeleteClusterPolicystore a JSON policy document with aCurrentVersion. - VPC connections & replicators - full CRUD with persistence and faithful shapes, settling to
AVAILABLE(VPC connections) andRUNNING(replicators) on the next read;ListClientVpcConnections/RejectClientVpcConnectioncover the cluster-side view. - Topics (control-plane this batch) -
CreateTopicpersists{TopicName, PartitionCount, ReplicationFactor, Configs};DescribeTopic/ListTopics/DescribeTopicPartitionsreflect it;UpdateTopic/DeleteTopicmutate it. - Versions -
ListKafkaVersionsreturns the supported MSK version catalog (2.8.x through 3.8.x, including KRaft variants) withACTIVEstatus;GetCompatibleKafkaVersionsreturns compatible upgrade targets. - Tags -
TagResource(204) /UntagResource(204) /ListTagsForResourcemaintain an ARN-keyed tag map;CreateCluster/CreateConfiguration/CreateVpcConnection/CreateReplicatorhonour inlineTags, and tags surface on the resource's describe.
Errors
MSK-faithful error shapes: BadRequestException (400), NotFoundException (404), ConflictException (409), and the service's Unauthorized / Forbidden / TooManyRequests / InternalServerError / ServiceUnavailable family, each matching the model's per-operation error list.
Not yet implemented
- The real Apache Kafka broker data plane (topics created on a running Kafka container;
GetBootstrapBrokersreturning a genuinely connectable endpoint). A later batch backs the control plane with a real broker container the way RDS and ElastiCache do. - CloudFormation
AWS::MSK::*resource provisioning (a later batch).
Persistence
All MSK state is account-partitioned and persisted in persistent mode; in-flight lifecycle transitions (clusters, operations, VPC connections, replicators, topics) reconcile on restart.