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 -
CreateFileSystemreturns afs--prefixed id with aLifeCycleStateofcreatingand settles toavailableon the nextDescribeFileSystems(an interrupted transition reconciles on restart).CreationTokenis honoured as the idempotency token, so a repeat create with the same token returnsFileSystemAlreadyExists. The description carries theSizeInBytesbreakdown,PerformanceMode,ThroughputMode(ProvisionedThroughputInMibpswhen provisioned),Encrypted+KmsKeyId, the liveNumberOfMountTargets, andFileSystemProtection(ReplicationOverwriteProtection, toggled byUpdateFileSystemProtection).DeleteFileSystemreturnsFileSystemInUsewhile mount targets remain. - Mount targets - one per Availability Zone per file system (
MountTargetConflictotherwise). 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 requestedIpAddress,IpAddressInUsewhen taken), visible through EC2DescribeNetworkInterfacesand deleted with the mount target. Security groups must exist in the subnet's VPC (SecurityGroupNotFound, at most five); without any, the VPC'sdefaultgroup is used.fsmt-ids,LifeCycleState(creating->available), andOwnerIdmatch AWS.ModifyMountTargetSecurityGroups/DescribeMountTargetSecurityGroupsround-trip the security-group list onto the network interface. - Access points -
fsap-ids,PosixUser, andRootDirectory(defaulting to/), withClientTokenidempotency (AccessPointAlreadyExists). - Lifecycle configuration, backup policy, and file-system resource policy each persist and read back through their
Put/Describepair (DescribeFileSystemPolicyreturnsPolicyNotFoundwhen unset). - Replication configurations -
CreateReplicationConfigurationrecords a destination (synthesizing the destination file system id) and settles the destinationStatustoENABLED;DescribeReplicationConfigurationsandDeleteReplicationConfigurationcomplete the lifecycle. - Tagging - both the resource-id tagging API (
TagResource,UntagResource,ListTagsForResourceoverfs-/fsap-resources) and the deprecated per-file-system API (CreateTags,DeleteTags,DescribeTags). ANametag surfaces as the file system'sName. - Account preferences -
PutAccountPreferences/DescribeAccountPreferencespersist 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.