createFileSystem method
- String? creationToken,
- bool? encrypted,
- String? kmsKeyId,
- PerformanceMode? performanceMode,
- double? provisionedThroughputInMibps,
- List<
Tag> ? tags, - ThroughputMode? throughputMode,
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 AWS 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.
This operation also takes an optional PerformanceMode
parameter that you choose for your file system. We recommend
generalPurpose
performance mode for most 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. For more
information, see Amazon
EFS: Performance Modes.
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.
May throw BadRequest. May throw InternalServerError. May throw FileSystemAlreadyExists. May throw FileSystemLimitExceeded. May throw InsufficientThroughputCapacity. May throw ThroughputLimitExceeded.
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
CreateFileSystemRequest$KmsKeyId for an existing AWS Key Management
Service (AWS KMS) customer master key (CMK). If you don't specify a CMK,
then the default CMK for Amazon EFS, /aws/elasticfilesystem
,
is used to protect the encrypted file system.
Parameter kmsKeyId
:
The ID of the AWS KMS CMK to be used to protect the encrypted file system.
This parameter is only required if you want to use a nondefault CMK. If
this parameter is not specified, the default CMK for Amazon EFS is used.
This ID can be in one of 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
is specified, the
CreateFileSystemRequest$Encrypted parameter must be set to true.
Parameter performanceMode
:
The performance mode of the file system. We recommend
generalPurpose
performance mode for most 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.
Parameter provisionedThroughputInMibps
:
The throughput, measured in MiB/s, that you want to provision for a file
system that you're creating. Valid values are 1-1024. Required if
ThroughputMode
is set to provisioned
. The upper
limit for throughput is 1024 MiB/s. You can get this limit increased by
contacting AWS Support. For more information, see Amazon
EFS Limits That You Can Increase in the Amazon EFS User Guide.
Parameter tags
:
A value that specifies 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.
Parameter throughputMode
:
The throughput mode for the file system to be created. There are two
throughput modes to choose from for your file system:
bursting
and provisioned
. If you set
ThroughputMode
to provisioned
, you must also set
a value for ProvisionedThroughPutInMibps
. You can decrease
your file system's throughput in Provisioned Throughput mode or change
between the throughput modes as long as it’s been more than 24 hours since
the last decrease or throughput mode change. For more, see Specifying
Throughput with Provisioned Mode in the Amazon EFS User Guide.
Implementation
Future<FileSystemDescription> createFileSystem({
String? creationToken,
bool? encrypted,
String? kmsKeyId,
PerformanceMode? performanceMode,
double? provisionedThroughputInMibps,
List<Tag>? tags,
ThroughputMode? throughputMode,
}) async {
_s.validateStringLength(
'creationToken',
creationToken,
1,
64,
);
_s.validateStringLength(
'kmsKeyId',
kmsKeyId,
0,
2048,
);
_s.validateNumRange(
'provisionedThroughputInMibps',
provisionedThroughputInMibps,
1,
1152921504606846976,
);
final $payload = <String, dynamic>{
'CreationToken': creationToken ?? _s.generateIdempotencyToken(),
if (encrypted != null) 'Encrypted': encrypted,
if (kmsKeyId != null) 'KmsKeyId': kmsKeyId,
if (performanceMode != null) 'PerformanceMode': performanceMode.toValue(),
if (provisionedThroughputInMibps != null)
'ProvisionedThroughputInMibps': provisionedThroughputInMibps,
if (tags != null) 'Tags': tags,
if (throughputMode != null) 'ThroughputMode': throughputMode.toValue(),
};
final response = await _protocol.send(
payload: $payload,
method: 'POST',
requestUri: '/2015-02-01/file-systems',
exceptionFnMap: _exceptionFns,
);
return FileSystemDescription.fromJson(response);
}