All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awscdk.services.fsx.package-info Maven / Gradle / Ivy

/**
 * 

Amazon FSx Construct Library

*

* --- *

* cfn-resources: Stable *

* cdk-constructs: Stable *

*


*

* *

* 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. */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) package software.amazon.awscdk.services.fsx;





© 2015 - 2025 Weber Informatics LLC | Privacy Policy