feat(transfer): AWS Transfer Family service (71 ops, awsJson1.1, 100% conformance)#2129
Merged
Conversation
… conformance) New fakecloud-transfer crate implementing the full 71-operation AWS Transfer Family control plane (awsJson1.1, target prefix TransferService): SFTP/FTPS/FTP/ AS2 servers with synchronous ONLINE/OFFLINE state transitions, users + SSH public keys, host keys, service-managed accesses, workflows + executions, AS2 agreements, connectors (SFTP + AS2, with TestConnection, StartFileTransfer, StartDirectoryListing, StartRemoteDelete/Move, ListFileTransferResults), profiles, certificates, the managed security-policy catalogue, web apps (+ customization), TestIdentityProvider, and tagging. - Real CRUD: create/import is reflected by describe/list, update mutates, delete removes; nested config round-trips verbatim. AWS-shaped IDs and ARNs. - Model-derived input validation (string @Length, integer @range, enum sets) returning InvalidRequestException; ResourceNotFoundException for missing parents/resources; ResourceExistsException on duplicates. - Account-partitioned state with snapshot persistence + restore. - Protocol routing wired in core::protocol and conformance service_detection. - Registered in the server, workspace members + version-pinned workspace dep, release.yml publish list, conformance audit map, and tfacc allowlist/shard/ endpoint env (TestAccTransfer(Server|User|SSHKey|Access)_basic). - Conformance: 71/71 ops, 2756/2756 Smithy probe variants pass; baseline + doc-counts (parity, operations index, service lists) updated. - Tests: 11 e2e CRUD/lifecycle/error tests + persistence round-trip.
There was a problem hiding this comment.
Pull request overview
Adds a new AWS Transfer Family control-plane implementation to FakeCloud, wiring it into protocol detection, persistence, conformance, Terraform acceptance CI, and public docs so Transfer becomes a first-class, conformance-tested service in the emulator.
Changes:
- Introduce
fakecloud-transfercrate implementing Transfer (awsJson1.1,TransferService.*) with persisted, account-partitioned state plus model-derived input validation. - Register Transfer in the server, protocol routing, conformance probe/audit/baseline, and tfacc allowlist/sharding.
- Update website/docs/readme/service indices and global service/operation/conformance counts to include Transfer.
Reviewed changes
Copilot reviewed 47 out of 49 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| website/templates/index.html | Updates homepage proof points for service/operation/variant totals |
| website/static/llms.txt | Updates LLM-facing summary counts and variant totals |
| website/static/llms-full.txt | Updates detailed LLM-facing coverage/persistence counts |
| website/content/vs/sam-local.md | Updates comparison page metadata and conformance variant totals |
| website/content/vs/moto.md | Updates comparison table conformance variant totals |
| website/content/vs/ministack.md | Updates comparison copy and conformance variant totals |
| website/content/vs/localstack.md | Updates comparison table conformance variant totals |
| website/content/vs/floci.md | Updates comparison copy and conformance variant totals |
| website/content/vs/elasticmq.md | Updates comparison copy service count |
| website/content/supported-services.md | Updates supported-services page counts and adds Transfer entry |
| website/content/localstack-alternative.md | Updates alternative landing page counts and variant totals |
| website/content/glossary.md | Updates glossary conformance variant total |
| website/content/faq.md | Updates FAQ counts and embedded JSON-LD answer text |
| website/content/fake-bedrock.md | Updates landing page conformance variant total |
| website/content/fake-aws-server.md | Updates landing page counts/variant totals |
| website/content/dynamodb-emulator.md | Updates DynamoDB page conformance variant total |
| website/content/docs/services/transfer.md | Adds new Transfer Family service documentation page |
| website/content/docs/services/_index.md | Updates services index intro and adds Transfer row |
| website/content/docs/parity.md | Updates parity matrix totals and adds Transfer row |
| website/content/docs/operations/_index.md | Adds Transfer operation list section |
| website/content/docs/migration-from-localstack.md | Updates migration guide operation count |
| website/content/docs/about/what-it-is.md | Updates “what it is” counts/variant totals |
| website/content/docs/about/conformance.md | Updates conformance coverage counts/variant totals |
| scripts/update-aws-models.sh | Adds Transfer to model update script service list |
| scripts/generate-operations-index.sh | Adds Transfer to operations index generator |
| README.md | Updates repo-level counts and adds Transfer to supported services tables |
| crates/fakecloud-transfer/tests/service_tests.rs | Adds end-to-end handler-driven CRUD/lifecycle/error tests for Transfer |
| crates/fakecloud-transfer/src/validate.rs | Adds model-derived top-level input validation rules for Transfer ops |
| crates/fakecloud-transfer/src/state.rs | Adds serializable, account-partitioned Transfer state model |
| crates/fakecloud-transfer/src/service.rs | Implements Transfer dispatch and the 71 operation handlers |
| crates/fakecloud-transfer/src/persistence.rs | Implements snapshot save/load for Transfer state |
| crates/fakecloud-transfer/src/lib.rs | Exposes Transfer service/state/persistence modules |
| crates/fakecloud-transfer/Cargo.toml | Adds new crate manifest and dependencies |
| crates/fakecloud-tfacc/tests/acc.rs | Adds Transfer shard test entrypoint |
| crates/fakecloud-tfacc/src/lib.rs | Adds Transfer endpoint env var mapping |
| crates/fakecloud-tfacc/src/allowlist.rs | Adds Transfer service allowlist entry + CI shard definition |
| crates/fakecloud-server/src/main.rs | Wires Transfer state init, snapshot load, and service registration |
| crates/fakecloud-server/Cargo.toml | Adds fakecloud-transfer dependency to server |
| crates/fakecloud-core/src/protocol.rs | Adds TransferService X-Amz-Target prefix -> transfer routing |
| crates/fakecloud-conformance/tests/transfer.rs | Adds Transfer conformance probe test_action list |
| crates/fakecloud-conformance/src/probe/service_detection.rs | Adds Transfer protocol detection metadata |
| crates/fakecloud-conformance/src/audit.rs | Adds Transfer -> source file mapping for conformance audit |
| conformance-baseline.json | Updates global/per-service conformance variant baseline to include Transfer |
| Cargo.toml | Adds workspace member and workspace dependency entry for fakecloud-transfer |
| Cargo.lock | Adds lock entries for the new crate |
| aws-models/service-map.json | Adds Transfer model mapping |
| AGENTS.md | Updates repo-level service/ops/variant totals |
| .github/workflows/release.yml | Adds fakecloud-transfer to release publish list |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| <div class="label">Tested</div> | ||
| <h3>Conformance tested</h3> | ||
| <p>True 100% conformance across all 3,932 implemented API operations: 152,159/152,159 Smithy-model-generated test variants pass on every commit, backed by end-to-end tests against the official AWS SDKs.</p> | ||
| <p>True 100% conformance across all 3,932 implemented API operations: 154,915/154,915 Smithy-model-generated test variants pass on every commit, backed by end-to-end tests against the official AWS SDKs.</p> |
| +++ | ||
|
|
||
| fakecloud implements 60 AWS services with 3,966 total operations. 152,159/152,159 generated Smithy conformance variants pass on every commit — true 100% across the board. Per-service feature matrices and gotchas live on individual service pages — use the sidebar to navigate. | ||
| fakecloud implements 61 AWS services with 3,966 total operations. 154,915/154,915 generated Smithy conformance variants pass on every commit — true 100% across the board. Per-service feature matrices and gotchas live on individual service pages — use the sidebar to navigate. |
Comment on lines
9
to
13
| ## Coverage Summary | ||
| - **Total Services**: 54 | ||
| - **Total Operations**: 4,220 | ||
| - **Conformance Engine**: 152,159 Smithy-based test variants | ||
| - **Conformance Engine**: 154,915 Smithy-based test variants | ||
| - **Startup Time**: ~300ms |
| AWS SAM Local is AWS's official tool for running Lambda functions locally. It invokes Lambda inside a Docker container with the real AWS runtime image, and provides a limited HTTP / API Gateway surface in front. | ||
|
|
||
| fakecloud runs Lambda the same way — real runtime containers, 23 runtimes supported — and also runs 46 other AWS services end-to-end at true 100% Smithy conformance (152,159/152,159 variants pass). | ||
| fakecloud runs Lambda the same way — real runtime containers, 23 runtimes supported — and also runs 46 other AWS services end-to-end at true 100% Smithy conformance (154,915/154,915 variants pass). |
Comment on lines
+148
to
+153
| /// Read/test operations never mutate state. Everything else (Create, Import, | ||
| /// Update, Delete, Start, Stop, Send, Tag, Untag) can, so it triggers a | ||
| /// snapshot save on success. | ||
| fn is_mutating(action: &str) -> bool { | ||
| !(action.starts_with("Describe") || action.starts_with("List") || action.starts_with("Test")) | ||
| } |
Comment on lines
+514
to
+521
| if let Some(arn) = srv.get("Arn").and_then(Value::as_str) { | ||
| data.tags.remove(arn); | ||
| } | ||
| let prefix = format!("{server_id}/"); | ||
| data.users.retain(|k, _| !k.starts_with(&prefix)); | ||
| data.accesses.retain(|k, _| !k.starts_with(&prefix)); | ||
| data.host_keys.retain(|k, _| !k.starts_with(&prefix)); | ||
| data.agreements.retain(|k, _| !k.starts_with(&prefix)); |
This was referenced Jul 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
New
fakecloud-transfercrate implementing the full AWS Transfer Family control plane — all 71 operations, awsJson1.1 (X-Amz-Target: TransferService.*), sigv4transfer. Real handlers, no stubs, no skipped ops.Covers servers (+ Start/Stop lifecycle), users, SSH public keys, host keys, accesses, workflows (+ executions, SendWorkflowStepState), agreements, connectors (+ TestConnection, file-transfer ops, ListFileTransferResults), profiles, certificates, web apps (+ customization), security policies (real AWS managed-policy catalogue), TestIdentityProvider, and tagging. Create/import -> describe/list reflects -> update mutates -> delete removes; Start/StopServer settle
Statesynchronously; DescribeServer reports liveUserCount. AWS-shaped IDs (s-/w-/c-/a-/p-/cert-/hostkey-/webapp-) and ARNs.Errors:
ResourceNotFoundException/InvalidRequestException/ResourceExistsException, matching the model. Model-derived input validation (validate.rs) for enum/length/range constraints.Conformance
cargo run -p fakecloud-conformance -- run --services transfer-> 71/71 ops, 2756/2756 variants, 100%. Audit passes (all implemented actions have conformance tests). Baseline updated surgically;scripts/check-doc-counts.shgreen (60->61 services, 4625->4696 ops).Surface synced (same PR)
Protocol routing (protocol.rs + service_detection.rs), server registration + persistence (snapshot save/load/restore), workspace member + version-pinned workspace dep, release.yml publish list, audit.rs map, operations index,
aws-models/transfer.json+ service-map, websiteservices/transfer.md, and the evergreen count sweep (READMEs, supported-services, AGENTS, llms.txt). tfacc:transfershard (^TestAccTransfer(Server|User|SSHKey|Access)_basic$) +AWS_ENDPOINT_URL_TRANSFER.SDKs: no change (Transfer is a normal AWS service with no new
/_fakecloud/*introspection endpoint — checked conclusion).Test plan
cargo clippy --workspace --all-targets -- -D warningsclean;cargo build --bin fakecloud+--workspacesucceed.Summary by cubic
Add
fakecloud-transfer: full AWS Transfer Family control plane (transfer, awsJson1.1) with real, persisted state and 100% conformance. This raises coverage to 61 services and 4,696 operations.TransferService, server registration, and release publishing wired.AWS_ENDPOINT_URL_TRANSFER.Written for commit d08058d. Summary will update on new commits.