createFileSystem method
Creates a new, empty file system. The operation requires a creation token in the request that Amazon EFS uses to ensure idempotent creation (calling the operation with same creation token has no effect). If a file system does not currently exist that is owned by the caller's Amazon Web Services account with the specified creation token, this operation does the following:
-
Creates a new, empty file system. The file system will have an Amazon EFS
assigned ID, and an initial lifecycle state
creating. - Returns with the description of the created file system.
FileSystemAlreadyExists
error with the ID of the existing file system.
The idempotent operation allows you to retry a
CreateFileSystem call without risk of creating an extra file
system. This can happen when an initial call fails in a way that leaves it
uncertain whether or not a file system was actually created. An example
might be that a transport level timeout occurred or your connection was
reset. As long as you use the same creation token, if the initial call had
succeeded in creating a file system, the client can learn of its existence
from the FileSystemAlreadyExists error.
For more information, see Creating
a file system in the Amazon EFS User Guide.
This operation accepts an optional PerformanceMode parameter
that you choose for your file system. We recommend
generalPurpose PerformanceMode for all file
systems. The maxIO mode is a previous generation performance
type that is designed for highly parallelized workloads that can tolerate
higher latencies than the generalPurpose mode.
MaxIO mode is not supported for One Zone file systems or file
systems that use Elastic throughput.
The PerformanceMode can't be changed after the file system
has been created. For more information, see Amazon
EFS performance modes.
You can set the throughput mode for the file system using the
ThroughputMode parameter.
After the file system is fully created, Amazon EFS sets its lifecycle
state to available, at which point you can create one or more
mount targets for the file system in your VPC. For more information, see
CreateMountTarget. You mount your Amazon EFS file system on an EC2
instances in your VPC by using the mount target. For more information, see
Amazon
EFS: How it Works.
This operation requires permissions for the
elasticfilesystem:CreateFileSystem action.
File systems can be tagged on creation. If tags are specified in the
creation action, IAM performs additional authorization on the
elasticfilesystem:TagResource action to verify if users have
permissions to create tags. Therefore, you must grant explicit permissions
to use the elasticfilesystem:TagResource action. For more
information, see Granting
permissions to tag resources during creation.
May throw BadRequest.
May throw FileSystemAlreadyExists.
May throw FileSystemLimitExceeded.
May throw InsufficientThroughputCapacity.
May throw InternalServerError.
May throw ThroughputLimitExceeded.
May throw UnsupportedAvailabilityZone.
Parameter availabilityZoneName :
For One Zone file systems, specify the Amazon Web Services Availability
Zone in which to create the file system. Use the format
us-east-1a to specify the Availability Zone. For more
information about One Zone file systems, see EFS
file system types in the Amazon EFS User Guide.
Parameter backup :
Specifies whether automatic backups are enabled on the file system that
you are creating. Set the value to true to enable automatic
backups. If you are creating a One Zone file system, automatic backups are
enabled by default. For more information, see Automatic
backups in the Amazon EFS User Guide.
Default is false. However, if you specify an
AvailabilityZoneName, the default is true.
Parameter creationToken :
A string of up to 64 ASCII characters. Amazon EFS uses this to ensure
idempotent creation.
Parameter encrypted :
A Boolean value that, if true, creates an encrypted file system. When
creating an encrypted file system, you have the option of specifying an
existing Key Management Service key (KMS key). If you don't specify a KMS
key, then the default KMS key for Amazon EFS,
/aws/elasticfilesystem, is used to protect the encrypted file
system.
Parameter kmsKeyId :
The ID of the KMS key that you want to use to protect the encrypted file
system. This parameter is required only if you want to use a non-default
KMS key. If this parameter is not specified, the default KMS key for
Amazon EFS is used. You can specify a KMS key ID using the following
formats:
-
Key ID - A unique identifier of the key, for example
1234abcd-12ab-34cd-56ef-1234567890ab. -
ARN - An Amazon Resource Name (ARN) for the key, for example
arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab. -
Key alias - A previously created display name for a key, for example
alias/projectKey1. -
Key alias ARN - An ARN for a key alias, for example
arn:aws:kms:us-west-2:444455556666:alias/projectKey1.
KmsKeyId, you must set the
CreateFileSystemRequest$Encrypted parameter to true.
Parameter performanceMode :
The performance mode of the file system. We recommend
generalPurpose performance mode for all file systems. File
systems using the maxIO performance mode can scale to higher
levels of aggregate throughput and operations per second with a tradeoff
of slightly higher latencies for most file operations. The performance
mode can't be changed after the file system has been created. The
maxIO mode is not supported on One Zone file systems.
Default is generalPurpose.
Parameter provisionedThroughputInMibps :
The throughput, measured in mebibytes per second (MiBps), that you want to
provision for a file system that you're creating. Required if
ThroughputMode is set to provisioned. Valid
values are 1-3414 MiBps, with the upper limit depending on Region. To
increase this limit, contact Amazon Web Services Support. For more
information, see Amazon
EFS quotas that you can increase in the Amazon EFS User Guide.
Parameter tags :
Use to create one or more tags associated with the file system. Each tag
is a user-defined key-value pair. Name your file system on creation by
including a "Key":"Name","Value":"{value}" key-value pair.
Each key must be unique. For more information, see Tagging
Amazon Web Services resources in the Amazon Web Services General
Reference Guide.
Parameter throughputMode :
Specifies the throughput mode for the file system. The mode can be
bursting, provisioned, or elastic.
If you set ThroughputMode to provisioned, you
must also set a value for ProvisionedThroughputInMibps. After
you create the file system, you can decrease your file system's
Provisioned throughput or change between the throughput modes, with
certain time restrictions. For more information, see Specifying
throughput with provisioned mode in the Amazon EFS User Guide.
Default is bursting.
Implementation
Future<FileSystemDescription> createFileSystem({
String? availabilityZoneName,
bool? backup,
String? creationToken,
bool? encrypted,
String? kmsKeyId,
PerformanceMode? performanceMode,
double? provisionedThroughputInMibps,
List<Tag>? tags,
ThroughputMode? throughputMode,
}) async {
_s.validateNumRange(
'provisionedThroughputInMibps',
provisionedThroughputInMibps,
1.0,
1152921504606846976,
);
final $payload = <String, dynamic>{
if (availabilityZoneName != null)
'AvailabilityZoneName': availabilityZoneName,
if (backup != null) 'Backup': backup,
'CreationToken': creationToken ?? _s.generateIdempotencyToken(),
if (encrypted != null) 'Encrypted': encrypted,
if (kmsKeyId != null) 'KmsKeyId': kmsKeyId,
if (performanceMode != null) 'PerformanceMode': performanceMode.value,
if (provisionedThroughputInMibps != null)
'ProvisionedThroughputInMibps': provisionedThroughputInMibps,
if (tags != null) 'Tags': tags,
if (throughputMode != null) 'ThroughputMode': throughputMode.value,
};
final response = await _protocol.send(
payload: $payload,
method: 'POST',
requestUri: '/2015-02-01/file-systems',
exceptionFnMap: _exceptionFns,
);
return FileSystemDescription.fromJson(response);
}