Skip to content

Commit 971ea29

Browse files
authored
feat(transfer): AWS Transfer Family service (71 ops, awsJson1.1, 100% conformance) (#2129)
2 parents 8216ce9 + d08058d commit 971ea29

49 files changed

Lines changed: 16423 additions & 49 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/release.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ jobs:
211211
publish fakecloud-opensearch # only core/persistence/aws deps (ES + OpenSearch)
212212
publish fakecloud-backup # only core/persistence/aws deps
213213
publish fakecloud-glacier # only core/persistence/aws deps
214+
publish fakecloud-transfer # only core/persistence/aws deps
214215
publish fakecloud-kinesis
215216
publish fakecloud-scheduler
216217
publish fakecloud-bedrock

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Local AWS cloud emulator. Part of the faisca project family.
55
## Product Context
66

77
- FakeCloud is a local AWS emulator focused on high-fidelity behavior and AWS-compatible responses.
8-
- Current project state: 60 AWS services, 4,625 operations, 152,159/152,159 Smithy conformance variants pass — true 100% across every implemented service, no flake margin. See [the parity matrix](website/content/docs/parity.md) for the full service-by-service breakdown of control-plane vs data-plane coverage and known limitations.
8+
- Current project state: 61 AWS services, 4,696 operations, 154,915/154,915 Smithy conformance variants pass — true 100% across every implemented service, no flake margin. See [the parity matrix](website/content/docs/parity.md) for the full service-by-service breakdown of control-plane vs data-plane coverage and known limitations.
99
- The broader roadmap prioritizes services that LocalStack keeps behind paid tiers, especially ECS, ELB/ALB, CloudFront, CloudWatch Metrics, and EC2.
1010
- Introspection SDKs (Rust, Python, TypeScript, Go, PHP, Java) are already built and maintained for the `/_fakecloud/*` endpoints.
1111

Cargo.lock

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[workspace]
2-
members = [ "crates/fakecloud-account", "crates/fakecloud-acm", "crates/fakecloud-apigateway", "crates/fakecloud-apigatewayv2", "crates/fakecloud-application-autoscaling", "crates/fakecloud-autoscaling", "crates/fakecloud-athena", "crates/fakecloud-aws", "crates/fakecloud-batch", "crates/fakecloud-bedrock", "crates/fakecloud-bedrock-agent", "crates/fakecloud-bedrock-agent-runtime", "crates/fakecloud-cloudcontrol", "crates/fakecloud-cloudformation", "crates/fakecloud-cloudfront", "crates/fakecloud-backup", "crates/fakecloud-cloudwatch", "crates/fakecloud-cognito", "crates/fakecloud-conformance", "crates/fakecloud-conformance-macros", "crates/fakecloud-core", "crates/fakecloud-dms", "crates/fakecloud-dsql", "crates/fakecloud-dynamodb", "crates/fakecloud-e2e", "crates/fakecloud-ec2", "crates/fakecloud-ecr", "crates/fakecloud-ecs", "crates/fakecloud-eks", "crates/fakecloud-glacier", "crates/fakecloud-elasticache", "crates/fakecloud-memorydb", "crates/fakecloud-elbv2", "crates/fakecloud-eventbridge", "crates/fakecloud-firehose", "crates/fakecloud-glue", "crates/fakecloud-iam", "crates/fakecloud-identitystore", "crates/fakecloud-ssoadmin", "crates/fakecloud-verifiedpermissions", "crates/fakecloud-kinesis", "crates/fakecloud-kms", "crates/fakecloud-k8s", "crates/fakecloud-lambda", "crates/fakecloud-logs", "crates/fakecloud-opensearch", "crates/fakecloud-organizations", "crates/fakecloud-parity", "crates/fakecloud-persistence", "crates/fakecloud-pipes", "crates/fakecloud-rds", "crates/fakecloud-rds-data", "crates/fakecloud-redshift", "crates/fakecloud-resource-groups", "crates/fakecloud-resource-groups-tagging", "crates/fakecloud-route53", "crates/fakecloud-s3", "crates/fakecloud-scheduler", "crates/fakecloud-sdk", "crates/fakecloud-secretsmanager", "crates/fakecloud-server", "crates/fakecloud-servicediscovery", "crates/fakecloud-ses", "crates/fakecloud-sns", "crates/fakecloud-sqs", "crates/fakecloud-ssm", "crates/fakecloud-stepfunctions", "crates/fakecloud-testkit", "crates/fakecloud-tfacc", "crates/fakecloud-wafv2",]
2+
members = [ "crates/fakecloud-account", "crates/fakecloud-acm", "crates/fakecloud-apigateway", "crates/fakecloud-apigatewayv2", "crates/fakecloud-application-autoscaling", "crates/fakecloud-autoscaling", "crates/fakecloud-athena", "crates/fakecloud-aws", "crates/fakecloud-batch", "crates/fakecloud-bedrock", "crates/fakecloud-bedrock-agent", "crates/fakecloud-bedrock-agent-runtime", "crates/fakecloud-cloudcontrol", "crates/fakecloud-cloudformation", "crates/fakecloud-cloudfront", "crates/fakecloud-backup", "crates/fakecloud-cloudwatch", "crates/fakecloud-cognito", "crates/fakecloud-conformance", "crates/fakecloud-conformance-macros", "crates/fakecloud-core", "crates/fakecloud-dms", "crates/fakecloud-dsql", "crates/fakecloud-dynamodb", "crates/fakecloud-e2e", "crates/fakecloud-ec2", "crates/fakecloud-ecr", "crates/fakecloud-ecs", "crates/fakecloud-eks", "crates/fakecloud-glacier", "crates/fakecloud-elasticache", "crates/fakecloud-memorydb", "crates/fakecloud-elbv2", "crates/fakecloud-eventbridge", "crates/fakecloud-firehose", "crates/fakecloud-glue", "crates/fakecloud-iam", "crates/fakecloud-identitystore", "crates/fakecloud-ssoadmin", "crates/fakecloud-verifiedpermissions", "crates/fakecloud-kinesis", "crates/fakecloud-kms", "crates/fakecloud-k8s", "crates/fakecloud-lambda", "crates/fakecloud-logs", "crates/fakecloud-opensearch", "crates/fakecloud-organizations", "crates/fakecloud-parity", "crates/fakecloud-persistence", "crates/fakecloud-pipes", "crates/fakecloud-rds", "crates/fakecloud-rds-data", "crates/fakecloud-redshift", "crates/fakecloud-resource-groups", "crates/fakecloud-resource-groups-tagging", "crates/fakecloud-route53", "crates/fakecloud-s3", "crates/fakecloud-scheduler", "crates/fakecloud-sdk", "crates/fakecloud-secretsmanager", "crates/fakecloud-server", "crates/fakecloud-servicediscovery", "crates/fakecloud-ses", "crates/fakecloud-sns", "crates/fakecloud-sqs", "crates/fakecloud-ssm", "crates/fakecloud-stepfunctions", "crates/fakecloud-testkit", "crates/fakecloud-tfacc", "crates/fakecloud-transfer", "crates/fakecloud-wafv2",]
33
resolver = "2"
44

55
[workspace.package]
@@ -209,6 +209,10 @@ version = "0.34.1"
209209
path = "crates/fakecloud-dms"
210210
version = "0.34.1"
211211

212+
[workspace.dependencies.fakecloud-transfer]
213+
path = "crates/fakecloud-transfer"
214+
version = "0.34.1"
215+
212216
[workspace.dependencies.fakecloud-dsql]
213217
path = "crates/fakecloud-dsql"
214218
version = "0.34.1"

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Works as a drop-in for LocalStack in CI, with Terraform (`endpoints` block), CDK
3636
## Why fakecloud
3737

3838
- **Free, forever.** AGPL-3.0, no paid tier, no account, no token.
39-
- **True 100% conformance.** 152,159 Smithy-model-generated test variants pass on every commit, validated against AWS's own Smithy models. CI also runs upstream `terraform-provider-aws` `TestAcc*` suites to catch waiter/field/drift bugs that SDK tests miss.
39+
- **True 100% conformance.** 154,915 Smithy-model-generated test variants pass on every commit, validated against AWS's own Smithy models. CI also runs upstream `terraform-provider-aws` `TestAcc*` suites to catch waiter/field/drift bugs that SDK tests miss.
4040
- **Real cross-service wiring.** EventBridge -> Step Functions, S3 -> Lambda, SES inbound -> S3/SNS/Lambda, and 15+ more integrations execute end-to-end.
4141
- **Real infrastructure for stateful services.** Lambda (23 runtimes), RDS (Postgres/MySQL/MariaDB/Oracle/SQL Server/Db2), ElastiCache (Redis/Valkey/Memcached), ECS, and EC2 run as real containers. Use Docker (default) or native Kubernetes Pods via `FAKECLOUD_CONTAINER_BACKEND=k8s`. See the [Kubernetes backend guide](https://fakecloud.dev/docs/guides/kubernetes-backend/).
4242
- **Single binary.** ~19 MB, ~10 MiB idle, ~300ms startup. No Docker needed to run fakecloud itself.
@@ -47,7 +47,7 @@ Works as a drop-in for LocalStack in CI, with Terraform (`endpoints` block), CDK
4747

4848
## Supported services
4949

50-
60 services, 4,625 operations, true 100% conformance across every implemented service. Notes below are one-liners; the [parity matrix](https://fakecloud.dev/docs/parity/) has full control-plane vs data-plane coverage and known limitations per service.
50+
61 services, 4,696 operations, true 100% conformance across every implemented service. Notes below are one-liners; the [parity matrix](https://fakecloud.dev/docs/parity/) has full control-plane vs data-plane coverage and known limitations per service.
5151

5252
| Service | Ops | Notes |
5353
| ------------------------- | --- | ----- |
@@ -74,6 +74,7 @@ Works as a drop-in for LocalStack in CI, with Terraform (`endpoints` block), CDK
7474
| RDS Data API | 6 | Real SQL on the backing Postgres/MySQL container, typed params/results incl. `bytea`/`BLOB`, transactions, batch |
7575
| Redshift | 141 | Full control plane: clusters, snapshots, parameter/subnet groups, snapshot schedules, endpoint access, logging, cross-region snapshot-copy config, tagging |
7676
| Database Migration Service | 119 | Full control plane: replication instances/tasks/endpoints, subnet groups, event subscriptions, certificates, serverless replication configs, data providers, instance profiles, migration projects, schema conversion, Fleet Advisor, tagging; persisted. No data-migration engine |
77+
| Transfer Family | 71 | Full control plane: SFTP/FTPS/FTP/AS2 servers (start/stop settle state), users + SSH keys, host keys, accesses, workflows + executions, agreements, connectors (`TestConnection`, file transfer, directory listing, remote delete/move), profiles, certificates, security policies, web apps, `TestIdentityProvider`, tagging; persisted. No SFTP/AS2 transport engine |
7778
| Aurora DSQL | 16 | Serverless distributed Postgres control plane: clusters, resource policies, change streams to Kinesis, multi-region, tagging |
7879
| Resource Groups | 23 | Groups by tag/CloudFormation-stack query, explicit membership, group configuration, tagging, account settings, tag-sync tasks |
7980
| Resource Groups Tagging API | 9 | Cross-service tag reads/writes, compliance summary, tag reports, backed by a real cross-service tag index |
@@ -126,6 +127,7 @@ Per-service docs and feature matrices: [fakecloud.dev/docs/services](https://fak
126127
| RDS Data API | 6 ops, real SQL + typed results + transactions on the RDS container | [Paid only](https://docs.localstack.cloud/references/licensing/) |
127128
| Redshift | 141 ops, full control plane free (clusters, snapshots, endpoint access, logging) | [Paid only](https://docs.localstack.cloud/references/licensing/) |
128129
| Database Migration Service | 119 ops, full control plane free (replication instances/tasks/endpoints, subnet groups, serverless configs, schema conversion) | [Paid only](https://docs.localstack.cloud/references/licensing/) |
130+
| Transfer Family | 71 ops, full control plane free (servers, users, SSH/host keys, accesses, workflows, agreements, connectors, profiles, certificates, web apps) | [Paid only](https://docs.localstack.cloud/references/licensing/) |
129131
| Aurora DSQL | 16 ops, full control plane free (clusters, policies, streams, tagging) | [Paid only](https://docs.localstack.cloud/references/licensing/) |
130132
| Resource Groups | 23 ops, groups + queries + membership + tag-sync, free | [Paid only](https://docs.localstack.cloud/references/licensing/) |
131133
| Resource Groups Tagging API | 9 ops, cross-service tag reads/writes + reports, free | [Paid only](https://docs.localstack.cloud/references/licensing/) |

aws-models/service-map.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,5 +238,9 @@
238238
"dms": {
239239
"repo_dir": "database-migration-service",
240240
"service_name": "dms"
241+
},
242+
"transfer": {
243+
"repo_dir": "transfer",
244+
"service_name": "transfer"
241245
}
242246
}

0 commit comments

Comments
 (0)