Package software.amazon.awscdk.services.fsx
Amazon FSx Construct Library
---
AWS CDK v1 has reached End-of-Support on 2023-06-01. This package is no longer being updated, and users should migrate to AWS CDK v2.
For more information on how to migrate, see the Migrating to AWS CDK v2 guide.
Amazon FSx provides fully managed third-party file systems with the native compatibility and feature sets for workloads such as Microsoft Windows–based storage, high-performance computing, machine learning, and electronic design automation.
Amazon FSx supports two file system types: Lustre and Windows File Server.
FSx for Lustre
Amazon FSx for Lustre makes it easy and cost-effective to launch and run the popular, high-performance Lustre file system. You use Lustre for workloads where speed matters, such as machine learning, high performance computing (HPC), video processing, and financial modeling.
The open-source Lustre file system is designed for applications that require fast storage—where you want your storage to keep up with your compute. Lustre was built to solve the problem of quickly and cheaply processing the world's ever-growing datasets. It's a widely used file system designed for the fastest computers in the world. It provides submillisecond latencies, up to hundreds of GBps of throughput, and up to millions of IOPS. For more information on Lustre, see the Lustre website.
As a fully managed service, Amazon FSx makes it easier for you to use Lustre for workloads where storage speed matters. Amazon FSx for Lustre eliminates the traditional complexity of setting up and managing Lustre file systems, enabling you to spin up and run a battle-tested high-performance file system in minutes. It also provides multiple deployment options so you can optimize cost for your needs.
Amazon FSx for Lustre is POSIX-compliant, so you can use your current Linux-based applications without having to make any changes. Amazon FSx for Lustre provides a native file system interface and works as any file system does with your Linux operating system. It also provides read-after-write consistency and supports file locking.
Installation
Import to your project:
import software.amazon.awscdk.services.fsx.*;
Basic Usage
Setup required properties and create:
Vpc vpc; LustreFileSystem fileSystem = LustreFileSystem.Builder.create(this, "FsxLustreFileSystem") .lustreConfiguration(LustreConfiguration.builder().deploymentType(LustreDeploymentType.SCRATCH_2).build()) .storageCapacityGiB(1200) .vpc(vpc) .vpcSubnet(vpc.getPrivateSubnets()[0]) .build();
Connecting
To control who can access the file system, use the .connections
attribute. FSx has a fixed default port, so you don't
need to specify the port. This example allows an EC2 instance to connect to a file system:
LustreFileSystem fileSystem; Instance instance; fileSystem.connections.allowDefaultPortFrom(instance);
Mounting
The LustreFileSystem Construct exposes both the DNS name of the file system as well as its mount name, which can be used to mount the file system on an EC2 instance. The following example shows how to bring up a file system and EC2 instance, and then use User Data to mount the file system on the instance at start-up:
import software.amazon.awscdk.services.iam.*; Vpc vpc; Map<String, LustreDeploymentType> lustreConfiguration = Map.of( "deploymentType", LustreDeploymentType.SCRATCH_2); LustreFileSystem fs = LustreFileSystem.Builder.create(this, "FsxLustreFileSystem") .lustreConfiguration(lustreConfiguration) .storageCapacityGiB(1200) .vpc(vpc) .vpcSubnet(vpc.getPrivateSubnets()[0]) .build(); Instance inst = Instance.Builder.create(this, "inst") .instanceType(InstanceType.of(InstanceClass.T2, InstanceSize.LARGE)) .machineImage(AmazonLinuxImage.Builder.create() .generation(AmazonLinuxGeneration.AMAZON_LINUX_2) .build()) .vpc(vpc) .vpcSubnets(SubnetSelection.builder() .subnetType(SubnetType.PUBLIC) .build()) .build(); fs.connections.allowDefaultPortFrom(inst); // Need to give the instance access to read information about FSx to determine the file system's mount name. inst.role.addManagedPolicy(ManagedPolicy.fromAwsManagedPolicyName("AmazonFSxReadOnlyAccess")); String mountPath = "/mnt/fsx"; String dnsName = fs.getDnsName(); String mountName = fs.getMountName(); inst.userData.addCommands("set -eux", "yum update -y", "amazon-linux-extras install -y lustre2.10", String.format("mkdir -p %s", mountPath), String.format("chmod 777 %s", mountPath), String.format("chown ec2-user:ec2-user %s", mountPath), String.format("echo \"%s@tcp:/%s %s lustre defaults,noatime,flock,_netdev 0 0\" >> /etc/fstab", dnsName, mountName, mountPath), "mount -a");
Importing
An FSx for Lustre file system can be imported with fromLustreFileSystemAttributes(stack, id, attributes)
. The
following example lays out how you could import the SecurityGroup a file system belongs to, use that to import the file
system, and then also import the VPC the file system is in and add an EC2 instance to it, giving it access to the file
system.
ISecurityGroup sg = SecurityGroup.fromSecurityGroupId(this, "FsxSecurityGroup", "{SECURITY-GROUP-ID}"); IFileSystem fs = LustreFileSystem.fromLustreFileSystemAttributes(this, "FsxLustreFileSystem", FileSystemAttributes.builder() .dnsName("{FILE-SYSTEM-DNS-NAME}") .fileSystemId("{FILE-SYSTEM-ID}") .securityGroup(sg) .build()); IVpc vpc = Vpc.fromVpcAttributes(this, "Vpc", VpcAttributes.builder() .availabilityZones(List.of("us-west-2a", "us-west-2b")) .publicSubnetIds(List.of("{US-WEST-2A-SUBNET-ID}", "{US-WEST-2B-SUBNET-ID}")) .vpcId("{VPC-ID}") .build()); Instance inst = Instance.Builder.create(this, "inst") .instanceType(InstanceType.of(InstanceClass.T2, InstanceSize.LARGE)) .machineImage(AmazonLinuxImage.Builder.create() .generation(AmazonLinuxGeneration.AMAZON_LINUX_2) .build()) .vpc(vpc) .vpcSubnets(SubnetSelection.builder() .subnetType(SubnetType.PUBLIC) .build()) .build(); fs.connections.allowDefaultPortFrom(inst);
FSx for Windows File Server
The L2 construct for the FSx for Windows File Server has not yet been implemented. To instantiate an FSx for Windows file system, the L1 constructs can be used as defined by CloudFormation. Deprecated: AWS CDK v1 has reached End-of-Support on 2023-06-01. This package is no longer being updated, and users should migrate to AWS CDK v2. For more information on how to migrate, see https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html
-
ClassDescriptionA CloudFormation
AWS::FSx::DataRepositoryAssociation
.Describes a data repository association's automatic export policy.A builder forCfnDataRepositoryAssociation.AutoExportPolicyProperty
An implementation forCfnDataRepositoryAssociation.AutoExportPolicyProperty
Describes the data repository association's automatic import policy.A builder forCfnDataRepositoryAssociation.AutoImportPolicyProperty
An implementation forCfnDataRepositoryAssociation.AutoImportPolicyProperty
A fluent builder forCfnDataRepositoryAssociation
.The configuration for an Amazon S3 data repository linked to an Amazon FSx Lustre file system with a data repository association.A builder forCfnDataRepositoryAssociation.S3Property
An implementation forCfnDataRepositoryAssociation.S3Property
Properties for defining aCfnDataRepositoryAssociation
.A builder forCfnDataRepositoryAssociationProps
An implementation forCfnDataRepositoryAssociationProps
A CloudFormationAWS::FSx::FileSystem
.The configuration that Amazon FSx for Windows File Server uses to audit and log user accesses of files, folders, and file shares on the Amazon FSx for Windows File Server file system.A builder forCfnFileSystem.AuditLogConfigurationProperty
An implementation forCfnFileSystem.AuditLogConfigurationProperty
A fluent builder forCfnFileSystem
.Specifies who can mount an OpenZFS file system and the options available while mounting the file system.A builder forCfnFileSystem.ClientConfigurationsProperty
An implementation forCfnFileSystem.ClientConfigurationsProperty
The SSD IOPS (input/output operations per second) configuration for an Amazon FSx for NetApp ONTAP or FSx for OpenZFS file system.A builder forCfnFileSystem.DiskIopsConfigurationProperty
An implementation forCfnFileSystem.DiskIopsConfigurationProperty
The configuration for the Amazon FSx for Lustre file system.A builder forCfnFileSystem.LustreConfigurationProperty
An implementation forCfnFileSystem.LustreConfigurationProperty
The configuration object for mounting a file system.A builder forCfnFileSystem.NfsExportsProperty
An implementation forCfnFileSystem.NfsExportsProperty
The configuration for this Amazon FSx for NetApp ONTAP file system.A builder forCfnFileSystem.OntapConfigurationProperty
An implementation forCfnFileSystem.OntapConfigurationProperty
The OpenZFS configuration for the file system that's being created.A builder forCfnFileSystem.OpenZFSConfigurationProperty
An implementation forCfnFileSystem.OpenZFSConfigurationProperty
The configuration of an Amazon FSx for OpenZFS root volume.A builder forCfnFileSystem.RootVolumeConfigurationProperty
An implementation forCfnFileSystem.RootVolumeConfigurationProperty
The configuration that Amazon FSx uses to join a FSx for Windows File Server file system or an FSx for ONTAP storage virtual machine (SVM) to a self-managed (including on-premises) Microsoft Active Directory (AD) directory.An implementation forCfnFileSystem.SelfManagedActiveDirectoryConfigurationProperty
The configuration for how much storage a user or group can use on the volume.A builder forCfnFileSystem.UserAndGroupQuotasProperty
An implementation forCfnFileSystem.UserAndGroupQuotasProperty
The Microsoft Windows configuration for the file system that's being created.A builder forCfnFileSystem.WindowsConfigurationProperty
An implementation forCfnFileSystem.WindowsConfigurationProperty
Properties for defining aCfnFileSystem
.A builder forCfnFileSystemProps
An implementation forCfnFileSystemProps
A CloudFormationAWS::FSx::Snapshot
.A fluent builder forCfnSnapshot
.Properties for defining aCfnSnapshot
.A builder forCfnSnapshotProps
An implementation forCfnSnapshotProps
A CloudFormationAWS::FSx::StorageVirtualMachine
.Describes the self-managed Microsoft Active Directory to which you want to join the SVM.An implementation forCfnStorageVirtualMachine.ActiveDirectoryConfigurationProperty
A fluent builder forCfnStorageVirtualMachine
.The configuration that Amazon FSx uses to join a FSx for Windows File Server file system or an FSx for ONTAP storage virtual machine (SVM) to a self-managed (including on-premises) Microsoft Active Directory (AD) directory.An implementation forCfnStorageVirtualMachine.SelfManagedActiveDirectoryConfigurationProperty
Properties for defining aCfnStorageVirtualMachine
.A builder forCfnStorageVirtualMachineProps
An implementation forCfnStorageVirtualMachineProps
A CloudFormationAWS::FSx::Volume
.A fluent builder forCfnVolume
.Specifies who can mount an OpenZFS file system and the options available while mounting the file system.A builder forCfnVolume.ClientConfigurationsProperty
An implementation forCfnVolume.ClientConfigurationsProperty
The configuration object for mounting a Network File System (NFS) file system.A builder forCfnVolume.NfsExportsProperty
An implementation forCfnVolume.NfsExportsProperty
Specifies the configuration of the ONTAP volume that you are creating.A builder forCfnVolume.OntapConfigurationProperty
An implementation forCfnVolume.OntapConfigurationProperty
Specifies the configuration of the Amazon FSx for OpenZFS volume that you are creating.A builder forCfnVolume.OpenZFSConfigurationProperty
An implementation forCfnVolume.OpenZFSConfigurationProperty
The configuration object that specifies the snapshot to use as the origin of the data for the volume.A builder forCfnVolume.OriginSnapshotProperty
An implementation forCfnVolume.OriginSnapshotProperty
Describes the data tiering policy for an ONTAP volume.A builder forCfnVolume.TieringPolicyProperty
An implementation forCfnVolume.TieringPolicyProperty
An object specifying how much storage users or groups can use on the volume.A builder forCfnVolume.UserAndGroupQuotasProperty
An implementation forCfnVolume.UserAndGroupQuotasProperty
Properties for defining aCfnVolume
.A builder forCfnVolumeProps
An implementation forCfnVolumeProps
Properties that describe an existing FSx file system.A builder forFileSystemAttributes
An implementation forFileSystemAttributes
A new or imported FSx file system.Properties for the FSx file system.A builder forFileSystemProps
An implementation forFileSystemProps
Interface to implement FSx File Systems.Internal default implementation forIFileSystem
.A proxy class which represents a concrete javascript instance of this type.The configuration for the Amazon FSx for Lustre file system.A builder forLustreConfiguration
An implementation forLustreConfiguration
The different kinds of file system deployments used by Lustre.The FSx for Lustre File System implementation of IFileSystem.A fluent builder forLustreFileSystem
.Properties specific to the Lustre version of the FSx file system.A builder forLustreFileSystemProps
An implementation forLustreFileSystemProps
Class for scheduling a weekly manitenance time.A fluent builder forLustreMaintenanceTime
.Properties required for setting up a weekly maintenance time.A builder forLustreMaintenanceTimeProps
An implementation forLustreMaintenanceTimeProps
Enum for representing all the days of the week.