Amazon EFS

Amazon Elastic File System (elasticfilesystem) on fakecloud: a complete 31-operation control plane (100% conformance) - file systems, mount targets, access points, lifecycle/backup/policy configuration, replication, tagging, and account preferences. restJson1.

fakecloud implements Amazon Elastic File System (EFS) as a restJson1 service. All 31 operations ship with 100% conformance against AWS's own Smithy model, backed by account-partitioned state that persists across restarts in persistent mode.

EFS on fakecloud is a faithful control plane: every Create/Put/Update is reflected by its Describe, every Delete deletes, and AWS's asynchronous resource lifecycle is modelled - not faked. No real NFS file system is served (fakecloud models the AWS management API, not the mount data plane).

Resources

  • File systems - CreateFileSystem returns a fs--prefixed id with a LifeCycleState of creating and settles to available on the next DescribeFileSystems (an interrupted transition reconciles on restart). CreationToken is honoured as the idempotency token, so a repeat create with the same token returns FileSystemAlreadyExists. The description carries the SizeInBytes breakdown, PerformanceMode, ThroughputMode (ProvisionedThroughputInMibps when provisioned), Encrypted + KmsKeyId, the live NumberOfMountTargets, and FileSystemProtection (ReplicationOverwriteProtection, toggled by UpdateFileSystemProtection). DeleteFileSystem returns FileSystemInUse while mount targets remain.
  • Mount targets - one per Availability Zone per file system (MountTargetConflict otherwise). The subnet must exist in EC2 (SubnetNotFound), and the AZ, AZ id and VPC come from it. Like EFS, the mount target creates a requester-managed network interface in the subnet (EFS mount target for fs-... (fsmt-...)) whose IP is taken from the subnet's CIDR (or the requested IpAddress, IpAddressInUse when taken), visible through EC2 DescribeNetworkInterfaces and deleted with the mount target. Security groups must exist in the subnet's VPC (SecurityGroupNotFound, at most five); without any, the VPC's default group is used. fsmt- ids, LifeCycleState (creating -> available), and OwnerId match AWS. ModifyMountTargetSecurityGroups / DescribeMountTargetSecurityGroups round-trip the security-group list onto the network interface.
  • Access points - fsap- ids, PosixUser, and RootDirectory (defaulting to /), with ClientToken idempotency (AccessPointAlreadyExists).
  • Lifecycle configuration, backup policy, and file-system resource policy each persist and read back through their Put/Describe pair (DescribeFileSystemPolicy returns PolicyNotFound when unset).
  • Replication configurations - CreateReplicationConfiguration records a destination (synthesizing the destination file system id) and settles the destination Status to ENABLED; DescribeReplicationConfigurations and DeleteReplicationConfiguration complete the lifecycle.
  • Tagging - both the resource-id tagging API (TagResource, UntagResource, ListTagsForResource over fs-/fsap- resources) and the deprecated per-file-system API (CreateTags, DeleteTags, DescribeTags). A Name tag surfaces as the file system's Name.
  • Account preferences - PutAccountPreferences / DescribeAccountPreferences persist the resource-id-type preference.

Identifiers and shapes

Resource ids (fs-/fsmt-/fsap- + 17 hex characters), ARNs (arn:aws:elasticfilesystem:<region>:<account>:file-system/<id> and .../access-point/<id>), OwnerId, and timestamps match AWS's formats. Model-derived @length/@range/enum/pattern constraints are enforced, so malformed input returns BadRequest (or the operation's declared not-found) exactly as AWS does.