awsfsx

package
v2.32.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 14, 2022 License: Apache-2.0 Imports: 8 Imported by: 0

README

Amazon FSx Construct Library

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 fsx "github.com/aws/aws-cdk-go/awscdk"
Basic Usage

Setup required properties and create:

var vpc vpc


fileSystem := fsx.NewLustreFileSystem(this, jsii.String("FsxLustreFileSystem"), &lustreFileSystemProps{
	lustreConfiguration: &lustreConfiguration{
		deploymentType: fsx.lustreDeploymentType_SCRATCH_2,
	},
	storageCapacityGiB: jsii.Number(1200),
	vpc: vpc,
	vpcSubnet: vpc.privateSubnets[jsii.Number(0)],
})
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:

var fileSystem lustreFileSystem
var 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 iam "github.com/aws/aws-cdk-go/awscdk"

var vpc vpc

lustreConfiguration := map[string]lustreDeploymentType{
	"deploymentType": fsx.lustreDeploymentType_SCRATCH_2,
}

fs := fsx.NewLustreFileSystem(this, jsii.String("FsxLustreFileSystem"), &lustreFileSystemProps{
	lustreConfiguration: lustreConfiguration,
	storageCapacityGiB: jsii.Number(1200),
	vpc: vpc,
	vpcSubnet: vpc.privateSubnets[jsii.Number(0)],
})

inst := ec2.NewInstance(this, jsii.String("inst"), &instanceProps{
	instanceType: ec2.instanceType.of(ec2.instanceClass_T2, ec2.instanceSize_LARGE),
	machineImage: ec2.NewAmazonLinuxImage(&amazonLinuxImageProps{
		generation: ec2.amazonLinuxGeneration_AMAZON_LINUX_2,
	}),
	vpc: vpc,
	vpcSubnets: &subnetSelection{
		subnetType: ec2.subnetType_PUBLIC,
	},
})
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(iam.managedPolicy.fromAwsManagedPolicyName(jsii.String("AmazonFSxReadOnlyAccess")))

mountPath := "/mnt/fsx"
dnsName := fs.dnsName
mountName := fs.mountName

