
# Transfer Family — AWS Transfer Family

Servers and users are stored as records; no SFTP, FTPS or FTP daemon is ever
started, so there is nothing to connect to.

**Status:** ⚠️ Partial

## Quick start

```bash
export AWS_ENDPOINT_URL=http://localhost:4566

SERVER=$(aws transfer create-server --query ServerId --output text)
aws transfer create-user \
  --server-id "$SERVER" \
  --user-name alice \
  --role arn:aws:iam::000000000000:role/transfer-access \
  --home-directory /uploads
aws transfer list-users --server-id "$SERVER"
```

Any credentials work; with none configured, run `eval "$(overcast env)"` first
— see [Using AWS SDKs and CLI](/docs/sdk-cli/index.md#credentials).

## What works

| Area | Behaviour |
| --- | --- |
| Servers | Create, describe, list, update, delete; `State` is `ONLINE` immediately |
| Defaults | `EndpointType` defaults to `PUBLIC` and `IdentityProviderType` to `SERVICE_MANAGED` |
| Users | Create, describe, list, update, delete, with `Role`, `HomeDirectory` and `Policy` stored |
| Cascade delete | Deleting a server deletes its users |
| Tags | Inline `Tags` on create, plus `TagResource`, `UntagResource` and `ListTagsForResource` on server and user ARNs |

## Differences from AWS

| Area                                                      | On AWS                                                                     | Overcast                                                                                                                                                |
| --- | --- | --- |
| Data plane | SFTP, FTPS and FTP are served | No file-transfer protocol is served, so no client can log in and no file moves |
| S3 or EFS binding | `HomeDirectory` maps to a bucket or file system | A stored string that maps to nothing |
| Server fields | Stored and applied | `Protocols`, `EndpointDetails`, `LoggingRole`, `Domain` and `SecurityPolicyName` are discarded; only `EndpointType` and `IdentityProviderType` are kept |
| User fields | Stored and applied | `HomeDirectoryType`, `HomeDirectoryMappings`, `PosixProfile` and `SshPublicKeyBody` are discarded; only `Role`, `HomeDirectory` and `Policy` are kept |
| Authentication | SSH public keys, service-managed credentials and custom identity providers | None of it is exercised |
| Endpoint address | `DescribeServer` reports a hostname, VPC endpoint or Elastic IP | It reports none of them |
| Server ids | Random | Sequential — `s-00000001`, `s-00000002`, … |
| Agreements, certificates, connectors, profiles, workflows | Full API | Not emulated, and their ARNs are refused by the tag operations |

<!-- BEGIN overcast:capabilities -->

## Operations

All 13 listed operations are implemented.
Per-operation status, notes and AWS API links: [Transfer Family operations](/docs/services/transfer/operations/index.md).

<!-- END overcast:capabilities -->

## Related

- [S3](/docs/services/s3/index.md) — the storage a real Transfer server would front
- [All service pages](/docs/services/index.md)
- [Service names and state overrides](/docs/configuration/index.md#service-names)
- [AWS API reference](https://docs.aws.amazon.com/transfer/latest/userguide/API_Reference.html)
