Services Overview
Floci emulates 51 AWS services on a single port (4566). All services use the real AWS wire protocol, your existing AWS CLI commands and SDK clients work without modification.
This page is the canonical reference for supported service and operation counts. Some services expose separate control-plane and data-plane rows below. Other docs (and the README) should link here rather than duplicating the table.
Service Matrix
Operation counts are exact. For dispatch-table services (Query and JSON 1.1) each count reflects one case per AWS action in the handler. For REST-based services (S3, Lambda, API Gateway v1) the count reflects distinct AWS SDK operations, collapsing routes where one JAX-RS handler fans out via query-string or header markers (e.g. PUT /{bucket}/{key} → PutObject, PutObjectTagging, PutObjectAcl, etc.).
| Service | Endpoint | Protocol | Supported operations |
|---|---|---|---|
| SSM | POST / + X-Amz-Target: AmazonSSM.* |
JSON 1.1 | 12 |
| SQS | POST / with Action= param |
Query / JSON | 20 |
| SNS | POST / with Action= param |
Query / JSON | 17 |
| S3 | /{bucket}/{key} |
REST XML | 58 |
| DynamoDB | POST / + X-Amz-Target: DynamoDB_20120810.* |
JSON 1.1 | 28 |
| DynamoDB Streams | POST / + X-Amz-Target: DynamoDBStreams_20120810.* |
JSON 1.1 | 4 |
| Lambda | /2015-03-31/functions/... |
REST JSON | 30 |
| API Gateway v1 | /restapis/... |
REST JSON | 64 |
| API Gateway v2 | /v2/apis/... |
REST JSON | 48 + data-plane |
| IAM | POST / with Action= param |
Query | 68 |
| STS | POST / with Action= param |
Query | 7 |
| Cognito | POST / + X-Amz-Target: AWSCognitoIdentityProviderService.* |
JSON 1.1 | 43 |
| KMS | POST / + X-Amz-Target: TrentService.* |
JSON 1.1 | 23 |
| Kinesis | POST / + X-Amz-Target: Kinesis_20131202.* |
JSON 1.1 | 24 |
| Secrets Manager | POST / + X-Amz-Target: secretsmanager.* |
JSON 1.1 | 16 |
| Step Functions | POST / + X-Amz-Target: AmazonStatesService.* |
JSON 1.1 | 19 |
| CloudFormation | POST / with Action= param |
Query | 19 |
| EventBridge | POST / + X-Amz-Target: AmazonEventBridge.* |
JSON 1.1 | 16 |
| EventBridge Scheduler | /schedules/*, /schedule-groups/*, /tags/* |
REST JSON | 12 |
| CloudWatch Logs | POST / + X-Amz-Target: Logs.* |
JSON 1.1 | 17 |
| CloudWatch Metrics | POST / with Action= or JSON 1.1 |
Query / JSON | 11 |
| ElastiCache | POST / with Action= param + TCP proxy |
Query + RESP | 8 |
| RDS | POST / with Action= param + TCP proxy |
Query + wire | 14 |
| MSK | /v1/clusters/..., /api/v2/clusters/... + Redpanda broker |
REST JSON + Kafka | 8 |
| Athena | POST / + X-Amz-Target: AmazonAthena.* |
JSON 1.1 | 4 |
| Glue | POST / + X-Amz-Target: AWSGlue.* |
JSON 1.1 | 32 |
| Data Firehose | POST / + X-Amz-Target: Firehose_20150804.* |
JSON 1.1 | 6 |
| ECS | POST / + X-Amz-Target: AmazonEC2ContainerServiceV20141113.* |
JSON 1.1 | 58 |
| EC2 | POST / with Action= param |
EC2 Query | 61 |
| ACM | POST / + X-Amz-Target: CertificateManager.* |
JSON 1.1 | 12 |
| ECR | POST / + X-Amz-Target: AmazonEC2ContainerRegistry_V20150921.* (control plane) and /v2/... (data plane via registry:2) |
JSON 1.1 + OCI Distribution | 17 |
| SES | POST / with Action= param |
Query | 16 |
| SES v2 | /v2/email/* |
REST JSON | 10 |
| OpenSearch | /2021-01-01/opensearch/... |
REST JSON | 24 |
| AppConfig | /applications/..., /deploymentstrategies/... |
REST JSON | 16 |
| AppConfigData | /configurationsessions, /configuration |
REST JSON | 2 |
| Bedrock Runtime | /model/{modelId}/converse, /model/{modelId}/invoke |
REST JSON | 2 (stub; streaming returns 501) |
| EKS | /clusters, /clusters/{name}, /tags/{resourceArn} |
REST JSON | 7 |
| ELB v2 | POST / with Action= param |
Query | 34 |
| Auto Scaling | POST / with Action= param |
Query | 33 |
| CodeBuild | POST / + X-Amz-Target: CodeBuild_20161006.* |
JSON 1.1 | 20 |
| CodeDeploy | POST / + X-Amz-Target: CodeDeploy_20141006.* |
JSON 1.1 | 30 |
| AWS Backup | /backup-vaults/*, /backup/plans/*, /backup-jobs/*, /supported-resource-types |
REST JSON | 20 |
| Route53 | /2013-04-01/hostedzone/*, /2013-04-01/healthcheck/*, /2013-04-01/change/* |
REST XML | 17 |
| AWS Config | POST / + X-Amz-Target: StarlingDoveService.* |
JSON 1.1 | 20 |
| Textract | POST / + X-Amz-Target: Textract.* |
JSON 1.1 | 6 |
| Pricing | POST / + X-Amz-Target: AWSPriceListService.* |
JSON 1.1 | 5 |
| Cost Explorer | POST / + X-Amz-Target: AWSInsightsIndexService.* |
JSON 1.1 | 9 |
| Cost and Usage Reports | POST / + X-Amz-Target: AWSOrigamiServiceGatewayService.* |
JSON 1.1 | 6 |
| BCM Data Exports | POST / + X-Amz-Target: AWSBillingAndCostManagementDataExports.* |
JSON 1.1 | 7 |
| Transfer Family | POST / + X-Amz-Target: TransferService.* |
JSON 1.1 | 17 |
Lambda, ElastiCache, RDS, MSK, ECS, EKS, and OpenSearch spin up real Docker containers and support IAM authentication and SigV4 request signing, the same auth flow as production AWS.
ECR runs a shared registry:2 container so the stock docker client can push and pull image bytes against repositories returned by the AWS-shaped control plane. EKS (real mode) starts a k3s container per cluster and exposes the Kubernetes API server on a host port. OpenSearch (real mode) starts an opensearchproject/opensearch container per domain and exposes the data-plane REST API on a host port.
Common Setup
Before calling any service, configure your AWS client to point to Floci:
export AWS_ENDPOINT_URL=http://localhost:4566
export AWS_DEFAULT_REGION=us-east-1
export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test
AWS_ENDPOINT_URL is the standard env var recognised by the AWS CLI v2 and AWS SDKs v2+, so no --endpoint-url flag is needed on each command.