inst.userData.addCommands(jsii.String("set -eux"), jsii.String("yum update -y"), jsii.String("amazon-linux-extras install -y lustre2.10"),
// Set up the directory to mount the file system to and change the owner to the AL2 default ec2-user.
fmt.Sprintf("mkdir -p %v", mountPath),
fmt.Sprintf("chmod 777 %v", mountPath),
fmt.Sprintf("chown ec2-user:ec2-user %v", mountPath),
// Set the file system up to mount automatically on start up and mount it.
fmt.Sprintf("echo \"%v@tcp:/%v %v lustre defaults,noatime,flock,_netdev 0 0\" >> /etc/fstab", dnsName, mountName, mountPath), jsii.String("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.

sg := ec2.securityGroup.fromSecurityGroupId(this, jsii.String("FsxSecurityGroup"), jsii.String("{SECURITY-GROUP-ID}"))
fs := fsx.lustreFileSystem.fromLustreFileSystemAttributes(this, jsii.String("FsxLustreFileSystem"), &fileSystemAttributes{
	dnsName: jsii.String("{FILE-SYSTEM-DNS-NAME}"),
	fileSystemId: jsii.String("{FILE-SYSTEM-ID}"),
	securityGroup: sg,
})

vpc := ec2.vpc.fromVpcAttributes(this, jsii.String("Vpc"), &vpcAttributes{
	availabilityZones: []*string{
		jsii.String("us-west-2a"),
		jsii.String("us-west-2b"),
	},
	publicSubnetIds: []*string{
		jsii.String("{US-WEST-2A-SUBNET-ID}"),
		jsii.String("{US-WEST-2B-SUBNET-ID}"),
	},
	vpcId: jsii.String("{VPC-ID}"),
})

inst := ec2.NewInstance(this, jsii.String("inst"), &instanceProps{
	instanceType: ec2.instanceType.of(ec2.instanceClass_T2, ec2.instanceSize_LARGE),
	machineImage: ec2.NewAmazonLinuxImage(&amazonLinuxImageProps{
		generation: ec2.amazonLinuxGeneration_AMAZON_LINUX_2,
	}),
	vpc: vpc,
	vpcSubnets: &subnetSelection{
		subnetType: ec2.subnetType_PUBLIC,
	},
})

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.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CfnFileSystem_CFN_RESOURCE_TYPE_NAME

func CfnFileSystem_CFN_RESOURCE_TYPE_NAME() *string

func CfnFileSystem_IsCfnElement

func CfnFileSystem_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnFileSystem_IsCfnResource

func CfnFileSystem_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource.

func CfnFileSystem_IsConstruct

func CfnFileSystem_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnSnapshot_CFN_RESOURCE_TYPE_NAME added in v2.18.0

func CfnSnapshot_CFN_RESOURCE_TYPE_NAME() *string

func CfnSnapshot_IsCfnElement added in v2.18.0

func CfnSnapshot_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnSnapshot_IsCfnResource added in v2.18.0

func CfnSnapshot_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource.

func CfnSnapshot_IsConstruct added in v2.18.0

func CfnSnapshot_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnStorageVirtualMachine_CFN_RESOURCE_TYPE_NAME added in v2.18.0

func CfnStorageVirtualMachine_CFN_RESOURCE_TYPE_NAME() *string

func CfnStorageVirtualMachine_IsCfnElement added in v2.18.0

func CfnStorageVirtualMachine_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnStorageVirtualMachine_IsCfnResource added in v2.18.0

func CfnStorageVirtualMachine_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource.

func CfnStorageVirtualMachine_IsConstruct added in v2.18.0

func CfnStorageVirtualMachine_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnVolume_CFN_RESOURCE_TYPE_NAME added in v2.18.0

func CfnVolume_CFN_RESOURCE_TYPE_NAME() *string

func CfnVolume_IsCfnElement added in v2.18.0

func CfnVolume_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnVolume_IsCfnResource added in v2.18.0

func CfnVolume_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource.

func CfnVolume_IsConstruct added in v2.18.0

func CfnVolume_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func FileSystemBase_IsConstruct

func FileSystemBase_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func FileSystemBase_IsOwnedResource added in v2.32.0

func FileSystemBase_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func FileSystemBase_IsResource

func FileSystemBase_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func LustreFileSystem_IsConstruct

func LustreFileSystem_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func LustreFileSystem_IsOwnedResource added in v2.32.0

func LustreFileSystem_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func LustreFileSystem_IsResource

func LustreFileSystem_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func NewCfnFileSystem_Override

func NewCfnFileSystem_Override(c CfnFileSystem, scope constructs.Construct, id *string, props *CfnFileSystemProps)

Create a new `AWS::FSx::FileSystem`.

func NewCfnSnapshot_Override added in v2.18.0

func NewCfnSnapshot_Override(c CfnSnapshot, scope constructs.Construct, id *string, props *CfnSnapshotProps)

Create a new `AWS::FSx::Snapshot`.

func NewCfnStorageVirtualMachine_Override added in v2.18.0

func NewCfnStorageVirtualMachine_Override(c CfnStorageVirtualMachine, scope constructs.Construct, id *string, props *CfnStorageVirtualMachineProps)

Create a new `AWS::FSx::StorageVirtualMachine`.

func NewCfnVolume_Override added in v2.18.0

func NewCfnVolume_Override(c CfnVolume, scope constructs.Construct, id *string, props *CfnVolumeProps)

Create a new `AWS::FSx::Volume`.

func NewFileSystemBase_Override

func NewFileSystemBase_Override(f FileSystemBase, scope constructs.Construct, id *string, props *awscdk.ResourceProps)

func NewLustreFileSystem_Override

func NewLustreFileSystem_Override(l LustreFileSystem, scope constructs.Construct, id *string, props *LustreFileSystemProps)

func NewLustreMaintenanceTime_Override

func NewLustreMaintenanceTime_Override(l LustreMaintenanceTime, props *LustreMaintenanceTimeProps)

Types

type CfnFileSystem

type CfnFileSystem interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// Returns the FSx for Windows file system's DNSName.
	//
	// Example: `amznfsxp1honlek.corp.example.com`
	AttrDnsName() *string
	// Returns the file system's LustreMountName.
	//
	// Example for SCRATCH_1 deployment types: This value is always `fsx` .
	//
	// Example for SCRATCH_2 and PERSISTENT deployment types: `2p3fhbmv`.
	AttrLustreMountName() *string
	// Returns the root volume ID of the FSx for OpenZFS file system.
	//
	// Example: `fsvol-0123456789abcdefa`.
	AttrRootVolumeId() *string
	// The ID of the file system backup that you are using to create a file system.
	//
	// For more information, see [CreateFileSystemFromBackup](https://docs.aws.amazon.com/fsx/latest/APIReference/API_CreateFileSystemFromBackup.html) .
	BackupId() *string
	SetBackupId(val *string)
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The type of Amazon FSx file system, which can be `LUSTRE` , `WINDOWS` , `ONTAP` , or `OPENZFS` .
	FileSystemType() *string
	SetFileSystemType(val *string)
	// (Optional) For FSx for Lustre file systems, sets the Lustre version for the file system that you're creating.
	//
	// Valid values are `2.10` and `2.12` :
	//
	// - 2.10 is supported by the Scratch and Persistent_1 Lustre deployment types.
	// - 2.12 is supported by all Lustre deployment types. `2.12` is required when setting FSx for Lustre `DeploymentType` to `PERSISTENT_2` .
	//
	// Default value = `2.10` , except when `DeploymentType` is set to `PERSISTENT_2` , then the default is `2.12` .
	//
	// > If you set `FileSystemTypeVersion` to `2.10` for a `PERSISTENT_2` Lustre deployment type, the `CreateFileSystem` operation fails.
	FileSystemTypeVersion() *string
	SetFileSystemTypeVersion(val *string)
	// The ID of the AWS Key Management Service ( AWS KMS ) key used to encrypt Amazon FSx file system data.
	//
	// Used as follows with Amazon FSx file system types:
	//
	// - Amazon FSx for Lustre `PERSISTENT_1` and `PERSISTENT_2` deployment types only.
	//
	// `SCRATCH_1` and `SCRATCH_2` types are encrypted using the Amazon FSx service AWS KMS key for your account.
	// - Amazon FSx for NetApp ONTAP
	// - Amazon FSx for OpenZFS
	// - Amazon FSx for Windows File Server.
	KmsKeyId() *string
	SetKmsKeyId(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The Lustre configuration for the file system being created.
	//
	// > The following parameters are not supported for file systems with the Lustre `Persistent_2` deployment type.
	// >
	// > - `AutoImportPolicy`
	// > - `ExportPath`
	// > - `ImportedChunkSize`
	// > - `ImportPath`.
	LustreConfiguration() interface{}
	SetLustreConfiguration(val interface{})
	// The tree node.
	Node() constructs.Node
	// The ONTAP configuration properties of the FSx for ONTAP file system that you are creating.
	OntapConfiguration() interface{}
	SetOntapConfiguration(val interface{})
	// The Amazon FSx for OpenZFS configuration properties for the file system that you are creating.
	OpenZfsConfiguration() interface{}
	SetOpenZfsConfiguration(val interface{})
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// A list of IDs specifying the security groups to apply to all network interfaces created for file system access.
	//
	// This list isn't returned in later requests to describe the file system.
	SecurityGroupIds() *[]*string
	SetSecurityGroupIds(val *[]*string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Sets the storage capacity of the file system that you're creating.
	//
	// `StorageCapacity` is required if you are creating a new file system. Do not include `StorageCapacity` if you are creating a file system from a backup.
	//
	// *FSx for Lustre file systems* - The amount of storage capacity that you can configure depends on the value that you set for `StorageType` and the Lustre `DeploymentType` , as follows:
	//
	// - For `SCRATCH_2` , `PERSISTENT_2` and `PERSISTENT_1` deployment types using SSD storage type, the valid values are 1200 GiB, 2400 GiB, and increments of 2400 GiB.
	// - For `PERSISTENT_1` HDD file systems, valid values are increments of 6000 GiB for 12 MB/s/TiB file systems and increments of 1800 GiB for 40 MB/s/TiB file systems.
	// - For `SCRATCH_1` deployment type, valid values are 1200 GiB, 2400 GiB, and increments of 3600 GiB.
	//
	// *FSx for ONTAP file systems* - The amount of storage capacity that you can configure is from 1024 GiB up to 196,608 GiB (192 TiB).
	//
	// *FSx for OpenZFS file systems* - The amount of storage capacity that you can configure is from 64 GiB up to 524,288 GiB (512 TiB).
	//
	// *FSx for Windows File Server file systems* - The amount of storage capacity that you can configure depends on the value that you set for `StorageType` as follows:
	//
	// - For SSD storage, valid values are 32 GiB-65,536 GiB (64 TiB).
	// - For HDD storage, valid values are 2000 GiB-65,536 GiB (64 TiB).
	StorageCapacity() *float64
	SetStorageCapacity(val *float64)
	// Sets the storage type for the file system that you're creating. Valid values are `SSD` and `HDD` .
	//
	// - Set to `SSD` to use solid state drive storage. SSD is supported on all Windows, Lustre, ONTAP, and OpenZFS deployment types.
	// - Set to `HDD` to use hard disk drive storage. HDD is supported on `SINGLE_AZ_2` and `MULTI_AZ_1` Windows file system deployment types, and on `PERSISTENT_1` Lustre file system deployment types.
	//
	// Default value is `SSD` . For more information, see [Storage type options](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/optimize-fsx-costs.html#storage-type-options) in the *FSx for Windows File Server User Guide* and [Multiple storage options](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html#storage-options) in the *FSx for Lustre User Guide* .
	StorageType() *string
	SetStorageType(val *string)
	// Specifies the IDs of the subnets that the file system will be accessible from.
	//
	// For Windows and ONTAP `MULTI_AZ_1` deployment types,provide exactly two subnet IDs, one for the preferred file server and one for the standby file server. You specify one of these subnets as the preferred subnet using the `WindowsConfiguration > PreferredSubnetID` or `OntapConfiguration > PreferredSubnetID` properties. For more information about Multi-AZ file system configuration, see [Availability and durability: Single-AZ and Multi-AZ file systems](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html) in the *Amazon FSx for Windows User Guide* and [Availability and durability](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-multiAZ.html) in the *Amazon FSx for ONTAP User Guide* .
	//
	// For Windows `SINGLE_AZ_1` and `SINGLE_AZ_2` and all Lustre deployment types, provide exactly one subnet ID. The file server is launched in that subnet's Availability Zone.
	SubnetIds() *[]*string
	SetSubnetIds(val *[]*string)
	// An array of key-value pairs to apply to this resource.
	//
	// For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html) .
	Tags() awscdk.TagManager
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// The configuration object for the Microsoft Windows file system you are creating.
	//
	// This value is required if `FileSystemType` is set to `WINDOWS` .
	WindowsConfiguration() interface{}
	SetWindowsConfiguration(val interface{})
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::FSx::FileSystem`.

The `AWS::FSx::FileSystem` resource is an Amazon FSx resource type that specifies an Amazon FSx file system. You can create any of the following supported file system types:

- Amazon FSx for Lustre - Amazon FSx for NetApp ONTAP - Amazon FSx for OpenZFS - Amazon FSx for Windows File Server.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnFileSystem := awscdk.Aws_fsx.NewCfnFileSystem(this, jsii.String("MyCfnFileSystem"), &cfnFileSystemProps{
	fileSystemType: jsii.String("fileSystemType"),
	subnetIds: []*string{
		jsii.String("subnetIds"),
	},

	// the properties below are optional
	backupId: jsii.String("backupId"),
	fileSystemTypeVersion: jsii.String("fileSystemTypeVersion"),
	kmsKeyId: jsii.String("kmsKeyId"),
	lustreConfiguration: &lustreConfigurationProperty{
		autoImportPolicy: jsii.String("autoImportPolicy"),
		automaticBackupRetentionDays: jsii.Number(123),
		copyTagsToBackups: jsii.Boolean(false),
		dailyAutomaticBackupStartTime: jsii.String("dailyAutomaticBackupStartTime"),
		dataCompressionType: jsii.String("dataCompressionType"),
		deploymentType: jsii.String("deploymentType"),
		driveCacheType: jsii.String("driveCacheType"),
		exportPath: jsii.String("exportPath"),
		importedFileChunkSize: jsii.Number(123),
		importPath: jsii.String("importPath"),
		perUnitStorageThroughput: jsii.Number(123),
		weeklyMaintenanceStartTime: jsii.String("weeklyMaintenanceStartTime"),
	},
	ontapConfiguration: &ontapConfigurationProperty{
		deploymentType: jsii.String("deploymentType"),

		// the properties below are optional
		automaticBackupRetentionDays: jsii.Number(123),
		dailyAutomaticBackupStartTime: jsii.String("dailyAutomaticBackupStartTime"),
		diskIopsConfiguration: &diskIopsConfigurationProperty{
			iops: jsii.Number(123),
			mode: jsii.String("mode"),
		},
		endpointIpAddressRange: jsii.String("endpointIpAddressRange"),
		fsxAdminPassword: jsii.String("fsxAdminPassword"),
		preferredSubnetId: jsii.String("preferredSubnetId"),
		routeTableIds: []*string{
			jsii.String("routeTableIds"),
		},
		throughputCapacity: jsii.Number(123),
		weeklyMaintenanceStartTime: jsii.String("weeklyMaintenanceStartTime"),
	},
	openZfsConfiguration: &openZFSConfigurationProperty{
		deploymentType: jsii.String("deploymentType"),

		// the properties below are optional
		automaticBackupRetentionDays: jsii.Number(123),
		copyTagsToBackups: jsii.Boolean(false),
		copyTagsToVolumes: jsii.Boolean(false),
		dailyAutomaticBackupStartTime: jsii.String("dailyAutomaticBackupStartTime"),
		diskIopsConfiguration: &diskIopsConfigurationProperty{
			iops: jsii.Number(123),
			mode: jsii.String("mode"),
		},
		options: []*string{
			jsii.String("options"),
		},
		rootVolumeConfiguration: &rootVolumeConfigurationProperty{
			copyTagsToSnapshots: jsii.Boolean(false),
			dataCompressionType: jsii.String("dataCompressionType"),
			nfsExports: []interface{}{
				&nfsExportsProperty{
					clientConfigurations: []interface{}{
						&clientConfigurationsProperty{
							clients: jsii.String("clients"),
							options: []*string{
								jsii.String("options"),
							},
						},
					},
				},
			},
			readOnly: jsii.Boolean(false),
			recordSizeKiB: jsii.Number(123),
			userAndGroupQuotas: []interface{}{
				&userAndGroupQuotasProperty{
					id: jsii.Number(123),
					storageCapacityQuotaGiB: jsii.Number(123),
					type: jsii.String("type"),
				},
			},
		},
		throughputCapacity: jsii.Number(123),
		weeklyMaintenanceStartTime: jsii.String("weeklyMaintenanceStartTime"),
	},
	securityGroupIds: []*string{
		jsii.String("securityGroupIds"),
	},
	storageCapacity: jsii.Number(123),
	storageType: jsii.String("storageType"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	windowsConfiguration: &windowsConfigurationProperty{
		throughputCapacity: jsii.Number(123),

		// the properties below are optional
		activeDirectoryId: jsii.String("activeDirectoryId"),
		aliases: []*string{
			jsii.String("aliases"),
		},
		auditLogConfiguration: &auditLogConfigurationProperty{
			fileAccessAuditLogLevel: jsii.String("fileAccessAuditLogLevel"),
			fileShareAccessAuditLogLevel: jsii.String("fileShareAccessAuditLogLevel"),

			// the properties below are optional
			auditLogDestination: jsii.String("auditLogDestination"),
		},
		automaticBackupRetentionDays: jsii.Number(123),
		copyTagsToBackups: jsii.Boolean(false),
		dailyAutomaticBackupStartTime: jsii.String("dailyAutomaticBackupStartTime"),
		deploymentType: jsii.String("deploymentType"),
		preferredSubnetId: jsii.String("preferredSubnetId"),
		selfManagedActiveDirectoryConfiguration: &selfManagedActiveDirectoryConfigurationProperty{
			dnsIps: []*string{
				jsii.String("dnsIps"),
			},
			domainName: jsii.String("domainName"),
			fileSystemAdministratorsGroup: jsii.String("fileSystemAdministratorsGroup"),
			organizationalUnitDistinguishedName: jsii.String("organizationalUnitDistinguishedName"),
			password: jsii.String("password"),
			userName: jsii.String("userName"),
		},
		weeklyMaintenanceStartTime: jsii.String("weeklyMaintenanceStartTime"),
	},
})

func NewCfnFileSystem

func NewCfnFileSystem(scope constructs.Construct, id *string, props *CfnFileSystemProps) CfnFileSystem

Create a new `AWS::FSx::FileSystem`.

type CfnFileSystemProps

type CfnFileSystemProps struct {
	// The type of Amazon FSx file system, which can be `LUSTRE` , `WINDOWS` , `ONTAP` , or `OPENZFS` .
	FileSystemType *string `field:"required" json:"fileSystemType" yaml:"fileSystemType"`
	// Specifies the IDs of the subnets that the file system will be accessible from.
	//
	// For Windows and ONTAP `MULTI_AZ_1` deployment types,provide exactly two subnet IDs, one for the preferred file server and one for the standby file server. You specify one of these subnets as the preferred subnet using the `WindowsConfiguration > PreferredSubnetID` or `OntapConfiguration > PreferredSubnetID` properties. For more information about Multi-AZ file system configuration, see [Availability and durability: Single-AZ and Multi-AZ file systems](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html) in the *Amazon FSx for Windows User Guide* and [Availability and durability](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-multiAZ.html) in the *Amazon FSx for ONTAP User Guide* .
	//
	// For Windows `SINGLE_AZ_1` and `SINGLE_AZ_2` and all Lustre deployment types, provide exactly one subnet ID. The file server is launched in that subnet's Availability Zone.
	SubnetIds *[]*string `field:"required" json:"subnetIds" yaml:"subnetIds"`
	// The ID of the file system backup that you are using to create a file system.
	//
	// For more information, see [CreateFileSystemFromBackup](https://docs.aws.amazon.com/fsx/latest/APIReference/API_CreateFileSystemFromBackup.html) .
	BackupId *string `field:"optional" json:"backupId" yaml:"backupId"`
	// (Optional) For FSx for Lustre file systems, sets the Lustre version for the file system that you're creating.
	//
	// Valid values are `2.10` and `2.12` :
	//
	// - 2.10 is supported by the Scratch and Persistent_1 Lustre deployment types.
	// - 2.12 is supported by all Lustre deployment types. `2.12` is required when setting FSx for Lustre `DeploymentType` to `PERSISTENT_2` .
	//
	// Default value = `2.10` , except when `DeploymentType` is set to `PERSISTENT_2` , then the default is `2.12` .
	//
	// > If you set `FileSystemTypeVersion` to `2.10` for a `PERSISTENT_2` Lustre deployment type, the `CreateFileSystem` operation fails.
	FileSystemTypeVersion *string `field:"optional" json:"fileSystemTypeVersion" yaml:"fileSystemTypeVersion"`
	// The ID of the AWS Key Management Service ( AWS KMS ) key used to encrypt Amazon FSx file system data.
	//
	// Used as follows with Amazon FSx file system types:
	//
	// - Amazon FSx for Lustre `PERSISTENT_1` and `PERSISTENT_2` deployment types only.
	//
	// `SCRATCH_1` and `SCRATCH_2` types are encrypted using the Amazon FSx service AWS KMS key for your account.
	// - Amazon FSx for NetApp ONTAP
	// - Amazon FSx for OpenZFS
	// - Amazon FSx for Windows File Server.
	KmsKeyId *string `field:"optional" json:"kmsKeyId" yaml:"kmsKeyId"`
	// The Lustre configuration for the file system being created.
	//
	// > The following parameters are not supported for file systems with the Lustre `Persistent_2` deployment type.
	// >
	// > - `AutoImportPolicy`
	// > - `ExportPath`
	// > - `ImportedChunkSize`
	// > - `ImportPath`.
	LustreConfiguration interface{} `field:"optional" json:"lustreConfiguration" yaml:"lustreConfiguration"`
	// The ONTAP configuration properties of the FSx for ONTAP file system that you are creating.
	OntapConfiguration interface{} `field:"optional" json:"ontapConfiguration" yaml:"ontapConfiguration"`
	// The Amazon FSx for OpenZFS configuration properties for the file system that you are creating.
	OpenZfsConfiguration interface{} `field:"optional" json:"openZfsConfiguration" yaml:"openZfsConfiguration"`
	// A list of IDs specifying the security groups to apply to all network interfaces created for file system access.
	//
	// This list isn't returned in later requests to describe the file system.
	SecurityGroupIds *[]*string `field:"optional" json:"securityGroupIds" yaml:"securityGroupIds"`
	// Sets the storage capacity of the file system that you're creating.
	//
	// `StorageCapacity` is required if you are creating a new file system. Do not include `StorageCapacity` if you are creating a file system from a backup.
	//
	// *FSx for Lustre file systems* - The amount of storage capacity that you can configure depends on the value that you set for `StorageType` and the Lustre `DeploymentType` , as follows:
	//
	// - For `SCRATCH_2` , `PERSISTENT_2` and `PERSISTENT_1` deployment types using SSD storage type, the valid values are 1200 GiB, 2400 GiB, and increments of 2400 GiB.
	// - For `PERSISTENT_1` HDD file systems, valid values are increments of 6000 GiB for 12 MB/s/TiB file systems and increments of 1800 GiB for 40 MB/s/TiB file systems.
	// - For `SCRATCH_1` deployment type, valid values are 1200 GiB, 2400 GiB, and increments of 3600 GiB.
	//
	// *FSx for ONTAP file systems* - The amount of storage capacity that you can configure is from 1024 GiB up to 196,608 GiB (192 TiB).
	//
	// *FSx for OpenZFS file systems* - The amount of storage capacity that you can configure is from 64 GiB up to 524,288 GiB (512 TiB).
	//
	// *FSx for Windows File Server file systems* - The amount of storage capacity that you can configure depends on the value that you set for `StorageType` as follows:
	//
	// - For SSD storage, valid values are 32 GiB-65,536 GiB (64 TiB).
	// - For HDD storage, valid values are 2000 GiB-65,536 GiB (64 TiB).
	StorageCapacity *float64 `field:"optional" json:"storageCapacity" yaml:"storageCapacity"`
	// Sets the storage type for the file system that you're creating. Valid values are `SSD` and `HDD` .
	//
	// - Set to `SSD` to use solid state drive storage. SSD is supported on all Windows, Lustre, ONTAP, and OpenZFS deployment types.
	// - Set to `HDD` to use hard disk drive storage. HDD is supported on `SINGLE_AZ_2` and `MULTI_AZ_1` Windows file system deployment types, and on `PERSISTENT_1` Lustre file system deployment types.
	//
	// Default value is `SSD` . For more information, see [Storage type options](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/optimize-fsx-costs.html#storage-type-options) in the *FSx for Windows File Server User Guide* and [Multiple storage options](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html#storage-options) in the *FSx for Lustre User Guide* .
	StorageType *string `field:"optional" json:"storageType" yaml:"storageType"`
	// An array of key-value pairs to apply to this resource.
	//
	// For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html) .
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// The configuration object for the Microsoft Windows file system you are creating.
	//
	// This value is required if `FileSystemType` is set to `WINDOWS` .
	WindowsConfiguration interface{} `field:"optional" json:"windowsConfiguration" yaml:"windowsConfiguration"`
}

Properties for defining a `CfnFileSystem`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnFileSystemProps := &cfnFileSystemProps{
	fileSystemType: jsii.String("fileSystemType"),
	subnetIds: []*string{
		jsii.String("subnetIds"),
	},

	// the properties below are optional
	backupId: jsii.String("backupId"),
	fileSystemTypeVersion: jsii.String("fileSystemTypeVersion"),
	kmsKeyId: jsii.String("kmsKeyId"),
	lustreConfiguration: &lustreConfigurationProperty{
		autoImportPolicy: jsii.String("autoImportPolicy"),
		automaticBackupRetentionDays: jsii.Number(123),
		copyTagsToBackups: jsii.Boolean(false),
		dailyAutomaticBackupStartTime: jsii.String("dailyAutomaticBackupStartTime"),
		dataCompressionType: jsii.String("dataCompressionType"),
		deploymentType: jsii.String("deploymentType"),
		driveCacheType: jsii.String("driveCacheType"),
		exportPath: jsii.String("exportPath"),
		importedFileChunkSize: jsii.Number(123),
		importPath: jsii.String("importPath"),
		perUnitStorageThroughput: jsii.Number(123),
		weeklyMaintenanceStartTime: jsii.String("weeklyMaintenanceStartTime"),
	},
	ontapConfiguration: &ontapConfigurationProperty{
		deploymentType: jsii.String("deploymentType"),

		// the properties below are optional
		automaticBackupRetentionDays: jsii.Number(123),
		dailyAutomaticBackupStartTime: jsii.String("dailyAutomaticBackupStartTime"),
		diskIopsConfiguration: &diskIopsConfigurationProperty{
			iops: jsii.Number(123),
			mode: jsii.String("mode"),
		},
		endpointIpAddressRange: jsii.String("endpointIpAddressRange"),
		fsxAdminPassword: jsii.String("fsxAdminPassword"),
		preferredSubnetId: jsii.String("preferredSubnetId"),
		routeTableIds: []*string{
			jsii.String("routeTableIds"),
		},
		throughputCapacity: jsii.Number(123),
		weeklyMaintenanceStartTime: jsii.String("weeklyMaintenanceStartTime"),
	},
	openZfsConfiguration: &openZFSConfigurationProperty{
		deploymentType: jsii.String("deploymentType"),

		// the properties below are optional
		automaticBackupRetentionDays: jsii.Number(123),
		copyTagsToBackups: jsii.Boolean(false),
		copyTagsToVolumes: jsii.Boolean(false),
		dailyAutomaticBackupStartTime: jsii.String("dailyAutomaticBackupStartTime"),
		diskIopsConfiguration: &diskIopsConfigurationProperty{
			iops: jsii.Number(123),
			mode: jsii.String("mode"),
		},
		options: []*string{
			jsii.String("options"),
		},
		rootVolumeConfiguration: &rootVolumeConfigurationProperty{
			copyTagsToSnapshots: jsii.Boolean(false),
			dataCompressionType: jsii.String("dataCompressionType"),
			nfsExports: []interface{}{
				&nfsExportsProperty{
					clientConfigurations: []interface{}{
						&clientConfigurationsProperty{
							clients: jsii.String("clients"),
							options: []*string{
								jsii.String("options"),
							},
						},
					},
				},
			},
			readOnly: jsii.Boolean(false),
			recordSizeKiB: jsii.Number(123),
			userAndGroupQuotas: []interface{}{
				&userAndGroupQuotasProperty{
					id: jsii.Number(123),
					storageCapacityQuotaGiB: jsii.Number(123),
					type: jsii.String("type"),
				},
			},
		},
		throughputCapacity: jsii.Number(123),
		weeklyMaintenanceStartTime: jsii.String("weeklyMaintenanceStartTime"),
	},
	securityGroupIds: []*string{
		jsii.String("securityGroupIds"),
	},
	storageCapacity: jsii.Number(123),
	storageType: jsii.String("storageType"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	windowsConfiguration: &windowsConfigurationProperty{
		throughputCapacity: jsii.Number(123),

		// the properties below are optional
		activeDirectoryId: jsii.String("activeDirectoryId"),
		aliases: []*string{
			jsii.String("aliases"),
		},
		auditLogConfiguration: &auditLogConfigurationProperty{
			fileAccessAuditLogLevel: jsii.String("fileAccessAuditLogLevel"),
			fileShareAccessAuditLogLevel: jsii.String("fileShareAccessAuditLogLevel"),

			// the properties below are optional
			auditLogDestination: jsii.String("auditLogDestination"),
		},
		automaticBackupRetentionDays: jsii.Number(123),
		copyTagsToBackups: jsii.Boolean(false),
		dailyAutomaticBackupStartTime: jsii.String("dailyAutomaticBackupStartTime"),
		deploymentType: jsii.String("deploymentType"),
		preferredSubnetId: jsii.String("preferredSubnetId"),
		selfManagedActiveDirectoryConfiguration: &selfManagedActiveDirectoryConfigurationProperty{
			dnsIps: []*string{
				jsii.String("dnsIps"),
			},
			domainName: jsii.String("domainName"),
			fileSystemAdministratorsGroup: jsii.String("fileSystemAdministratorsGroup"),
			organizationalUnitDistinguishedName: jsii.String("organizationalUnitDistinguishedName"),
			password: jsii.String("password"),
			userName: jsii.String("userName"),
		},
		weeklyMaintenanceStartTime: jsii.String("weeklyMaintenanceStartTime"),
	},
}

type CfnFileSystem_AuditLogConfigurationProperty

type CfnFileSystem_AuditLogConfigurationProperty struct {
	// Sets which attempt type is logged by Amazon FSx for file and folder accesses.
	//
	// - `SUCCESS_ONLY` - only successful attempts to access files or folders are logged.
	// - `FAILURE_ONLY` - only failed attempts to access files or folders are logged.
	// - `SUCCESS_AND_FAILURE` - both successful attempts and failed attempts to access files or folders are logged.
	// - `DISABLED` - access auditing of files and folders is turned off.
	FileAccessAuditLogLevel *string `field:"required" json:"fileAccessAuditLogLevel" yaml:"fileAccessAuditLogLevel"`
	// Sets which attempt type is logged by Amazon FSx for file share accesses.
	//
	// - `SUCCESS_ONLY` - only successful attempts to access file shares are logged.
	// - `FAILURE_ONLY` - only failed attempts to access file shares are logged.
	// - `SUCCESS_AND_FAILURE` - both successful attempts and failed attempts to access file shares are logged.
	// - `DISABLED` - access auditing of file shares is turned off.
	FileShareAccessAuditLogLevel *string `field:"required" json:"fileShareAccessAuditLogLevel" yaml:"fileShareAccessAuditLogLevel"`
	// The Amazon Resource Name (ARN) for the destination of the audit logs.
	//
	// The destination can be any Amazon CloudWatch Logs log group ARN or Amazon Kinesis Data Firehose delivery stream ARN.
	//
	// The name of the Amazon CloudWatch Logs log group must begin with the `/aws/fsx` prefix. The name of the Amazon Kinesis Data Firehouse delivery stream must begin with the `aws-fsx` prefix.
	//
	// The destination ARN (either CloudWatch Logs log group or Kinesis Data Firehose delivery stream) must be in the same AWS partition, AWS Region , and AWS account as your Amazon FSx file system.
	AuditLogDestination *string `field:"optional" json:"auditLogDestination" yaml:"auditLogDestination"`
}

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.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

auditLogConfigurationProperty := &auditLogConfigurationProperty{
	fileAccessAuditLogLevel: jsii.String("fileAccessAuditLogLevel"),
	fileShareAccessAuditLogLevel: jsii.String("fileShareAccessAuditLogLevel"),

	// the properties below are optional
	auditLogDestination: jsii.String("auditLogDestination"),
}

type CfnFileSystem_ClientConfigurationsProperty added in v2.2.0

type CfnFileSystem_ClientConfigurationsProperty struct {
	// A value that specifies who can mount the file system.
	//
	// You can provide a wildcard character ( `*` ), an IP address ( `0.0.0.0` ), or a CIDR address ( `192.0.2.0/24` ). By default, Amazon FSx uses the wildcard character when specifying the client.
	Clients *string `field:"optional" json:"clients" yaml:"clients"`
	// The options to use when mounting the file system.
	//
	// For a list of options that you can use with Network File System (NFS), see the [exports(5) - Linux man page](https://docs.aws.amazon.com/https://linux.die.net/man/5/exports) . When choosing your options, consider the following:
	//
	// - `crossmnt` is used by default. If you don't specify `crossmnt` when changing the client configuration, you won't be able to see or access snapshots in your file system's snapshot directory.
	// - `sync` is used by default. If you instead specify `async` , the system acknowledges writes before writing to disk. If the system crashes before the writes are finished, you lose the unwritten data.
	Options *[]*string `field:"optional" json:"options" yaml:"options"`
}

Specifies who can mount an OpenZFS file system and the options available while mounting the file system.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

clientConfigurationsProperty := &clientConfigurationsProperty{
	clients: jsii.String("clients"),
	options: []*string{
		jsii.String("options"),
	},
}

type CfnFileSystem_DiskIopsConfigurationProperty

type CfnFileSystem_DiskIopsConfigurationProperty struct {
	// The total number of SSD IOPS provisioned for the file system.
	Iops *float64 `field:"optional" json:"iops" yaml:"iops"`
	// Specifies whether the number of IOPS for the file system is using the system default ( `AUTOMATIC` ) or was provisioned by the customer ( `USER_PROVISIONED` ).
	Mode *string `field:"optional" json:"mode" yaml:"mode"`
}

The SSD IOPS (input/output operations per second) configuration for an Amazon FSx for NetApp ONTAP or Amazon FSx for OpenZFS file system.

The default is 3 IOPS per GB of storage capacity, but you can provision additional IOPS per GB of storage. The configuration consists of the total number of provisioned SSD IOPS and how the amount was provisioned (by the customer or by the system).

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

diskIopsConfigurationProperty := &diskIopsConfigurationProperty{
	iops: jsii.Number(123),
	mode: jsii.String("mode"),
}

type CfnFileSystem_LustreConfigurationProperty

type CfnFileSystem_LustreConfigurationProperty struct {
	// (Optional) Available with `Scratch` and `Persistent_1` deployment types.
	//
	// When you create your file system, your existing S3 objects appear as file and directory listings. Use this property to choose how Amazon FSx keeps your file and directory listings up to date as you add or modify objects in your linked S3 bucket. `AutoImportPolicy` can have the following values:
	//
	// - `NONE` - (Default) AutoImport is off. Amazon FSx only updates file and directory listings from the linked S3 bucket when the file system is created. FSx does not update file and directory listings for any new or changed objects after choosing this option.
	// - `NEW` - AutoImport is on. Amazon FSx automatically imports directory listings of any new objects added to the linked S3 bucket that do not currently exist in the FSx file system.
	// - `NEW_CHANGED` - AutoImport is on. Amazon FSx automatically imports file and directory listings of any new objects added to the S3 bucket and any existing objects that are changed in the S3 bucket after you choose this option.
	// - `NEW_CHANGED_DELETED` - AutoImport is on. Amazon FSx automatically imports file and directory listings of any new objects added to the S3 bucket, any existing objects that are changed in the S3 bucket, and any objects that were deleted in the S3 bucket.
	//
	// For more information, see [Automatically import updates from your S3 bucket](https://docs.aws.amazon.com/fsx/latest/LustreGuide/autoimport-data-repo.html) .
	//
	// > This parameter is not supported for Lustre file systems using the `Persistent_2` deployment type.
	AutoImportPolicy *string `field:"optional" json:"autoImportPolicy" yaml:"autoImportPolicy"`
	// The number of days to retain automatic backups.
	//
	// Setting this property to `0` disables automatic backups. You can retain automatic backups for a maximum of 90 days. The default is `0` .
	AutomaticBackupRetentionDays *float64 `field:"optional" json:"automaticBackupRetentionDays" yaml:"automaticBackupRetentionDays"`
	// A Boolean flag indicating whether tags for the file system should be copied to backups.
	//
	// This value defaults to false. If it's set to true, all tags for the file system are copied to all automatic and user-initiated backups where the user doesn't specify tags. If this value is true, and you specify one or more tags, only the specified tags are copied to backups. If you specify one or more tags when creating a user-initiated backup, no tags are copied from the file system, regardless of this value. Only valid for use with `PERSISTENT_1` deployment types.
	CopyTagsToBackups interface{} `field:"optional" json:"copyTagsToBackups" yaml:"copyTagsToBackups"`
	// A recurring daily time, in the format `HH:MM` .
	//
	// `HH` is the zero-padded hour of the day (0-23), and `MM` is the zero-padded minute of the hour. For example, `05:00` specifies 5 AM daily.
	DailyAutomaticBackupStartTime *string `field:"optional" json:"dailyAutomaticBackupStartTime" yaml:"dailyAutomaticBackupStartTime"`
	// Sets the data compression configuration for the file system. `DataCompressionType` can have the following values:.
	//
	// - `NONE` - (Default) Data compression is turned off when the file system is created.
	// - `LZ4` - Data compression is turned on with the LZ4 algorithm.
	//
	// For more information, see [Lustre data compression](https://docs.aws.amazon.com/fsx/latest/LustreGuide/data-compression.html) in the *Amazon FSx for Lustre User Guide* .
	DataCompressionType *string `field:"optional" json:"dataCompressionType" yaml:"dataCompressionType"`
	// (Optional) Choose `SCRATCH_1` and `SCRATCH_2` deployment types when you need temporary storage and shorter-term processing of data.
	//
	// The `SCRATCH_2` deployment type provides in-transit encryption of data and higher burst throughput capacity than `SCRATCH_1` .
	//
	// Choose `PERSISTENT_1` for longer-term storage and for throughput-focused workloads that aren’t latency-sensitive. `PERSISTENT_1` supports encryption of data in transit, and is available in all AWS Regions in which FSx for Lustre is available.
	//
	// Choose `PERSISTENT_2` for longer-term storage and for latency-sensitive workloads that require the highest levels of IOPS/throughput. `PERSISTENT_2` supports SSD storage, and offers higher `PerUnitStorageThroughput` (up to 1000 MB/s/TiB). `PERSISTENT_2` is available in a limited number of AWS Regions . For more information, and an up-to-date list of AWS Regions in which `PERSISTENT_2` is available, see [File system deployment options for FSx for Lustre](https://docs.aws.amazon.com/fsx/latest/LustreGuide/using-fsx-lustre.html#lustre-deployment-types) in the *Amazon FSx for Lustre User Guide* .
	//
	// > If you choose `PERSISTENT_2` , and you set `FileSystemTypeVersion` to `2.10` , the `CreateFileSystem` operation fails.
	//
	// Encryption of data in transit is automatically turned on when you access `SCRATCH_2` , `PERSISTENT_1` and `PERSISTENT_2` file systems from Amazon EC2 instances that [support automatic encryption](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/data-                 protection.html) in the AWS Regions where they are available. For more information about encryption in transit for FSx for Lustre file systems, see [Encrypting data in transit](https://docs.aws.amazon.com/fsx/latest/LustreGuide/encryption-in-transit-fsxl.html) in the *Amazon FSx for Lustre User Guide* .
	//
	// (Default = `SCRATCH_1` ).
	DeploymentType *string `field:"optional" json:"deploymentType" yaml:"deploymentType"`
	// The type of drive cache used by `PERSISTENT_1` file systems that are provisioned with HDD storage devices.
	//
	// This parameter is required when storage type is HDD. Set this property to `READ` to improve the performance for frequently accessed files by caching up to 20% of the total storage capacity of the file system.
	//
	// This parameter is required when `StorageType` is set to `HDD` and `DeploymentType` is `PERSISTENT_1` .
	DriveCacheType *string `field:"optional" json:"driveCacheType" yaml:"driveCacheType"`
	// (Optional) Available with `Scratch` and `Persistent_1` deployment types.
	//
	// Specifies the path in the Amazon S3 bucket where the root of your Amazon FSx file system is exported. The path must use the same Amazon S3 bucket as specified in ImportPath. You can provide an optional prefix to which new and changed data is to be exported from your Amazon FSx for Lustre file system. If an `ExportPath` value is not provided, Amazon FSx sets a default export path, `s3://import-bucket/FSxLustre[creation-timestamp]` . The timestamp is in UTC format, for example `s3://import-bucket/FSxLustre20181105T222312Z` .
	//
	// The Amazon S3 export bucket must be the same as the import bucket specified by `ImportPath` . If you specify only a bucket name, such as `s3://import-bucket` , you get a 1:1 mapping of file system objects to S3 bucket objects. This mapping means that the input data in S3 is overwritten on export. If you provide a custom prefix in the export path, such as `s3://import-bucket/[custom-optional-prefix]` , Amazon FSx exports the contents of your file system to that export prefix in the Amazon S3 bucket.
	//
	// > This parameter is not supported for file systems using the `Persistent_2` deployment type.
	ExportPath *string `field:"optional" json:"exportPath" yaml:"exportPath"`
	// (Optional) For files imported from a data repository, this value determines the stripe count and maximum amount of data per file (in MiB) stored on a single physical disk.
	//
	// The maximum number of disks that a single file can be striped across is limited by the total number of disks that make up the file system.
	//
	// The default chunk size is 1,024 MiB (1 GiB) and can go as high as 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.
	//
	// > This parameter is not supported for Lustre file systems using the `Persistent_2` deployment type.
	ImportedFileChunkSize *float64 `field:"optional" json:"importedFileChunkSize" yaml:"importedFileChunkSize"`
	// (Optional) The path to the Amazon S3 bucket (including the optional prefix) that you're using as the data repository for your Amazon FSx for Lustre file system.
	//
	// The root of your FSx for Lustre file system will be mapped to the root of the Amazon S3 bucket you select. An example is `s3://import-bucket/optional-prefix` . If you specify a prefix after the Amazon S3 bucket name, only object keys with that prefix are loaded into the file system.
	//
	// > This parameter is not supported for Lustre file systems using the `Persistent_2` deployment type.
	ImportPath *string `field:"optional" json:"importPath" yaml:"importPath"`
	// Required with `PERSISTENT_1` and `PERSISTENT_2` deployment types, provisions the amount of read and write throughput for each 1 tebibyte (TiB) of file system storage capacity, in MB/s/TiB.
	//
	// File system throughput capacity is calculated by multiplying file system storage capacity (TiB) by the `PerUnitStorageThroughput` (MB/s/TiB). For a 2.4-TiB file system, provisioning 50 MB/s/TiB of `PerUnitStorageThroughput` yields 120 MB/s of file system throughput. You pay for the amount of throughput that you provision.
	//
	// Valid values:
	//
	// - For `PERSISTENT_1` SSD storage: 50, 100, 200 MB/s/TiB.
	// - For `PERSISTENT_1` HDD storage: 12, 40 MB/s/TiB.
	// - For `PERSISTENT_2` SSD storage: 125, 250, 500, 1000 MB/s/TiB.
	PerUnitStorageThroughput *float64 `field:"optional" json:"perUnitStorageThroughput" yaml:"perUnitStorageThroughput"`
	// A recurring weekly time, in the format `D:HH:MM` .
	//
	// `D` is the day of the week, for which 1 represents Monday and 7 represents Sunday. For further details, see [the ISO-8601 spec as described on Wikipedia](https://docs.aws.amazon.com/https://en.wikipedia.org/wiki/ISO_week_date) .
	//
	// `HH` is the zero-padded hour of the day (0-23), and `MM` is the zero-padded minute of the hour.
	//
	// For example, `1:05:00` specifies maintenance at 5 AM Monday.
	WeeklyMaintenanceStartTime *string `field:"optional" json:"weeklyMaintenanceStartTime" yaml:"weeklyMaintenanceStartTime"`
}

The configuration for the Amazon FSx for Lustre file system.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

lustreConfigurationProperty := &lustreConfigurationProperty{
	autoImportPolicy: jsii.String("autoImportPolicy"),
	automaticBackupRetentionDays: jsii.Number(123),
	copyTagsToBackups: jsii.Boolean(false),
	dailyAutomaticBackupStartTime: jsii.String("dailyAutomaticBackupStartTime"),
	dataCompressionType: jsii.String("dataCompressionType"),
	deploymentType: jsii.String("deploymentType"),
	driveCacheType: jsii.String("driveCacheType"),
	exportPath: jsii.String("exportPath"),
	importedFileChunkSize: jsii.Number(123),
	importPath: jsii.String("importPath"),
	perUnitStorageThroughput: jsii.Number(123),
	weeklyMaintenanceStartTime: jsii.String("weeklyMaintenanceStartTime"),
}

type CfnFileSystem_NfsExportsProperty added in v2.2.0

type CfnFileSystem_NfsExportsProperty struct {
	// A list of configuration objects that contain the client and options for mounting the OpenZFS file system.
	ClientConfigurations interface{} `field:"optional" json:"clientConfigurations" yaml:"clientConfigurations"`
}

The configuration object for mounting a file system.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

nfsExportsProperty := &nfsExportsProperty{
	clientConfigurations: []interface{}{
		&clientConfigurationsProperty{
			clients: jsii.String("clients"),
			options: []*string{
				jsii.String("options"),
			},
		},
	},
}

type CfnFileSystem_OntapConfigurationProperty

type CfnFileSystem_OntapConfigurationProperty struct {
	// Specifies the FSx for ONTAP file system deployment type to use in creating the file system.
	//
	// - `MULTI_AZ_1` - (Default) A high availability file system configured for Multi-AZ redundancy to tolerate temporary Availability Zone (AZ) unavailability.
	// - `SINGLE_AZ_1` - A file system configured for Single-AZ redundancy.
	//
	// For information about the use cases for Multi-AZ and Single-AZ deployments, refer to [Choosing a file system deployment type](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-AZ.html) .
	DeploymentType *string `field:"required" json:"deploymentType" yaml:"deploymentType"`
	// The number of days to retain automatic backups.
	//
	// Setting this property to `0` disables automatic backups. You can retain automatic backups for a maximum of 90 days. The default is `0` .
	AutomaticBackupRetentionDays *float64 `field:"optional" json:"automaticBackupRetentionDays" yaml:"automaticBackupRetentionDays"`
	// A recurring daily time, in the format `HH:MM` .
	//
	// `HH` is the zero-padded hour of the day (0-23), and `MM` is the zero-padded minute of the hour. For example, `05:00` specifies 5 AM daily.
	DailyAutomaticBackupStartTime *string `field:"optional" json:"dailyAutomaticBackupStartTime" yaml:"dailyAutomaticBackupStartTime"`
	// The SSD IOPS configuration for the FSx for ONTAP file system.
	DiskIopsConfiguration interface{} `field:"optional" json:"diskIopsConfiguration" yaml:"diskIopsConfiguration"`
	// (Multi-AZ only) Specifies the IP address range in which the endpoints to access your file system will be created.
	//
	// By default, Amazon FSx selects an unused IP address range for you from the 198.19.* range.
	//
	// > The Endpoint IP address range you select for your file system must exist outside the VPC's CIDR range and must be at least /30 or larger.
	EndpointIpAddressRange *string `field:"optional" json:"endpointIpAddressRange" yaml:"endpointIpAddressRange"`
	// The ONTAP administrative password for the `fsxadmin` user with which you administer your file system using the NetApp ONTAP CLI and REST API.
	FsxAdminPassword *string `field:"optional" json:"fsxAdminPassword" yaml:"fsxAdminPassword"`
	// Required when `DeploymentType` is set to `MULTI_AZ_1` .
	//
	// This specifies the subnet in which you want the preferred file server to be located.
	PreferredSubnetId *string `field:"optional" json:"preferredSubnetId" yaml:"preferredSubnetId"`
	// (Multi-AZ only) Specifies the virtual private cloud (VPC) route tables in which your file system's endpoints will be created.
	//
	// You should specify all VPC route tables associated with the subnets in which your clients are located. By default, Amazon FSx selects your VPC's default route table.
	RouteTableIds *[]*string `field:"optional" json:"routeTableIds" yaml:"routeTableIds"`
	// Sets the throughput capacity for the file system that you're creating.
	//
	// Valid values are 128, 256, 512, 1024, and 2048 MBps.
	ThroughputCapacity *float64 `field:"optional" json:"throughputCapacity" yaml:"throughputCapacity"`
	// A recurring weekly time, in the format `D:HH:MM` .
	//
	// `D` is the day of the week, for which 1 represents Monday and 7 represents Sunday. For further details, see [the ISO-8601 spec as described on Wikipedia](https://docs.aws.amazon.com/https://en.wikipedia.org/wiki/ISO_week_date) .
	//
	// `HH` is the zero-padded hour of the day (0-23), and `MM` is the zero-padded minute of the hour.
	//
	// For example, `1:05:00` specifies maintenance at 5 AM Monday.
	WeeklyMaintenanceStartTime *string `field:"optional" json:"weeklyMaintenanceStartTime" yaml:"weeklyMaintenanceStartTime"`
}

The configuration for this Amazon FSx for NetApp ONTAP file system.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ontapConfigurationProperty := &ontapConfigurationProperty{
	deploymentType: jsii.String("deploymentType"),

	// the properties below are optional
	automaticBackupRetentionDays: jsii.Number(123),
	dailyAutomaticBackupStartTime: jsii.String("dailyAutomaticBackupStartTime"),
	diskIopsConfiguration: &diskIopsConfigurationProperty{
		iops: jsii.Number(123),
		mode: jsii.String("mode"),
	},
	endpointIpAddressRange: jsii.String("endpointIpAddressRange"),
	fsxAdminPassword: jsii.String("fsxAdminPassword"),
	preferredSubnetId: jsii.String("preferredSubnetId"),
	routeTableIds: []*string{
		jsii.String("routeTableIds"),
	},
	throughputCapacity: jsii.Number(123),
	weeklyMaintenanceStartTime: jsii.String("weeklyMaintenanceStartTime"),
}

type CfnFileSystem_OpenZFSConfigurationProperty added in v2.2.0

type CfnFileSystem_OpenZFSConfigurationProperty struct {
	// Specifies the file system deployment type.
	//
	// Amazon FSx for OpenZFS supports `SINGLE_AZ_1` . `SINGLE_AZ_1` deployment type is configured for redundancy within a single Availability Zone.
	DeploymentType *string `field:"required" json:"deploymentType" yaml:"deploymentType"`
	// The number of days to retain automatic backups.
	//
	// Setting this property to `0` disables automatic backups. You can retain automatic backups for a maximum of 90 days. The default is `0` .
	AutomaticBackupRetentionDays *float64 `field:"optional" json:"automaticBackupRetentionDays" yaml:"automaticBackupRetentionDays"`
	// A Boolean value indicating whether tags for the file system should be copied to backups.
	//
	// This value defaults to `false` . If it's set to `true` , all tags for the file system are copied to all automatic and user-initiated backups where the user doesn't specify tags. If this value is `true` , and you specify one or more tags, only the specified tags are copied to backups. If you specify one or more tags when creating a user-initiated backup, no tags are copied from the file system, regardless of this value.
	CopyTagsToBackups interface{} `field:"optional" json:"copyTagsToBackups" yaml:"copyTagsToBackups"`
	// A Boolean value indicating whether tags for the volume should be copied to snapshots.
	//
	// This value defaults to `false` . If it's set to `true` , all tags for the volume are copied to snapshots where the user doesn't specify tags. If this value is `true` , and you specify one or more tags, only the specified tags are copied to snapshots. If you specify one or more tags when creating the snapshot, no tags are copied from the volume, regardless of this value.
	CopyTagsToVolumes interface{} `field:"optional" json:"copyTagsToVolumes" yaml:"copyTagsToVolumes"`
	// A recurring daily time, in the format `HH:MM` .
	//
	// `HH` is the zero-padded hour of the day (0-23), and `MM` is the zero-padded minute of the hour. For example, `05:00` specifies 5 AM daily.
	DailyAutomaticBackupStartTime *string `field:"optional" json:"dailyAutomaticBackupStartTime" yaml:"dailyAutomaticBackupStartTime"`
	// The SSD IOPS (input/output operations per second) configuration for an Amazon FSx for NetApp ONTAP or Amazon FSx for OpenZFS file system.
	//
	// The default is 3 IOPS per GB of storage capacity, but you can provision additional IOPS per GB of storage. The configuration consists of the total number of provisioned SSD IOPS and how the amount was provisioned (by the customer or by the system).
	DiskIopsConfiguration interface{} `field:"optional" json:"diskIopsConfiguration" yaml:"diskIopsConfiguration"`
	// To delete a file system if there are child volumes present below the root volume, use the string `DELETE_CHILD_VOLUMES_AND_SNAPSHOTS` .
	//
	// If your file system has child volumes and you don't use this option, the delete request will fail.
	Options *[]*string `field:"optional" json:"options" yaml:"options"`
	// The configuration Amazon FSx uses when creating the root value of the Amazon FSx for OpenZFS file system.
	//
	// All volumes are children of the root volume.
	RootVolumeConfiguration interface{} `field:"optional" json:"rootVolumeConfiguration" yaml:"rootVolumeConfiguration"`
	// Specifies the throughput of an Amazon FSx for OpenZFS file system, measured in megabytes per second (MB/s).
	//
	// Valid values are 64, 128, 256, 512, 1024, 2048, 3072, or 4096 MB/s. You pay for additional throughput capacity that you provision.
	ThroughputCapacity *float64 `field:"optional" json:"throughputCapacity" yaml:"throughputCapacity"`
	// A recurring weekly time, in the format `D:HH:MM` .
	//
	// `D` is the day of the week, for which 1 represents Monday and 7 represents Sunday. For further details, see [the ISO-8601 spec as described on Wikipedia](https://docs.aws.amazon.com/https://en.wikipedia.org/wiki/ISO_week_date) .
	//
	// `HH` is the zero-padded hour of the day (0-23), and `MM` is the zero-padded minute of the hour.
	//
	// For example, `1:05:00` specifies maintenance at 5 AM Monday.
	WeeklyMaintenanceStartTime *string `field:"optional" json:"weeklyMaintenanceStartTime" yaml:"weeklyMaintenanceStartTime"`
}

The OpenZFS configuration for the file system that's being created.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

openZFSConfigurationProperty := &openZFSConfigurationProperty{
	deploymentType: jsii.String("deploymentType"),

	// the properties below are optional
	automaticBackupRetentionDays: jsii.Number(123),
	copyTagsToBackups: jsii.Boolean(false),
	copyTagsToVolumes: jsii.Boolean(false),
	dailyAutomaticBackupStartTime: jsii.String("dailyAutomaticBackupStartTime"),
	diskIopsConfiguration: &diskIopsConfigurationProperty{
		iops: jsii.Number(123),
		mode: jsii.String("mode"),
	},
	options: []*string{
		jsii.String("options"),
	},
	rootVolumeConfiguration: &rootVolumeConfigurationProperty{
		copyTagsToSnapshots: jsii.Boolean(false),
		dataCompressionType: jsii.String("dataCompressionType"),
		nfsExports: []interface{}{
			&nfsExportsProperty{
				clientConfigurations: []interface{}{
					&clientConfigurationsProperty{
						clients: jsii.String("clients"),
						options: []*string{
							jsii.String("options"),
						},
					},
				},
			},
		},
		readOnly: jsii.Boolean(false),
		recordSizeKiB: jsii.Number(123),
		userAndGroupQuotas: []interface{}{
			&userAndGroupQuotasProperty{
				id: jsii.Number(123),
				storageCapacityQuotaGiB: jsii.Number(123),
				type: jsii.String("type"),
			},
		},
	},
	throughputCapacity: jsii.Number(123),
	weeklyMaintenanceStartTime: jsii.String("weeklyMaintenanceStartTime"),
}

type CfnFileSystem_RootVolumeConfigurationProperty added in v2.2.0

type CfnFileSystem_RootVolumeConfigurationProperty struct {
	// A Boolean value indicating whether tags for the volume should be copied to snapshots of the volume.
	//
	// This value defaults to `false` . If it's set to `true` , all tags for the volume are copied to snapshots where the user doesn't specify tags. If this value is `true` and you specify one or more tags, only the specified tags are copied to snapshots. If you specify one or more tags when creating the snapshot, no tags are copied from the volume, regardless of this value.
	CopyTagsToSnapshots interface{} `field:"optional" json:"copyTagsToSnapshots" yaml:"copyTagsToSnapshots"`
	// Specifies the method used to compress the data on the volume. The compression type is `NONE` by default.
	//
	// - `NONE` - Doesn't compress the data on the volume. `NONE` is the default.
	// - `ZSTD` - Compresses the data in the volume using the Zstandard (ZSTD) compression algorithm. Compared to LZ4, Z-Standard provides a better compression ratio to minimize on-disk storage utilization.
	// - `LZ4` - Compresses the data in the volume using the LZ4 compression algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and delivers higher write throughput speeds.
	DataCompressionType *string `field:"optional" json:"dataCompressionType" yaml:"dataCompressionType"`
	// The configuration object for mounting a file system.
	NfsExports interface{} `field:"optional" json:"nfsExports" yaml:"nfsExports"`
	// A Boolean value indicating whether the volume is read-only.
	//
	// Setting this value to `true` can be useful after you have completed changes to a volume and no longer want changes to occur.
	ReadOnly interface{} `field:"optional" json:"readOnly" yaml:"readOnly"`
	// Specifies the record size of an OpenZFS root volume, in kibibytes (KiB).
	//
	// Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. The default is 128 KiB. Most workloads should use the default record size. Database workflows can benefit from a smaller record size, while streaming workflows can benefit from a larger record size. For additional guidance on setting a custom record size, see [Tips for maximizing performance](https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#performance-tips-zfs) in the *Amazon FSx for OpenZFS User Guide* .
	RecordSizeKiB *float64 `field:"optional" json:"recordSizeKiB" yaml:"recordSizeKiB"`
	// An object specifying how much storage users or groups can use on the volume.
	UserAndGroupQuotas interface{} `field:"optional" json:"userAndGroupQuotas" yaml:"userAndGroupQuotas"`
}

The configuration of an Amazon FSx for OpenZFS root volume.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

rootVolumeConfigurationProperty := &rootVolumeConfigurationProperty{
	copyTagsToSnapshots: jsii.Boolean(false),
	dataCompressionType: jsii.String("dataCompressionType"),
	nfsExports: []interface{}{
		&nfsExportsProperty{
			clientConfigurations: []interface{}{
				&clientConfigurationsProperty{
					clients: jsii.String("clients"),
					options: []*string{
						jsii.String("options"),
					},
				},
			},
		},
	},
	readOnly: jsii.Boolean(false),
	recordSizeKiB: jsii.Number(123),
	userAndGroupQuotas: []interface{}{
		&userAndGroupQuotasProperty{
			id: jsii.Number(123),
			storageCapacityQuotaGiB: jsii.Number(123),
			type: jsii.String("type"),
		},
	},
}

type CfnFileSystem_SelfManagedActiveDirectoryConfigurationProperty

type CfnFileSystem_SelfManagedActiveDirectoryConfigurationProperty struct {
	// A list of up to three IP addresses of DNS servers or domain controllers in the self-managed AD directory.
	DnsIps *[]*string `field:"optional" json:"dnsIps" yaml:"dnsIps"`
	// The fully qualified domain name of the self-managed AD directory, such as `corp.example.com` .
	DomainName *string `field:"optional" json:"domainName" yaml:"domainName"`
	// (Optional) The name of the domain group whose members are granted administrative privileges for the file system.
	//
	// Administrative privileges include taking ownership of files and folders, setting audit controls (audit ACLs) on files and folders, and administering the file system remotely by using the FSx Remote PowerShell. The group that you specify must already exist in your domain. If you don't provide one, your AD domain's Domain Admins group is used.
	FileSystemAdministratorsGroup *string `field:"optional" json:"fileSystemAdministratorsGroup" yaml:"fileSystemAdministratorsGroup"`
	// (Optional) The fully qualified distinguished name of the organizational unit within your self-managed AD directory.
	//
	// Amazon FSx only accepts OU as the direct parent of the file system. An example is `OU=FSx,DC=yourdomain,DC=corp,DC=com` . To learn more, see [RFC 2253](https://docs.aws.amazon.com/https://tools.ietf.org/html/rfc2253) . If none is provided, the FSx file system is created in the default location of your self-managed AD directory.
	//
	// > Only Organizational Unit (OU) objects can be the direct parent of the file system that you're creating.
	OrganizationalUnitDistinguishedName *string `field:"optional" json:"organizationalUnitDistinguishedName" yaml:"organizationalUnitDistinguishedName"`
	// The password for the service account on your self-managed AD domain that Amazon FSx will use to join to your AD domain.
	Password *string `field:"optional" json:"password" yaml:"password"`
	// The user name for the service account on your self-managed AD domain that Amazon FSx will use to join to your AD domain.
	//
	// This account must have the permission to join computers to the domain in the organizational unit provided in `OrganizationalUnitDistinguishedName` , or in the default location of your AD domain.
	UserName *string `field:"optional" json:"userName" yaml:"userName"`
}

The configuration that Amazon FSx uses to join a FSx for Windows File Server file system or an ONTAP storage virtual machine (SVM) to a self-managed (including on-premises) Microsoft Active Directory (AD) directory.

For more information, see [Using Amazon FSx with your self-managed Microsoft Active Directory](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/self-managed-AD.html) or [Managing SVMs](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/managing-svms.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

selfManagedActiveDirectoryConfigurationProperty := &selfManagedActiveDirectoryConfigurationProperty{
	dnsIps: []*string{
		jsii.String("dnsIps"),
	},
	domainName: jsii.String("domainName"),
	fileSystemAdministratorsGroup: jsii.String("fileSystemAdministratorsGroup"),
	organizationalUnitDistinguishedName: jsii.String("organizationalUnitDistinguishedName"),
	password: jsii.String("password"),
	userName: jsii.String("userName"),
}

type CfnFileSystem_UserAndGroupQuotasProperty added in v2.2.0

type CfnFileSystem_UserAndGroupQuotasProperty struct {
	// The ID of the user or group.
	Id *float64 `field:"optional" json:"id" yaml:"id"`
	// The amount of storage that the user or group can use in gibibytes (GiB).
	StorageCapacityQuotaGiB *float64 `field:"optional" json:"storageCapacityQuotaGiB" yaml:"storageCapacityQuotaGiB"`
	// A value that specifies whether the quota applies to a user or group.
	Type *string `field:"optional" json:"type" yaml:"type"`
}

The configuration for how much storage a user or group can use on the volume.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

userAndGroupQuotasProperty := &userAndGroupQuotasProperty{
	id: jsii.Number(123),
	storageCapacityQuotaGiB: jsii.Number(123),
	type: jsii.String("type"),
}

type CfnFileSystem_WindowsConfigurationProperty

type CfnFileSystem_WindowsConfigurationProperty struct {
	// Sets the throughput capacity of an Amazon FSx file system, measured in megabytes per second (MB/s), in 2 to the *n* th increments, between 2^3 (8) and 2^11 (2048).
	ThroughputCapacity *float64 `field:"required" json:"throughputCapacity" yaml:"throughputCapacity"`
	// The ID for an existing AWS Managed Microsoft Active Directory (AD) instance that the file system should join when it's created.
	//
	// Required if you are joining the file system to an existing AWS Managed Microsoft AD.
	ActiveDirectoryId *string `field:"optional" json:"activeDirectoryId" yaml:"activeDirectoryId"`
	// An array of one or more DNS alias names that you want to associate with the Amazon FSx file system.
	//
	// Aliases allow you to use existing DNS names to access the data in your Amazon FSx file system. You can associate up to 50 aliases with a file system at any time.
	//
	// For more information, see [Working with DNS Aliases](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-dns-aliases.html) and [Walkthrough 5: Using DNS aliases to access your file system](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/walkthrough05-file-system-custom-CNAME.html) , including additional steps you must take to be able to access your file system using a DNS alias.
	//
	// An alias name has to meet the following requirements:
	//
	// - Formatted as a fully-qualified domain name (FQDN), `hostname.domain` , for example, `accounting.example.com` .
	// - Can contain alphanumeric characters, the underscore (_), and the hyphen (-).
	// - Cannot start or end with a hyphen.
	// - Can start with a numeric.
	//
	// For DNS alias names, Amazon FSx stores alphabetical characters as lowercase letters (a-z), regardless of how you specify them: as uppercase letters, lowercase letters, or the corresponding letters in escape codes.
	Aliases *[]*string `field:"optional" json:"aliases" yaml:"aliases"`
	// 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.
	AuditLogConfiguration interface{} `field:"optional" json:"auditLogConfiguration" yaml:"auditLogConfiguration"`
	// The number of days to retain automatic backups.
	//
	// Setting this property to `0` disables automatic backups. You can retain automatic backups for a maximum of 90 days. The default is `0` .
	AutomaticBackupRetentionDays *float64 `field:"optional" json:"automaticBackupRetentionDays" yaml:"automaticBackupRetentionDays"`
	// A boolean flag indicating whether tags for the file system should be copied to backups.
	//
	// This value defaults to false. If it's set to true, all tags for the file system are copied to all automatic and user-initiated backups where the user doesn't specify tags. If this value is true, and you specify one or more tags, only the specified tags are copied to backups. If you specify one or more tags when creating a user-initiated backup, no tags are copied from the file system, regardless of this value.
	CopyTagsToBackups interface{} `field:"optional" json:"copyTagsToBackups" yaml:"copyTagsToBackups"`
	// A recurring daily time, in the format `HH:MM` .
	//
	// `HH` is the zero-padded hour of the day (0-23), and `MM` is the zero-padded minute of the hour. For example, `05:00` specifies 5 AM daily.
	DailyAutomaticBackupStartTime *string `field:"optional" json:"dailyAutomaticBackupStartTime" yaml:"dailyAutomaticBackupStartTime"`
	// Specifies the file system deployment type, valid values are the following:.
	//
	// - `MULTI_AZ_1` - Deploys a high availability file system that is configured for Multi-AZ redundancy to tolerate temporary Availability Zone (AZ) unavailability. You can only deploy a Multi-AZ file system in AWS Regions that have a minimum of three Availability Zones. Also supports HDD storage type
	// - `SINGLE_AZ_1` - (Default) Choose to deploy a file system that is configured for single AZ redundancy.
	// - `SINGLE_AZ_2` - The latest generation Single AZ file system. Specifies a file system that is configured for single AZ redundancy and supports HDD storage type.
	//
	// For more information, see [Availability and Durability: Single-AZ and Multi-AZ File Systems](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html) .
	DeploymentType *string `field:"optional" json:"deploymentType" yaml:"deploymentType"`
	// Required when `DeploymentType` is set to `MULTI_AZ_1` .
	//
	// This specifies the subnet in which you want the preferred file server to be located. For in- AWS applications, we recommend that you launch your clients in the same availability zone as your preferred file server to reduce cross-availability zone data transfer costs and minimize latency.
	PreferredSubnetId *string `field:"optional" json:"preferredSubnetId" yaml:"preferredSubnetId"`
	// The configuration that Amazon FSx uses to join a FSx for Windows File Server file system or an ONTAP storage virtual machine (SVM) to a self-managed (including on-premises) Microsoft Active Directory (AD) directory.
	//
	// For more information, see [Using Amazon FSx with your self-managed Microsoft Active Directory](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/self-managed-AD.html) or [Managing SVMs](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/managing-svms.html) .
	SelfManagedActiveDirectoryConfiguration interface{} `field:"optional" json:"selfManagedActiveDirectoryConfiguration" yaml:"selfManagedActiveDirectoryConfiguration"`
	// A recurring weekly time, in the format `D:HH:MM` .
	//
	// `D` is the day of the week, for which 1 represents Monday and 7 represents Sunday. For further details, see [the ISO-8601 spec as described on Wikipedia](https://docs.aws.amazon.com/https://en.wikipedia.org/wiki/ISO_week_date) .
	//
	// `HH` is the zero-padded hour of the day (0-23), and `MM` is the zero-padded minute of the hour.
	//
	// For example, `1:05:00` specifies maintenance at 5 AM Monday.
	WeeklyMaintenanceStartTime *string `field:"optional" json:"weeklyMaintenanceStartTime" yaml:"weeklyMaintenanceStartTime"`
}

The Microsoft Windows configuration for the file system that's being created.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

windowsConfigurationProperty := &windowsConfigurationProperty{
	throughputCapacity: jsii.Number(123),

	// the properties below are optional
	activeDirectoryId: jsii.String("activeDirectoryId"),
	aliases: []*string{
		jsii.String("aliases"),
	},
	auditLogConfiguration: &auditLogConfigurationProperty{
		fileAccessAuditLogLevel: jsii.String("fileAccessAuditLogLevel"),
		fileShareAccessAuditLogLevel: jsii.String("fileShareAccessAuditLogLevel"),

		// the properties below are optional
		auditLogDestination: jsii.String("auditLogDestination"),
	},
	automaticBackupRetentionDays: jsii.Number(123),
	copyTagsToBackups: jsii.Boolean(false),
	dailyAutomaticBackupStartTime: jsii.String("dailyAutomaticBackupStartTime"),
	deploymentType: jsii.String("deploymentType"),
	preferredSubnetId: jsii.String("preferredSubnetId"),
	selfManagedActiveDirectoryConfiguration: &selfManagedActiveDirectoryConfigurationProperty{
		dnsIps: []*string{
			jsii.String("dnsIps"),
		},
		domainName: jsii.String("domainName"),
		fileSystemAdministratorsGroup: jsii.String("fileSystemAdministratorsGroup"),
		organizationalUnitDistinguishedName: jsii.String("organizationalUnitDistinguishedName"),
		password: jsii.String("password"),
		userName: jsii.String("userName"),
	},
	weeklyMaintenanceStartTime: jsii.String("weeklyMaintenanceStartTime"),
}

type CfnSnapshot added in v2.18.0

type CfnSnapshot interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// Returns the snapshot's Amazon Resource Name (ARN).
	//
	// Example: `arn:aws:fsx:us-east-2:111133334444:snapshot/fsvol-01234567890123456/fsvolsnap-0123456789abcedf5`.
	AttrResourceArn() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The name of the snapshot.
	Name() *string
	SetName(val *string)
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// An array of key-value pairs to apply to this resource.
	//
	// For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html) .
	Tags() awscdk.TagManager
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// The ID of the volume that the snapshot is of.
	VolumeId() *string
	SetVolumeId(val *string)
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::FSx::Snapshot`.

A snapshot of an Amazon FSx for OpenZFS volume.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnSnapshot := awscdk.Aws_fsx.NewCfnSnapshot(this, jsii.String("MyCfnSnapshot"), &cfnSnapshotProps{
	name: jsii.String("name"),
	volumeId: jsii.String("volumeId"),

	// the properties below are optional
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
})

func NewCfnSnapshot added in v2.18.0

func NewCfnSnapshot(scope constructs.Construct, id *string, props *CfnSnapshotProps) CfnSnapshot

Create a new `AWS::FSx::Snapshot`.

type CfnSnapshotProps added in v2.18.0

type CfnSnapshotProps struct {
	// The name of the snapshot.
	Name *string `field:"required" json:"name" yaml:"name"`
	// The ID of the volume that the snapshot is of.
	VolumeId *string `field:"required" json:"volumeId" yaml:"volumeId"`
	// An array of key-value pairs to apply to this resource.
	//
	// For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html) .
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnSnapshot`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnSnapshotProps := &cfnSnapshotProps{
	name: jsii.String("name"),
	volumeId: jsii.String("volumeId"),

	// the properties below are optional
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
}

type CfnStorageVirtualMachine added in v2.18.0

type CfnStorageVirtualMachine interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// Describes the Microsoft Active Directory configuration to which the SVM is joined, if applicable.
	ActiveDirectoryConfiguration() interface{}
	SetActiveDirectoryConfiguration(val interface{})
	// Returns the storage virtual machine's Amazon Resource Name (ARN).
	//
	// Example: `arn:aws:fsx:us-east-2:111111111111:storage-virtual-machine/fs-0123456789abcdef1/svm-01234567890123456`.
	AttrResourceArn() *string
	// Returns the storgage virtual machine's system generated ID.
	//
	// Example: `svm-0123456789abcedf1`.
	AttrStorageVirtualMachineId() *string
	// Returns the storage virtual machine's system generated unique identifier (UUID).
	//
	// Example: `abcd0123-cd45-ef67-11aa-1111aaaa23bc`.
	AttrUuid() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// Specifies the FSx for ONTAP file system on which to create the SVM.
	FileSystemId() *string
	SetFileSystemId(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The name of the SVM.
	Name() *string
	SetName(val *string)
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The security style of the root volume of the SVM. Specify one of the following values:.
	//
	// - `UNIX` if the file system is managed by a UNIX administrator, the majority of users are NFS clients, and an application accessing the data uses a UNIX user as the service account.
	// - `NTFS` if the file system is managed by a Windows administrator, the majority of users are SMB clients, and an application accessing the data uses a Windows user as the service account.
	// - `MIXED` if the file system is managed by both UNIX and Windows administrators and users consist of both NFS and SMB clients.
	RootVolumeSecurityStyle() *string
	SetRootVolumeSecurityStyle(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Specifies the password to use when logging on to the SVM using a secure shell (SSH) connection to the SVM's management endpoint.
	//
	// Doing so enables you to manage the SVM using the NetApp ONTAP CLI or REST API. If you do not specify a password, you can still use the file system's `fsxadmin` user to manage the SVM. For more information, see [Managing SVMs using the NetApp ONTAP CLI](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/managing-resources-ontap-apps.html#vsadmin-ontap-cli) in the *FSx for ONTAP User Guide* .
	SvmAdminPassword() *string
	SetSvmAdminPassword(val *string)
	// An array of key-value pairs to apply to this resource.
	//
	// For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html) .
	Tags() awscdk.TagManager
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::FSx::StorageVirtualMachine`.

Creates a storage virtual machine (SVM) for an Amazon FSx for ONTAP file system.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnStorageVirtualMachine := awscdk.Aws_fsx.NewCfnStorageVirtualMachine(this, jsii.String("MyCfnStorageVirtualMachine"), &cfnStorageVirtualMachineProps{
	fileSystemId: jsii.String("fileSystemId"),
	name: jsii.String("name"),

	// the properties below are optional
	activeDirectoryConfiguration: &activeDirectoryConfigurationProperty{
		netBiosName: jsii.String("netBiosName"),
		selfManagedActiveDirectoryConfiguration: &selfManagedActiveDirectoryConfigurationProperty{
			dnsIps: []*string{
				jsii.String("dnsIps"),
			},
			domainName: jsii.String("domainName"),
			fileSystemAdministratorsGroup: jsii.String("fileSystemAdministratorsGroup"),
			organizationalUnitDistinguishedName: jsii.String("organizationalUnitDistinguishedName"),
			password: jsii.String("password"),
			userName: jsii.String("userName"),
		},
	},
	rootVolumeSecurityStyle: jsii.String("rootVolumeSecurityStyle"),
	svmAdminPassword: jsii.String("svmAdminPassword"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
})

func NewCfnStorageVirtualMachine added in v2.18.0

func NewCfnStorageVirtualMachine(scope constructs.Construct, id *string, props *CfnStorageVirtualMachineProps) CfnStorageVirtualMachine

Create a new `AWS::FSx::StorageVirtualMachine`.

type CfnStorageVirtualMachineProps added in v2.18.0

type CfnStorageVirtualMachineProps struct {
	// Specifies the FSx for ONTAP file system on which to create the SVM.
	FileSystemId *string `field:"required" json:"fileSystemId" yaml:"fileSystemId"`
	// The name of the SVM.
	Name *string `field:"required" json:"name" yaml:"name"`
	// Describes the Microsoft Active Directory configuration to which the SVM is joined, if applicable.
	ActiveDirectoryConfiguration interface{} `field:"optional" json:"activeDirectoryConfiguration" yaml:"activeDirectoryConfiguration"`
	// The security style of the root volume of the SVM. Specify one of the following values:.
	//
	// - `UNIX` if the file system is managed by a UNIX administrator, the majority of users are NFS clients, and an application accessing the data uses a UNIX user as the service account.
	// - `NTFS` if the file system is managed by a Windows administrator, the majority of users are SMB clients, and an application accessing the data uses a Windows user as the service account.
	// - `MIXED` if the file system is managed by both UNIX and Windows administrators and users consist of both NFS and SMB clients.
	RootVolumeSecurityStyle *string `field:"optional" json:"rootVolumeSecurityStyle" yaml:"rootVolumeSecurityStyle"`
	// Specifies the password to use when logging on to the SVM using a secure shell (SSH) connection to the SVM's management endpoint.
	//
	// Doing so enables you to manage the SVM using the NetApp ONTAP CLI or REST API. If you do not specify a password, you can still use the file system's `fsxadmin` user to manage the SVM. For more information, see [Managing SVMs using the NetApp ONTAP CLI](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/managing-resources-ontap-apps.html#vsadmin-ontap-cli) in the *FSx for ONTAP User Guide* .
	SvmAdminPassword *string `field:"optional" json:"svmAdminPassword" yaml:"svmAdminPassword"`
	// An array of key-value pairs to apply to this resource.
	//
	// For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html) .
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnStorageVirtualMachine`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnStorageVirtualMachineProps := &cfnStorageVirtualMachineProps{
	fileSystemId: jsii.String("fileSystemId"),
	name: jsii.String("name"),

	// the properties below are optional
	activeDirectoryConfiguration: &activeDirectoryConfigurationProperty{
		netBiosName: jsii.String("netBiosName"),
		selfManagedActiveDirectoryConfiguration: &selfManagedActiveDirectoryConfigurationProperty{
			dnsIps: []*string{
				jsii.String("dnsIps"),
			},
			domainName: jsii.String("domainName"),
			fileSystemAdministratorsGroup: jsii.String("fileSystemAdministratorsGroup"),
			organizationalUnitDistinguishedName: jsii.String("organizationalUnitDistinguishedName"),
			password: jsii.String("password"),
			userName: jsii.String("userName"),
		},
	},
	rootVolumeSecurityStyle: jsii.String("rootVolumeSecurityStyle"),
	svmAdminPassword: jsii.String("svmAdminPassword"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
}

type CfnStorageVirtualMachine_ActiveDirectoryConfigurationProperty added in v2.18.0

type CfnStorageVirtualMachine_ActiveDirectoryConfigurationProperty struct {
	// The NetBIOS name of the Active Directory computer object that will be created for your SVM.
	NetBiosName *string `field:"optional" json:"netBiosName" yaml:"netBiosName"`
	// The configuration that Amazon FSx uses to join the ONTAP storage virtual machine (SVM) to your self-managed (including on-premises) Microsoft Active Directory (AD) directory.
	SelfManagedActiveDirectoryConfiguration interface{} `field:"optional" json:"selfManagedActiveDirectoryConfiguration" yaml:"selfManagedActiveDirectoryConfiguration"`
}

Describes the self-managed Microsoft Active Directory to which you want to join the SVM.

Joining an Active Directory provides user authentication and access control for SMB clients, including Microsoft Windows and macOS client accessing the file system.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

activeDirectoryConfigurationProperty := &activeDirectoryConfigurationProperty{
	netBiosName: jsii.String("netBiosName"),
	selfManagedActiveDirectoryConfiguration: &selfManagedActiveDirectoryConfigurationProperty{
		dnsIps: []*string{
			jsii.String("dnsIps"),
		},
		domainName: jsii.String("domainName"),
		fileSystemAdministratorsGroup: jsii.String("fileSystemAdministratorsGroup"),
		organizationalUnitDistinguishedName: jsii.String("organizationalUnitDistinguishedName"),
		password: jsii.String("password"),
		userName: jsii.String("userName"),
	},
}

type CfnStorageVirtualMachine_SelfManagedActiveDirectoryConfigurationProperty added in v2.18.0

type CfnStorageVirtualMachine_SelfManagedActiveDirectoryConfigurationProperty struct {
	// A list of up to three IP addresses of DNS servers or domain controllers in the self-managed AD directory.
	DnsIps *[]*string `field:"optional" json:"dnsIps" yaml:"dnsIps"`
	// The fully qualified domain name of the self-managed AD directory, such as `corp.example.com` .
	DomainName *string `field:"optional" json:"domainName" yaml:"domainName"`
	// (Optional) The name of the domain group whose members are granted administrative privileges for the file system.
	//
	// Administrative privileges include taking ownership of files and folders, setting audit controls (audit ACLs) on files and folders, and administering the file system remotely by using the FSx Remote PowerShell. The group that you specify must already exist in your domain. If you don't provide one, your AD domain's Domain Admins group is used.
	FileSystemAdministratorsGroup *string `field:"optional" json:"fileSystemAdministratorsGroup" yaml:"fileSystemAdministratorsGroup"`
	// (Optional) The fully qualified distinguished name of the organizational unit within your self-managed AD directory.
	//
	// Amazon FSx only accepts OU as the direct parent of the file system. An example is `OU=FSx,DC=yourdomain,DC=corp,DC=com` . To learn more, see [RFC 2253](https://docs.aws.amazon.com/https://tools.ietf.org/html/rfc2253) . If none is provided, the FSx file system is created in the default location of your self-managed AD directory.
	//
	// > Only Organizational Unit (OU) objects can be the direct parent of the file system that you're creating.
	OrganizationalUnitDistinguishedName *string `field:"optional" json:"organizationalUnitDistinguishedName" yaml:"organizationalUnitDistinguishedName"`
	// The password for the service account on your self-managed AD domain that Amazon FSx will use to join to your AD domain.
	Password *string `field:"optional" json:"password" yaml:"password"`
	// The user name for the service account on your self-managed AD domain that Amazon FSx will use to join to your AD domain.
	//
	// This account must have the permission to join computers to the domain in the organizational unit provided in `OrganizationalUnitDistinguishedName` , or in the default location of your AD domain.
	UserName *string `field:"optional" json:"userName" yaml:"userName"`
}

The configuration that Amazon FSx uses to join a FSx for Windows File Server file system or an ONTAP storage virtual machine (SVM) to a self-managed (including on-premises) Microsoft Active Directory (AD) directory.

For more information, see [Using Amazon FSx with your self-managed Microsoft Active Directory](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/self-managed-AD.html) or [Managing SVMs](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/managing-svms.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

selfManagedActiveDirectoryConfigurationProperty := &selfManagedActiveDirectoryConfigurationProperty{
	dnsIps: []*string{
		jsii.String("dnsIps"),
	},
	domainName: jsii.String("domainName"),
	fileSystemAdministratorsGroup: jsii.String("fileSystemAdministratorsGroup"),
	organizationalUnitDistinguishedName: jsii.String("organizationalUnitDistinguishedName"),
	password: jsii.String("password"),
	userName: jsii.String("userName"),
}

type CfnVolume added in v2.18.0

type CfnVolume interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// Returns the volume's Amazon Resource Name (ARN).
	//
	// Example: `arn:aws:fsx:us-east-2:111122223333:volume/fs-0123456789abcdef9/fsvol-01234567891112223`.
	AttrResourceArn() *string
	// Returns the volume's universally unique identifier (UUID).
	//
	// Example: `abcd0123-cd45-ef67-11aa-1111aaaa23bc`.
	AttrUuid() *string
	// Returns the volume's ID.
	//
	// Example: `fsvol-0123456789abcdefa`.
	AttrVolumeId() *string
	// Specifies the ID of the volume backup to use to create a new volume.
	BackupId() *string
	SetBackupId(val *string)
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The name of the volume.
	Name() *string
	SetName(val *string)
	// The tree node.
	Node() constructs.Node
	// The configuration of an Amazon FSx for NetApp ONTAP volume.
	OntapConfiguration() interface{}
	SetOntapConfiguration(val interface{})
	// The configuration of an Amazon FSx for OpenZFS volume.
	OpenZfsConfiguration() interface{}
	SetOpenZfsConfiguration(val interface{})
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// An array of key-value pairs to apply to this resource.
	//
	// For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html) .
	Tags() awscdk.TagManager
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// The type of the volume.
	VolumeType() *string
	SetVolumeType(val *string)
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::FSx::Volume`.

Creates an FSx for ONTAP or Amazon FSx for OpenZFS storage volume.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnVolume := awscdk.Aws_fsx.NewCfnVolume(this, jsii.String("MyCfnVolume"), &cfnVolumeProps{
	name: jsii.String("name"),

	// the properties below are optional
	backupId: jsii.String("backupId"),
	ontapConfiguration: &ontapConfigurationProperty{
		junctionPath: jsii.String("junctionPath"),
		sizeInMegabytes: jsii.String("sizeInMegabytes"),
		storageEfficiencyEnabled: jsii.String("storageEfficiencyEnabled"),
		storageVirtualMachineId: jsii.String("storageVirtualMachineId"),

		// the properties below are optional
		securityStyle: jsii.String("securityStyle"),
		tieringPolicy: &tieringPolicyProperty{
			coolingPeriod: jsii.Number(123),
			name: jsii.String("name"),
		},
	},
	openZfsConfiguration: &openZFSConfigurationProperty{
		parentVolumeId: jsii.String("parentVolumeId"),

		// the properties below are optional
		copyTagsToSnapshots: jsii.Boolean(false),
		dataCompressionType: jsii.String("dataCompressionType"),
		nfsExports: []interface{}{
			&nfsExportsProperty{
				clientConfigurations: []interface{}{
					&clientConfigurationsProperty{
						clients: jsii.String("clients"),
						options: []*string{
							jsii.String("options"),
						},
					},
				},
			},
		},
		options: []*string{
			jsii.String("options"),
		},
		originSnapshot: &originSnapshotProperty{
			copyStrategy: jsii.String("copyStrategy"),
			snapshotArn: jsii.String("snapshotArn"),
		},
		readOnly: jsii.Boolean(false),
		recordSizeKiB: jsii.Number(123),
		storageCapacityQuotaGiB: jsii.Number(123),
		storageCapacityReservationGiB: jsii.Number(123),
		userAndGroupQuotas: []interface{}{
			&userAndGroupQuotasProperty{
				id: jsii.Number(123),
				storageCapacityQuotaGiB: jsii.Number(123),
				type: jsii.String("type"),
			},
		},
	},
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	volumeType: jsii.String("volumeType"),
})

func NewCfnVolume added in v2.18.0

func NewCfnVolume(scope constructs.Construct, id *string, props *CfnVolumeProps) CfnVolume

Create a new `AWS::FSx::Volume`.

type CfnVolumeProps added in v2.18.0

type CfnVolumeProps struct {
	// The name of the volume.
	Name *string `field:"required" json:"name" yaml:"name"`
	// Specifies the ID of the volume backup to use to create a new volume.
	BackupId *string `field:"optional" json:"backupId" yaml:"backupId"`
	// The configuration of an Amazon FSx for NetApp ONTAP volume.
	OntapConfiguration interface{} `field:"optional" json:"ontapConfiguration" yaml:"ontapConfiguration"`
	// The configuration of an Amazon FSx for OpenZFS volume.
	OpenZfsConfiguration interface{} `field:"optional" json:"openZfsConfiguration" yaml:"openZfsConfiguration"`
	// An array of key-value pairs to apply to this resource.
	//
	// For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html) .
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// The type of the volume.
	VolumeType *string `field:"optional" json:"volumeType" yaml:"volumeType"`
}

Properties for defining a `CfnVolume`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnVolumeProps := &cfnVolumeProps{
	name: jsii.String("name"),

	// the properties below are optional
	backupId: jsii.String("backupId"),
	ontapConfiguration: &ontapConfigurationProperty{
		junctionPath: jsii.String("junctionPath"),
		sizeInMegabytes: jsii.String("sizeInMegabytes"),
		storageEfficiencyEnabled: jsii.String("storageEfficiencyEnabled"),
		storageVirtualMachineId: jsii.String("storageVirtualMachineId"),

		// the properties below are optional
		securityStyle: jsii.String("securityStyle"),
		tieringPolicy: &tieringPolicyProperty{
			coolingPeriod: jsii.Number(123),
			name: jsii.String("name"),
		},
	},
	openZfsConfiguration: &openZFSConfigurationProperty{
		parentVolumeId: jsii.String("parentVolumeId"),

		// the properties below are optional
		copyTagsToSnapshots: jsii.Boolean(false),
		dataCompressionType: jsii.String("dataCompressionType"),
		nfsExports: []interface{}{
			&nfsExportsProperty{
				clientConfigurations: []interface{}{
					&clientConfigurationsProperty{
						clients: jsii.String("clients"),
						options: []*string{
							jsii.String("options"),
						},
					},
				},
			},
		},
		options: []*string{
			jsii.String("options"),
		},
		originSnapshot: &originSnapshotProperty{
			copyStrategy: jsii.String("copyStrategy"),
			snapshotArn: jsii.String("snapshotArn"),
		},
		readOnly: jsii.Boolean(false),
		recordSizeKiB: jsii.Number(123),
		storageCapacityQuotaGiB: jsii.Number(123),
		storageCapacityReservationGiB: jsii.Number(123),
		userAndGroupQuotas: []interface{}{
			&userAndGroupQuotasProperty{
				id: jsii.Number(123),
				storageCapacityQuotaGiB: jsii.Number(123),
				type: jsii.String("type"),
			},
		},
	},
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	volumeType: jsii.String("volumeType"),
}

type CfnVolume_ClientConfigurationsProperty added in v2.18.0

type CfnVolume_ClientConfigurationsProperty struct {
	// A value that specifies who can mount the file system.
	//
	// You can provide a wildcard character ( `*` ), an IP address ( `0.0.0.0` ), or a CIDR address ( `192.0.2.0/24` ). By default, Amazon FSx uses the wildcard character when specifying the client.
	Clients *string `field:"required" json:"clients" yaml:"clients"`
	// The options to use when mounting the file system.
	//
	// For a list of options that you can use with Network File System (NFS), see the [exports(5) - Linux man page](https://docs.aws.amazon.com/https://linux.die.net/man/5/exports) . When choosing your options, consider the following:
	//
	// - `crossmnt` is used by default. If you don't specify `crossmnt` when changing the client configuration, you won't be able to see or access snapshots in your file system's snapshot directory.
	// - `sync` is used by default. If you instead specify `async` , the system acknowledges writes before writing to disk. If the system crashes before the writes are finished, you lose the unwritten data.
	Options *[]*string `field:"required" json:"options" yaml:"options"`
}

Specifies who can mount an OpenZFS file system and the options available while mounting the file system.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

clientConfigurationsProperty := &clientConfigurationsProperty{
	clients: jsii.String("clients"),
	options: []*string{
		jsii.String("options"),
	},
}

type CfnVolume_NfsExportsProperty added in v2.18.0

type CfnVolume_NfsExportsProperty struct {
	// A list of configuration objects that contain the client and options for mounting the OpenZFS file system.
	ClientConfigurations interface{} `field:"required" json:"clientConfigurations" yaml:"clientConfigurations"`
}

The configuration object for mounting a Network File System (NFS) file system.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

nfsExportsProperty := &nfsExportsProperty{
	clientConfigurations: []interface{}{
		&clientConfigurationsProperty{
			clients: jsii.String("clients"),
			options: []*string{
				jsii.String("options"),
			},
		},
	},
}

type CfnVolume_OntapConfigurationProperty added in v2.18.0

type CfnVolume_OntapConfigurationProperty struct {
	// Specifies the location in the SVM's namespace where the volume is mounted.
	//
	// The `JunctionPath` must have a leading forward slash, such as `/vol3` .
	JunctionPath *string `field:"required" json:"junctionPath" yaml:"junctionPath"`
	// Specifies the size of the volume, in megabytes (MB), that you are creating.
	SizeInMegabytes *string `field:"required" json:"sizeInMegabytes" yaml:"sizeInMegabytes"`
	// Set to true to enable deduplication, compression, and compaction storage efficiency features on the volume.
	StorageEfficiencyEnabled *string `field:"required" json:"storageEfficiencyEnabled" yaml:"storageEfficiencyEnabled"`
	// Specifies the ONTAP SVM in which to create the volume.
	StorageVirtualMachineId *string `field:"required" json:"storageVirtualMachineId" yaml:"storageVirtualMachineId"`
	// The security style for the volume. Specify one of the following values:.
	//
	// - `UNIX` if the file system is managed by a UNIX administrator, the majority of users are NFS clients, and an application accessing the data uses a UNIX user as the service account. `UNIX` is the default.
	// - `NTFS` if the file system is managed by a Windows administrator, the majority of users are SMB clients, and an application accessing the data uses a Windows user as the service account.
	// - `MIXED` if the file system is managed by both UNIX and Windows administrators and users consist of both NFS and SMB clients.
	SecurityStyle *string `field:"optional" json:"securityStyle" yaml:"securityStyle"`
	// Describes the data tiering policy for an ONTAP volume.
	//
	// When enabled, Amazon FSx for ONTAP's intelligent tiering automatically transitions a volume's data between the file system's primary storage and capacity pool storage based on your access patterns.
	//
	// Valid tiering policies are the following:
	//
	// - `SNAPSHOT_ONLY` - (Default value) moves cold snapshots to the capacity pool storage tier.
	//
	// - `AUTO` - moves cold user data and snapshots to the capacity pool storage tier based on your access patterns.
	//
	// - `ALL` - moves all user data blocks in both the active file system and Snapshot copies to the storage pool tier.
	//
	// - `NONE` - keeps a volume's data in the primary storage tier, preventing it from being moved to the capacity pool tier.
	TieringPolicy interface{} `field:"optional" json:"tieringPolicy" yaml:"tieringPolicy"`
}

Specifies the configuration of the ONTAP volume that you are creating.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ontapConfigurationProperty := &ontapConfigurationProperty{
	junctionPath: jsii.String("junctionPath"),
	sizeInMegabytes: jsii.String("sizeInMegabytes"),
	storageEfficiencyEnabled: jsii.String("storageEfficiencyEnabled"),
	storageVirtualMachineId: jsii.String("storageVirtualMachineId"),

	// the properties below are optional
	securityStyle: jsii.String("securityStyle"),
	tieringPolicy: &tieringPolicyProperty{
		coolingPeriod: jsii.Number(123),
		name: jsii.String("name"),
	},
}

type CfnVolume_OpenZFSConfigurationProperty added in v2.18.0

type CfnVolume_OpenZFSConfigurationProperty struct {
	// The ID of the volume to use as the parent volume of the volume that you are creating.
	ParentVolumeId *string `field:"required" json:"parentVolumeId" yaml:"parentVolumeId"`
	// A Boolean value indicating whether tags for the volume should be copied to snapshots.
	//
	// This value defaults to `false` . If it's set to `true` , all tags for the volume are copied to snapshots where the user doesn't specify tags. If this value is `true` , and you specify one or more tags, only the specified tags are copied to snapshots. If you specify one or more tags when creating the snapshot, no tags are copied from the volume, regardless of this value.
	CopyTagsToSnapshots interface{} `field:"optional" json:"copyTagsToSnapshots" yaml:"copyTagsToSnapshots"`
	// Specifies the method used to compress the data on the volume. The compression type is `NONE` by default.
	//
	// - `NONE` - Doesn't compress the data on the volume. `NONE` is the default.
	// - `ZSTD` - Compresses the data in the volume using the Zstandard (ZSTD) compression algorithm. Compared to LZ4, Z-Standard provides a better compression ratio to minimize on-disk storage utilization.
	// - `LZ4` - Compresses the data in the volume using the LZ4 compression algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and delivers higher write throughput speeds.
	DataCompressionType *string `field:"optional" json:"dataCompressionType" yaml:"dataCompressionType"`
	// The configuration object for mounting a Network File System (NFS) file system.
	NfsExports interface{} `field:"optional" json:"nfsExports" yaml:"nfsExports"`
	// To delete the volume's child volumes, snapshots, and clones, use the string `DELETE_CHILD_VOLUMES_AND_SNAPSHOTS` .
	Options *[]*string `field:"optional" json:"options" yaml:"options"`
	// The configuration object that specifies the snapshot to use as the origin of the data for the volume.
	OriginSnapshot interface{} `field:"optional" json:"originSnapshot" yaml:"originSnapshot"`
	// A Boolean value indicating whether the volume is read-only.
	ReadOnly interface{} `field:"optional" json:"readOnly" yaml:"readOnly"`
	// Specifies the suggested block size for a volume in a ZFS dataset, in kibibytes (KiB).
	//
	// Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. The default is 128 KiB. We recommend using the default setting for the majority of use cases. Generally, workloads that write in fixed small or large record sizes may benefit from setting a custom record size, like database workloads (small record size) or media streaming workloads (large record size). For additional guidance on when to set a custom record size, see [ZFS Record size](https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html#record-size-performance) in the *Amazon FSx for OpenZFS User Guide* .
	RecordSizeKiB *float64 `field:"optional" json:"recordSizeKiB" yaml:"recordSizeKiB"`
	// Sets the maximum storage size in gibibytes (GiB) for the volume.
	//
	// You can specify a quota that is larger than the storage on the parent volume. A volume quota limits the amount of storage that the volume can consume to the configured amount, but does not guarantee the space will be available on the parent volume. To guarantee quota space, you must also set `StorageCapacityReservationGiB` . To *not* specify a storage capacity quota, set this to `-1` .
	//
	// For more information, see [Volume properties](https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/managing-volumes.html#volume-properties) in the *Amazon FSx for OpenZFS User Guide* .
	StorageCapacityQuotaGiB *float64 `field:"optional" json:"storageCapacityQuotaGiB" yaml:"storageCapacityQuotaGiB"`
	// Specifies the amount of storage in gibibytes (GiB) to reserve from the parent volume.
	//
	// Setting `StorageCapacityReservationGiB` guarantees that the specified amount of storage space on the parent volume will always be available for the volume. You can't reserve more storage than the parent volume has. To *not* specify a storage capacity reservation, set this to `0` or `-1` . For more information, see [Volume properties](https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/managing-volumes.html#volume-properties) in the *Amazon FSx for OpenZFS User Guide* .
	StorageCapacityReservationGiB *float64 `field:"optional" json:"storageCapacityReservationGiB" yaml:"storageCapacityReservationGiB"`
	// An object specifying how much storage users or groups can use on the volume.
	UserAndGroupQuotas interface{} `field:"optional" json:"userAndGroupQuotas" yaml:"userAndGroupQuotas"`
}

Specifies the configuration of the Amazon FSx for OpenZFS volume that you are creating.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

openZFSConfigurationProperty := &openZFSConfigurationProperty{
	parentVolumeId: jsii.String("parentVolumeId"),

	// the properties below are optional
	copyTagsToSnapshots: jsii.Boolean(false),
	dataCompressionType: jsii.String("dataCompressionType"),
	nfsExports: []interface{}{
		&nfsExportsProperty{
			clientConfigurations: []interface{}{
				&clientConfigurationsProperty{
					clients: jsii.String("clients"),
					options: []*string{
						jsii.String("options"),
					},
				},
			},
		},
	},
	options: []*string{
		jsii.String("options"),
	},
	originSnapshot: &originSnapshotProperty{
		copyStrategy: jsii.String("copyStrategy"),
		snapshotArn: jsii.String("snapshotArn"),
	},
	readOnly: jsii.Boolean(false),
	recordSizeKiB: jsii.Number(123),
	storageCapacityQuotaGiB: jsii.Number(123),
	storageCapacityReservationGiB: jsii.Number(123),
	userAndGroupQuotas: []interface{}{
		&userAndGroupQuotasProperty{
			id: jsii.Number(123),
			storageCapacityQuotaGiB: jsii.Number(123),
			type: jsii.String("type"),
		},
	},
}

type CfnVolume_OriginSnapshotProperty added in v2.18.0

type CfnVolume_OriginSnapshotProperty struct {
	// The strategy used when copying data from the snapshot to the new volume.
	//
	// - `CLONE` - The new volume references the data in the origin snapshot. Cloning a snapshot is faster than copying data from the snapshot to a new volume and doesn't consume disk throughput. However, the origin snapshot can't be deleted if there is a volume using its copied data.
	// - `FULL_COPY` - Copies all data from the snapshot to the new volume.
	CopyStrategy *string `field:"required" json:"copyStrategy" yaml:"copyStrategy"`
	// Specifies the snapshot to use when creating an OpenZFS volume from a snapshot.
	SnapshotArn *string `field:"required" json:"snapshotArn" yaml:"snapshotArn"`
}

The configuration object that specifies the snapshot to use as the origin of the data for the volume.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

originSnapshotProperty := &originSnapshotProperty{
	copyStrategy: jsii.String("copyStrategy"),
	snapshotArn: jsii.String("snapshotArn"),
}

type CfnVolume_TieringPolicyProperty added in v2.18.0

type CfnVolume_TieringPolicyProperty struct {
	// Specifies the number of days that user data in a volume must remain inactive before it is considered "cold" and moved to the capacity pool.
	//
	// Used with the `AUTO` and `SNAPSHOT_ONLY` tiering policies. Enter a whole number between 2 and 183. Default values are 31 days for `AUTO` and 2 days for `SNAPSHOT_ONLY` .
	CoolingPeriod *float64 `field:"optional" json:"coolingPeriod" yaml:"coolingPeriod"`
	// Specifies the tiering policy used to transition data. Default value is `SNAPSHOT_ONLY` .
	//
	// - `SNAPSHOT_ONLY` - moves cold snapshots to the capacity pool storage tier.
	// - `AUTO` - moves cold user data and snapshots to the capacity pool storage tier based on your access patterns.
	// - `ALL` - moves all user data blocks in both the active file system and Snapshot copies to the storage pool tier.
	// - `NONE` - keeps a volume's data in the primary storage tier, preventing it from being moved to the capacity pool tier.
	Name *string `field:"optional" json:"name" yaml:"name"`
}

Describes the data tiering policy for an ONTAP volume.

When enabled, Amazon FSx for ONTAP's intelligent tiering automatically transitions a volume's data between the file system's primary storage and capacity pool storage based on your access patterns.

Valid tiering policies are the following:

- `SNAPSHOT_ONLY` - (Default value) moves cold snapshots to the capacity pool storage tier.

- `AUTO` - moves cold user data and snapshots to the capacity pool storage tier based on your access patterns.

- `ALL` - moves all user data blocks in both the active file system and Snapshot copies to the storage pool tier.

- `NONE` - keeps a volume's data in the primary storage tier, preventing it from being moved to the capacity pool tier.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

tieringPolicyProperty := &tieringPolicyProperty{
	coolingPeriod: jsii.Number(123),
	name: jsii.String("name"),
}

type CfnVolume_UserAndGroupQuotasProperty added in v2.18.0

type CfnVolume_UserAndGroupQuotasProperty struct {
	// The ID of the user or group.
	Id *float64 `field:"required" json:"id" yaml:"id"`
	// The amount of storage that the user or group can use in gibibytes (GiB).
	StorageCapacityQuotaGiB *float64 `field:"required" json:"storageCapacityQuotaGiB" yaml:"storageCapacityQuotaGiB"`
	// A value that specifies whether the quota applies to a user or group.
	Type *string `field:"required" json:"type" yaml:"type"`
}

An object specifying how much storage users or groups can use on the volume.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

userAndGroupQuotasProperty := &userAndGroupQuotasProperty{
	id: jsii.Number(123),
	storageCapacityQuotaGiB: jsii.Number(123),
	type: jsii.String("type"),
}

type FileSystemAttributes

type FileSystemAttributes struct {
	// The DNS name assigned to this file system.
	DnsName *string `field:"required" json:"dnsName" yaml:"dnsName"`
	// The ID of the file system, assigned by Amazon FSx.
	FileSystemId *string `field:"required" json:"fileSystemId" yaml:"fileSystemId"`
	// The security group of the file system.
	SecurityGroup awsec2.ISecurityGroup `field:"required" json:"securityGroup" yaml:"securityGroup"`
}

Properties that describe an existing FSx file system.

Example:

sg := ec2.securityGroup.fromSecurityGroupId(this, jsii.String("FsxSecurityGroup"), jsii.String("{SECURITY-GROUP-ID}"))
fs := fsx.lustreFileSystem.fromLustreFileSystemAttributes(this, jsii.String("FsxLustreFileSystem"), &fileSystemAttributes{
	dnsName: jsii.String("{FILE-SYSTEM-DNS-NAME}"),
	fileSystemId: jsii.String("{FILE-SYSTEM-ID}"),
	securityGroup: sg,
})

vpc := ec2.vpc.fromVpcAttributes(this, jsii.String("Vpc"), &vpcAttributes{
	availabilityZones: []*string{
		jsii.String("us-west-2a"),
		jsii.String("us-west-2b"),
	},
	publicSubnetIds: []*string{
		jsii.String("{US-WEST-2A-SUBNET-ID}"),
		jsii.String("{US-WEST-2B-SUBNET-ID}"),
	},
	vpcId: jsii.String("{VPC-ID}"),
})

inst := ec2.NewInstance(this, jsii.String("inst"), &instanceProps{
	instanceType: ec2.instanceType.of(ec2.instanceClass_T2, ec2.instanceSize_LARGE),
	machineImage: ec2.NewAmazonLinuxImage(&amazonLinuxImageProps{
		generation: ec2.amazonLinuxGeneration_AMAZON_LINUX_2,
	}),
	vpc: vpc,
	vpcSubnets: &subnetSelection{
		subnetType: ec2.subnetType_PUBLIC,
	},
})

fs.connections.allowDefaultPortFrom(inst)

type FileSystemBase

type FileSystemBase interface {
	awscdk.Resource
	IFileSystem
	// The security groups/rules used to allow network connections to the file system.
	Connections() awsec2.Connections
	// The DNS name assigned to this file system.
	DnsName() *string
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	// The ID of the file system, assigned by Amazon FSx.
	FileSystemId() *string
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//    cross-environment scenarios.
	PhysicalName() *string
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Returns a string representation of this construct.
	ToString() *string
}

A new or imported FSx file system.

type FileSystemProps

type FileSystemProps struct {
	// The storage capacity of the file system being created.
	//
	// For Windows file systems, valid values are 32 GiB to 65,536 GiB.
	// For SCRATCH_1 deployment types, valid values are 1,200, 2,400, 3,600, then continuing in increments of 3,600 GiB.
	// For SCRATCH_2 and PERSISTENT_1 types, valid values are 1,200, 2,400, then continuing in increments of 2,400 GiB.
	StorageCapacityGiB *float64 `field:"required" json:"storageCapacityGiB" yaml:"storageCapacityGiB"`
	// The VPC to launch the file system in.
	Vpc awsec2.IVpc `field:"required" json:"vpc" yaml:"vpc"`
	// The ID of the backup.
	//
	// Specifies the backup to use if you're creating a file system from an existing backup.
	BackupId *string `field:"optional" json:"backupId" yaml:"backupId"`
	// The KMS key used for encryption to protect your data at rest.
	KmsKey awskms.IKey `field:"optional" json:"kmsKey" yaml:"kmsKey"`
	// Policy to apply when the file system is removed from the stack.
	RemovalPolicy awscdk.RemovalPolicy `field:"optional" json:"removalPolicy" yaml:"removalPolicy"`
	// Security Group to assign to this file system.
	SecurityGroup awsec2.ISecurityGroup `field:"optional" json:"securityGroup" yaml:"securityGroup"`
}

Properties for the FSx file system.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import cdk "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var key key
var securityGroup securityGroup
var vpc vpc

fileSystemProps := &fileSystemProps{
	storageCapacityGiB: jsii.Number(123),
	vpc: vpc,

	// the properties below are optional
	backupId: jsii.String("backupId"),
	kmsKey: key,
	removalPolicy: cdk.removalPolicy_DESTROY,
	securityGroup: securityGroup,
}

See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html

type IFileSystem

type IFileSystem interface {
	awsec2.IConnectable
	// The ID of the file system, assigned by Amazon FSx.
	FileSystemId() *string
}

Interface to implement FSx File Systems.

func LustreFileSystem_FromLustreFileSystemAttributes

func LustreFileSystem_FromLustreFileSystemAttributes(scope constructs.Construct, id *string, attrs *FileSystemAttributes) IFileSystem

Import an existing FSx for Lustre file system from the given properties.

type LustreConfiguration

type LustreConfiguration struct {
	// The type of backing file system deployment used by FSx.
	DeploymentType LustreDeploymentType `field:"required" json:"deploymentType" yaml:"deploymentType"`
	// The path in Amazon S3 where the root of your Amazon FSx file system is exported.
	//
	// The path must use the same
	// Amazon S3 bucket as specified in ImportPath. If you only specify a bucket name, such as s3://import-bucket, you
	// get a 1:1 mapping of file system objects to S3 bucket objects. This mapping means that the input data in S3 is
	// overwritten on export. If you provide a custom prefix in the export path, such as
	// s3://import-bucket/[custom-optional-prefix], Amazon FSx exports the contents of your file system to that export
	// prefix in the Amazon S3 bucket.
	ExportPath *string `field:"optional" json:"exportPath" yaml:"exportPath"`
	// For files imported from a data repository, this value determines the stripe count and maximum amount of data per file (in MiB) stored on a single physical disk.
	//
	// Allowed values are between 1 and 512,000.
	ImportedFileChunkSizeMiB *float64 `field:"optional" json:"importedFileChunkSizeMiB" yaml:"importedFileChunkSizeMiB"`
	// The path to the Amazon S3 bucket (including the optional prefix) that you're using as the data repository for your Amazon FSx for Lustre file system.
	//
	// Must be of the format "s3://{bucketName}/optional-prefix" and cannot
	// exceed 900 characters.
	ImportPath *string `field:"optional" json:"importPath" yaml:"importPath"`
	// Required for the PERSISTENT_1 deployment type, describes the amount of read and write throughput for each 1 tebibyte of storage, in MB/s/TiB.
	//
	// Valid values are 50, 100, 200.
	PerUnitStorageThroughput *float64 `field:"optional" json:"perUnitStorageThroughput" yaml:"perUnitStorageThroughput"`
	// The preferred day and time to perform weekly maintenance.
	//
	// The first digit is the day of the week, starting at 1
	// for Monday, then the following are hours and minutes in the UTC time zone, 24 hour clock. For example: '2:20:30'
	// is Tuesdays at 20:30.
	WeeklyMaintenanceStartTime LustreMaintenanceTime `field:"optional" json:"weeklyMaintenanceStartTime" yaml:"weeklyMaintenanceStartTime"`
}

The configuration for the Amazon FSx for Lustre file system.

Example:

var vpc vpc

fileSystem := fsx.NewLustreFileSystem(this, jsii.String("FsxLustreFileSystem"), &lustreFileSystemProps{
	lustreConfiguration: &lustreConfiguration{
		deploymentType: fsx.lustreDeploymentType_SCRATCH_2,
	},
	storageCapacityGiB: jsii.Number(1200),
	vpc: vpc,
	vpcSubnet: vpc.privateSubnets[jsii.Number(0)],
})

See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-lustreconfiguration.html

type LustreDeploymentType

type LustreDeploymentType string

The different kinds of file system deployments used by Lustre.

Example:

var vpc vpc

fileSystem := fsx.NewLustreFileSystem(this, jsii.String("FsxLustreFileSystem"), &lustreFileSystemProps{
	lustreConfiguration: &lustreConfiguration{
		deploymentType: fsx.lustreDeploymentType_SCRATCH_2,
	},
	storageCapacityGiB: jsii.Number(1200),
	vpc: vpc,
	vpcSubnet: vpc.privateSubnets[jsii.Number(0)],
})
const (
	// Original type for shorter term data processing.
	//
	// Data is not replicated and does not persist on server fail.
	LustreDeploymentType_SCRATCH_1 LustreDeploymentType = "SCRATCH_1"
	// Newer type for shorter term data processing.
	//
	// Data is not replicated and does not persist on server fail.
	// Provides better support for spiky workloads.
	LustreDeploymentType_SCRATCH_2 LustreDeploymentType = "SCRATCH_2"
	// Long term storage.
	//
	// Data is replicated and file servers are replaced if they fail.
	LustreDeploymentType_PERSISTENT_1 LustreDeploymentType = "PERSISTENT_1"
	// Newer type of long term storage with higher throughput tiers.
	//
	// Data is replicated and file servers are replaced if they fail.
	LustreDeploymentType_PERSISTENT_2 LustreDeploymentType = "PERSISTENT_2"
)

type LustreFileSystem

type LustreFileSystem interface {
	FileSystemBase
	// The security groups/rules used to allow network connections to the file system.
	Connections() awsec2.Connections
	// The DNS name assigned to this file system.
	DnsName() *string
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	// The ID that AWS assigns to the file system.
	FileSystemId() *string
	// The mount name of the file system, generated by FSx.
	MountName() *string
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//    cross-environment scenarios.
	PhysicalName() *string
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Returns a string representation of this construct.
	ToString() *string
}

The FSx for Lustre File System implementation of IFileSystem.

Example:

sg := ec2.securityGroup.fromSecurityGroupId(this, jsii.String("FsxSecurityGroup"), jsii.String("{SECURITY-GROUP-ID}"))
fs := fsx.lustreFileSystem.fromLustreFileSystemAttributes(this, jsii.String("FsxLustreFileSystem"), &fileSystemAttributes{
	dnsName: jsii.String("{FILE-SYSTEM-DNS-NAME}"),
	fileSystemId: jsii.String("{FILE-SYSTEM-ID}"),
	securityGroup: sg,
})

vpc := ec2.vpc.fromVpcAttributes(this, jsii.String("Vpc"), &vpcAttributes{
	availabilityZones: []*string{
		jsii.String("us-west-2a"),
		jsii.String("us-west-2b"),
	},
	publicSubnetIds: []*string{
		jsii.String("{US-WEST-2A-SUBNET-ID}"),
		jsii.String("{US-WEST-2B-SUBNET-ID}"),
	},
	vpcId: jsii.String("{VPC-ID}"),
})

inst := ec2.NewInstance(this, jsii.String("inst"), &instanceProps{
	instanceType: ec2.instanceType.of(ec2.instanceClass_T2, ec2.instanceSize_LARGE),
	machineImage: ec2.NewAmazonLinuxImage(&amazonLinuxImageProps{
		generation: ec2.amazonLinuxGeneration_AMAZON_LINUX_2,
	}),
	vpc: vpc,
	vpcSubnets: &subnetSelection{
		subnetType: ec2.subnetType_PUBLIC,
	},
})

fs.connections.allowDefaultPortFrom(inst)

See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html

func NewLustreFileSystem

func NewLustreFileSystem(scope constructs.Construct, id *string, props *LustreFileSystemProps) LustreFileSystem

type LustreFileSystemProps

type LustreFileSystemProps struct {
	// The storage capacity of the file system being created.
	//
	// For Windows file systems, valid values are 32 GiB to 65,536 GiB.
	// For SCRATCH_1 deployment types, valid values are 1,200, 2,400, 3,600, then continuing in increments of 3,600 GiB.
	// For SCRATCH_2 and PERSISTENT_1 types, valid values are 1,200, 2,400, then continuing in increments of 2,400 GiB.
	StorageCapacityGiB *float64 `field:"required" json:"storageCapacityGiB" yaml:"storageCapacityGiB"`
	// The VPC to launch the file system in.
	Vpc awsec2.IVpc `field:"required" json:"vpc" yaml:"vpc"`
	// The ID of the backup.
	//
	// Specifies the backup to use if you're creating a file system from an existing backup.
	BackupId *string `field:"optional" json:"backupId" yaml:"backupId"`
	// The KMS key used for encryption to protect your data at rest.
	KmsKey awskms.IKey `field:"optional" json:"kmsKey" yaml:"kmsKey"`
	// Policy to apply when the file system is removed from the stack.
	RemovalPolicy awscdk.RemovalPolicy `field:"optional" json:"removalPolicy" yaml:"removalPolicy"`
	// Security Group to assign to this file system.
	SecurityGroup awsec2.ISecurityGroup `field:"optional" json:"securityGroup" yaml:"securityGroup"`
	// Additional configuration for FSx specific to Lustre.
	LustreConfiguration *LustreConfiguration `field:"required" json:"lustreConfiguration" yaml:"lustreConfiguration"`
	// The subnet that the file system will be accessible from.
	VpcSubnet awsec2.ISubnet `field:"required" json:"vpcSubnet" yaml:"vpcSubnet"`
}

Properties specific to the Lustre version of the FSx file system.

Example:

var vpc vpc

fileSystem := fsx.NewLustreFileSystem(this, jsii.String("FsxLustreFileSystem"), &lustreFileSystemProps{
	lustreConfiguration: &lustreConfiguration{
		deploymentType: fsx.lustreDeploymentType_SCRATCH_2,
	},
	storageCapacityGiB: jsii.Number(1200),
	vpc: vpc,
	vpcSubnet: vpc.privateSubnets[jsii.Number(0)],
})

type LustreMaintenanceTime

type LustreMaintenanceTime interface {
	// Converts a day, hour, and minute into a timestamp as used by FSx for Lustre's weeklyMaintenanceStartTime field.
	ToTimestamp() *string
}

Class for scheduling a weekly manitenance time.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

lustreMaintenanceTime := awscdk.Aws_fsx.NewLustreMaintenanceTime(&lustreMaintenanceTimeProps{
	day: awscdk.*Aws_fsx.weekday_MONDAY,
	hour: jsii.Number(123),
	minute: jsii.Number(123),
})

type LustreMaintenanceTimeProps

type LustreMaintenanceTimeProps struct {
	// The day of the week for maintenance to be performed.
	Day Weekday `field:"required" json:"day" yaml:"day"`
	// The hour of the day (from 0-24) for maintenance to be performed.
	Hour *float64 `field:"required" json:"hour" yaml:"hour"`
	// The minute of the hour (from 0-59) for maintenance to be performed.
	Minute *float64 `field:"required" json:"minute" yaml:"minute"`
}

Properties required for setting up a weekly maintenance time.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

lustreMaintenanceTimeProps := &lustreMaintenanceTimeProps{
	day: awscdk.Aws_fsx.weekday_MONDAY,
	hour: jsii.Number(123),
	minute: jsii.Number(123),
}

type Weekday

type Weekday string

Enum for representing all the days of the week.

const (
	// Monday.
	Weekday_MONDAY Weekday = "MONDAY"
	// Tuesday.
	Weekday_TUESDAY Weekday = "TUESDAY"
	// Wednesday.
	Weekday_WEDNESDAY Weekday = "WEDNESDAY"
	// Thursday.
	Weekday_THURSDAY Weekday = "THURSDAY"
	// Friday.
	Weekday_FRIDAY Weekday = "FRIDAY"
	// Saturday.
	Weekday_SATURDAY Weekday = "SATURDAY"
	// Sunday.
	Weekday_SUNDAY Weekday = "SUNDAY"
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL