/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace Http { class HttpClient; class HttpClientFactory; } // namespace Http namespace Utils { template< typename R, typename E> class Outcome; namespace Threading { class Executor; } // namespace Threading } // namespace Utils namespace Auth { class AWSCredentials; class AWSCredentialsProvider; } // namespace Auth namespace Client { class RetryStrategy; } // namespace Client namespace EFS { namespace Model { class CreateAccessPointRequest; class CreateFileSystemRequest; class CreateMountTargetRequest; class DeleteAccessPointRequest; class DeleteFileSystemRequest; class DeleteFileSystemPolicyRequest; class DeleteMountTargetRequest; class DescribeAccessPointsRequest; class DescribeBackupPolicyRequest; class DescribeFileSystemPolicyRequest; class DescribeFileSystemsRequest; class DescribeLifecycleConfigurationRequest; class DescribeMountTargetSecurityGroupsRequest; class DescribeMountTargetsRequest; class ListTagsForResourceRequest; class ModifyMountTargetSecurityGroupsRequest; class PutBackupPolicyRequest; class PutFileSystemPolicyRequest; class PutLifecycleConfigurationRequest; class TagResourceRequest; class UntagResourceRequest; class UpdateFileSystemRequest; typedef Aws::Utils::Outcome CreateAccessPointOutcome; typedef Aws::Utils::Outcome CreateFileSystemOutcome; typedef Aws::Utils::Outcome CreateMountTargetOutcome; typedef Aws::Utils::Outcome DeleteAccessPointOutcome; typedef Aws::Utils::Outcome DeleteFileSystemOutcome; typedef Aws::Utils::Outcome DeleteFileSystemPolicyOutcome; typedef Aws::Utils::Outcome DeleteMountTargetOutcome; typedef Aws::Utils::Outcome DescribeAccessPointsOutcome; typedef Aws::Utils::Outcome DescribeBackupPolicyOutcome; typedef Aws::Utils::Outcome DescribeFileSystemPolicyOutcome; typedef Aws::Utils::Outcome DescribeFileSystemsOutcome; typedef Aws::Utils::Outcome DescribeLifecycleConfigurationOutcome; typedef Aws::Utils::Outcome DescribeMountTargetSecurityGroupsOutcome; typedef Aws::Utils::Outcome DescribeMountTargetsOutcome; typedef Aws::Utils::Outcome ListTagsForResourceOutcome; typedef Aws::Utils::Outcome ModifyMountTargetSecurityGroupsOutcome; typedef Aws::Utils::Outcome PutBackupPolicyOutcome; typedef Aws::Utils::Outcome PutFileSystemPolicyOutcome; typedef Aws::Utils::Outcome PutLifecycleConfigurationOutcome; typedef Aws::Utils::Outcome TagResourceOutcome; typedef Aws::Utils::Outcome UntagResourceOutcome; typedef Aws::Utils::Outcome UpdateFileSystemOutcome; typedef std::future CreateAccessPointOutcomeCallable; typedef std::future CreateFileSystemOutcomeCallable; typedef std::future CreateMountTargetOutcomeCallable; typedef std::future DeleteAccessPointOutcomeCallable; typedef std::future DeleteFileSystemOutcomeCallable; typedef std::future DeleteFileSystemPolicyOutcomeCallable; typedef std::future DeleteMountTargetOutcomeCallable; typedef std::future DescribeAccessPointsOutcomeCallable; typedef std::future DescribeBackupPolicyOutcomeCallable; typedef std::future DescribeFileSystemPolicyOutcomeCallable; typedef std::future DescribeFileSystemsOutcomeCallable; typedef std::future DescribeLifecycleConfigurationOutcomeCallable; typedef std::future DescribeMountTargetSecurityGroupsOutcomeCallable; typedef std::future DescribeMountTargetsOutcomeCallable; typedef std::future ListTagsForResourceOutcomeCallable; typedef std::future ModifyMountTargetSecurityGroupsOutcomeCallable; typedef std::future PutBackupPolicyOutcomeCallable; typedef std::future PutFileSystemPolicyOutcomeCallable; typedef std::future PutLifecycleConfigurationOutcomeCallable; typedef std::future TagResourceOutcomeCallable; typedef std::future UntagResourceOutcomeCallable; typedef std::future UpdateFileSystemOutcomeCallable; } // namespace Model class EFSClient; typedef std::function&) > CreateAccessPointResponseReceivedHandler; typedef std::function&) > CreateFileSystemResponseReceivedHandler; typedef std::function&) > CreateMountTargetResponseReceivedHandler; typedef std::function&) > DeleteAccessPointResponseReceivedHandler; typedef std::function&) > DeleteFileSystemResponseReceivedHandler; typedef std::function&) > DeleteFileSystemPolicyResponseReceivedHandler; typedef std::function&) > DeleteMountTargetResponseReceivedHandler; typedef std::function&) > DescribeAccessPointsResponseReceivedHandler; typedef std::function&) > DescribeBackupPolicyResponseReceivedHandler; typedef std::function&) > DescribeFileSystemPolicyResponseReceivedHandler; typedef std::function&) > DescribeFileSystemsResponseReceivedHandler; typedef std::function&) > DescribeLifecycleConfigurationResponseReceivedHandler; typedef std::function&) > DescribeMountTargetSecurityGroupsResponseReceivedHandler; typedef std::function&) > DescribeMountTargetsResponseReceivedHandler; typedef std::function&) > ListTagsForResourceResponseReceivedHandler; typedef std::function&) > ModifyMountTargetSecurityGroupsResponseReceivedHandler; typedef std::function&) > PutBackupPolicyResponseReceivedHandler; typedef std::function&) > PutFileSystemPolicyResponseReceivedHandler; typedef std::function&) > PutLifecycleConfigurationResponseReceivedHandler; typedef std::function&) > TagResourceResponseReceivedHandler; typedef std::function&) > UntagResourceResponseReceivedHandler; typedef std::function&) > UpdateFileSystemResponseReceivedHandler; /** * Amazon Elastic File System

Amazon Elastic File System * (Amazon EFS) provides simple, scalable file storage for use with Amazon EC2 * instances in the AWS Cloud. With Amazon EFS, storage capacity is elastic, * growing and shrinking automatically as you add and remove files, so your * applications have the storage they need, when they need it. For more * information, see the User * Guide.

*/ class AWS_EFS_API EFSClient : public Aws::Client::AWSJsonClient { public: typedef Aws::Client::AWSJsonClient BASECLASS; /** * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ EFSClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration()); /** * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ EFSClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration()); /** * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied, * the default http client factory will be used */ EFSClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration()); virtual ~EFSClient(); /** *

Creates an EFS access point. An access point is an application-specific view * into an EFS file system that applies an operating system user and group, and a * file system path, to any file system request made through the access point. The * operating system user and group override any identity information provided by * the NFS client. The file system path is exposed as the access point's root * directory. Applications using the access point can only access data in its own * directory and below. To learn more, see Mounting * a File System Using EFS Access Points.

This operation requires * permissions for the elasticfilesystem:CreateAccessPoint * action.

See Also:

AWS * API Reference

*/ virtual Model::CreateAccessPointOutcome CreateAccessPoint(const Model::CreateAccessPointRequest& request) const; /** *

Creates an EFS access point. An access point is an application-specific view * into an EFS file system that applies an operating system user and group, and a * file system path, to any file system request made through the access point. The * operating system user and group override any identity information provided by * the NFS client. The file system path is exposed as the access point's root * directory. Applications using the access point can only access data in its own * directory and below. To learn more, see Mounting * a File System Using EFS Access Points.

This operation requires * permissions for the elasticfilesystem:CreateAccessPoint * action.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::CreateAccessPointOutcomeCallable CreateAccessPointCallable(const Model::CreateAccessPointRequest& request) const; /** *

Creates an EFS access point. An access point is an application-specific view * into an EFS file system that applies an operating system user and group, and a * file system path, to any file system request made through the access point. The * operating system user and group override any identity information provided by * the NFS client. The file system path is exposed as the access point's root * directory. Applications using the access point can only access data in its own * directory and below. To learn more, see Mounting * a File System Using EFS Access Points.

This operation requires * permissions for the elasticfilesystem:CreateAccessPoint * action.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void CreateAccessPointAsync(const Model::CreateAccessPointRequest& request, const CreateAccessPointResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Creates a new, empty file system. The operation requires a creation token in * the request that Amazon EFS uses to ensure idempotent creation (calling the * operation with same creation token has no effect). If a file system does not * currently exist that is owned by the caller's AWS account with the specified * creation token, this operation does the following:

  • Creates a * new, empty file system. The file system will have an Amazon EFS assigned ID, and * an initial lifecycle state creating.

  • Returns with * the description of the created file system.

Otherwise, this * operation returns a FileSystemAlreadyExists error with the ID of * the existing file system.

For basic use cases, you can use a * randomly generated UUID for the creation token.

The idempotent * operation allows you to retry a CreateFileSystem call without risk * of creating an extra file system. This can happen when an initial call fails in * a way that leaves it uncertain whether or not a file system was actually * created. An example might be that a transport level timeout occurred or your * connection was reset. As long as you use the same creation token, if the initial * call had succeeded in creating a file system, the client can learn of its * existence from the FileSystemAlreadyExists error.

The * CreateFileSystem call returns while the file system's lifecycle * state is still creating. You can check the file system creation * status by calling the DescribeFileSystems operation, which among other * things returns the file system state.

This operation also takes * an optional PerformanceMode parameter that you choose for your file * system. We recommend generalPurpose performance mode for most file * systems. File systems using the maxIO performance mode can scale to * higher levels of aggregate throughput and operations per second with a tradeoff * of slightly higher latencies for most file operations. The performance mode * can't be changed after the file system has been created. For more information, * see Amazon * EFS: Performance Modes.

After the file system is fully created, * Amazon EFS sets its lifecycle state to available, at which point * you can create one or more mount targets for the file system in your VPC. For * more information, see CreateMountTarget. You mount your Amazon EFS file * system on an EC2 instances in your VPC by using the mount target. For more * information, see Amazon EFS: * How it Works.

This operation requires permissions for the * elasticfilesystem:CreateFileSystem action.

See * Also:

AWS * API Reference

*/ virtual Model::CreateFileSystemOutcome CreateFileSystem(const Model::CreateFileSystemRequest& request) const; /** *

Creates a new, empty file system. The operation requires a creation token in * the request that Amazon EFS uses to ensure idempotent creation (calling the * operation with same creation token has no effect). If a file system does not * currently exist that is owned by the caller's AWS account with the specified * creation token, this operation does the following:

  • Creates a * new, empty file system. The file system will have an Amazon EFS assigned ID, and * an initial lifecycle state creating.

  • Returns with * the description of the created file system.

Otherwise, this * operation returns a FileSystemAlreadyExists error with the ID of * the existing file system.

For basic use cases, you can use a * randomly generated UUID for the creation token.

The idempotent * operation allows you to retry a CreateFileSystem call without risk * of creating an extra file system. This can happen when an initial call fails in * a way that leaves it uncertain whether or not a file system was actually * created. An example might be that a transport level timeout occurred or your * connection was reset. As long as you use the same creation token, if the initial * call had succeeded in creating a file system, the client can learn of its * existence from the FileSystemAlreadyExists error.

The * CreateFileSystem call returns while the file system's lifecycle * state is still creating. You can check the file system creation * status by calling the DescribeFileSystems operation, which among other * things returns the file system state.

This operation also takes * an optional PerformanceMode parameter that you choose for your file * system. We recommend generalPurpose performance mode for most file * systems. File systems using the maxIO performance mode can scale to * higher levels of aggregate throughput and operations per second with a tradeoff * of slightly higher latencies for most file operations. The performance mode * can't be changed after the file system has been created. For more information, * see Amazon * EFS: Performance Modes.

After the file system is fully created, * Amazon EFS sets its lifecycle state to available, at which point * you can create one or more mount targets for the file system in your VPC. For * more information, see CreateMountTarget. You mount your Amazon EFS file * system on an EC2 instances in your VPC by using the mount target. For more * information, see Amazon EFS: * How it Works.

This operation requires permissions for the * elasticfilesystem:CreateFileSystem action.

See * Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::CreateFileSystemOutcomeCallable CreateFileSystemCallable(const Model::CreateFileSystemRequest& request) const; /** *

Creates a new, empty file system. The operation requires a creation token in * the request that Amazon EFS uses to ensure idempotent creation (calling the * operation with same creation token has no effect). If a file system does not * currently exist that is owned by the caller's AWS account with the specified * creation token, this operation does the following:

  • Creates a * new, empty file system. The file system will have an Amazon EFS assigned ID, and * an initial lifecycle state creating.

  • Returns with * the description of the created file system.

Otherwise, this * operation returns a FileSystemAlreadyExists error with the ID of * the existing file system.

For basic use cases, you can use a * randomly generated UUID for the creation token.

The idempotent * operation allows you to retry a CreateFileSystem call without risk * of creating an extra file system. This can happen when an initial call fails in * a way that leaves it uncertain whether or not a file system was actually * created. An example might be that a transport level timeout occurred or your * connection was reset. As long as you use the same creation token, if the initial * call had succeeded in creating a file system, the client can learn of its * existence from the FileSystemAlreadyExists error.

The * CreateFileSystem call returns while the file system's lifecycle * state is still creating. You can check the file system creation * status by calling the DescribeFileSystems operation, which among other * things returns the file system state.

This operation also takes * an optional PerformanceMode parameter that you choose for your file * system. We recommend generalPurpose performance mode for most file * systems. File systems using the maxIO performance mode can scale to * higher levels of aggregate throughput and operations per second with a tradeoff * of slightly higher latencies for most file operations. The performance mode * can't be changed after the file system has been created. For more information, * see Amazon * EFS: Performance Modes.

After the file system is fully created, * Amazon EFS sets its lifecycle state to available, at which point * you can create one or more mount targets for the file system in your VPC. For * more information, see CreateMountTarget. You mount your Amazon EFS file * system on an EC2 instances in your VPC by using the mount target. For more * information, see Amazon EFS: * How it Works.

This operation requires permissions for the * elasticfilesystem:CreateFileSystem action.

See * Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void CreateFileSystemAsync(const Model::CreateFileSystemRequest& request, const CreateFileSystemResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Creates a mount target for a file system. You can then mount the file system * on EC2 instances by using the mount target.

You can create one mount * target in each Availability Zone in your VPC. All EC2 instances in a VPC within * a given Availability Zone share a single mount target for a given file system. * If you have multiple subnets in an Availability Zone, you create a mount target * in one of the subnets. EC2 instances do not need to be in the same subnet as the * mount target in order to access their file system. For more information, see Amazon EFS: * How it Works.

In the request, you also specify a file system ID for * which you are creating the mount target and the file system's lifecycle state * must be available. For more information, see * DescribeFileSystems.

In the request, you also provide a subnet ID, * which determines the following:

  • VPC in which Amazon EFS creates * the mount target

  • Availability Zone in which Amazon EFS creates * the mount target

  • IP address range from which Amazon EFS * selects the IP address of the mount target (if you don't specify an IP address * in the request)

After creating the mount target, Amazon EFS * returns a response that includes, a MountTargetId and an * IpAddress. You use this IP address when mounting the file system in * an EC2 instance. You can also use the mount target's DNS name when mounting the * file system. The EC2 instance on which you mount the file system by using the * mount target can resolve the mount target's DNS name to its IP address. For more * information, see How * it Works: Implementation Overview.

Note that you can create mount * targets for a file system in only one VPC, and there can be only one mount * target per Availability Zone. That is, if the file system already has one or * more mount targets created for it, the subnet specified in the request to add * another mount target must meet the following requirements:

  • Must * belong to the same VPC as the subnets of the existing mount targets

  • *
  • Must not be in the same Availability Zone as any of the subnets of the * existing mount targets

If the request satisfies the * requirements, Amazon EFS does the following:

  • Creates a new * mount target in the specified subnet.

  • Also creates a new * network interface in the subnet as follows:

    • If the request * provides an IpAddress, Amazon EFS assigns that IP address to the * network interface. Otherwise, Amazon EFS assigns a free address in the subnet * (in the same way that the Amazon EC2 CreateNetworkInterface call * does when a request does not specify a primary private IP address).

    • *
    • If the request provides SecurityGroups, this network * interface is associated with those security groups. Otherwise, it belongs to the * default security group for the subnet's VPC.

    • Assigns the * description Mount target fsmt-id for file system fs-id * where fsmt-id is the mount target ID, and * fs-id is the FileSystemId.

    • Sets * the requesterManaged property of the network interface to * true, and the requesterId value to * EFS.

    Each Amazon EFS mount target has one * corresponding requester-managed EC2 network interface. After the network * interface is created, Amazon EFS sets the NetworkInterfaceId field * in the mount target's description to the network interface ID, and the * IpAddress field to its address. If network interface creation * fails, the entire CreateMountTarget operation fails.

  • *

The CreateMountTarget call returns only after * creating the network interface, but while the mount target state is still * creating, you can check the mount target creation status by calling * the DescribeMountTargets operation, which among other things returns the * mount target state.

We recommend that you create a mount target * in each of the Availability Zones. There are cost considerations for using a * file system in an Availability Zone through a mount target created in another * Availability Zone. For more information, see Amazon EFS. In addition, by always using a * mount target local to the instance's Availability Zone, you eliminate a partial * failure scenario. If the Availability Zone in which your mount target is created * goes down, then you can't access your file system through that mount target. *

This operation requires permissions for the following action on the file * system:

  • elasticfilesystem:CreateMountTarget

    *

This operation also requires permissions for the following Amazon * EC2 actions:

  • ec2:DescribeSubnets

  • *

    ec2:DescribeNetworkInterfaces

  • * ec2:CreateNetworkInterface

See Also:

* AWS * API Reference

*/ virtual Model::CreateMountTargetOutcome CreateMountTarget(const Model::CreateMountTargetRequest& request) const; /** *

Creates a mount target for a file system. You can then mount the file system * on EC2 instances by using the mount target.

You can create one mount * target in each Availability Zone in your VPC. All EC2 instances in a VPC within * a given Availability Zone share a single mount target for a given file system. * If you have multiple subnets in an Availability Zone, you create a mount target * in one of the subnets. EC2 instances do not need to be in the same subnet as the * mount target in order to access their file system. For more information, see Amazon EFS: * How it Works.

In the request, you also specify a file system ID for * which you are creating the mount target and the file system's lifecycle state * must be available. For more information, see * DescribeFileSystems.

In the request, you also provide a subnet ID, * which determines the following:

  • VPC in which Amazon EFS creates * the mount target

  • Availability Zone in which Amazon EFS creates * the mount target

  • IP address range from which Amazon EFS * selects the IP address of the mount target (if you don't specify an IP address * in the request)

After creating the mount target, Amazon EFS * returns a response that includes, a MountTargetId and an * IpAddress. You use this IP address when mounting the file system in * an EC2 instance. You can also use the mount target's DNS name when mounting the * file system. The EC2 instance on which you mount the file system by using the * mount target can resolve the mount target's DNS name to its IP address. For more * information, see How * it Works: Implementation Overview.

Note that you can create mount * targets for a file system in only one VPC, and there can be only one mount * target per Availability Zone. That is, if the file system already has one or * more mount targets created for it, the subnet specified in the request to add * another mount target must meet the following requirements:

  • Must * belong to the same VPC as the subnets of the existing mount targets

  • *
  • Must not be in the same Availability Zone as any of the subnets of the * existing mount targets

If the request satisfies the * requirements, Amazon EFS does the following:

  • Creates a new * mount target in the specified subnet.

  • Also creates a new * network interface in the subnet as follows:

    • If the request * provides an IpAddress, Amazon EFS assigns that IP address to the * network interface. Otherwise, Amazon EFS assigns a free address in the subnet * (in the same way that the Amazon EC2 CreateNetworkInterface call * does when a request does not specify a primary private IP address).

    • *
    • If the request provides SecurityGroups, this network * interface is associated with those security groups. Otherwise, it belongs to the * default security group for the subnet's VPC.

    • Assigns the * description Mount target fsmt-id for file system fs-id * where fsmt-id is the mount target ID, and * fs-id is the FileSystemId.

    • Sets * the requesterManaged property of the network interface to * true, and the requesterId value to * EFS.

    Each Amazon EFS mount target has one * corresponding requester-managed EC2 network interface. After the network * interface is created, Amazon EFS sets the NetworkInterfaceId field * in the mount target's description to the network interface ID, and the * IpAddress field to its address. If network interface creation * fails, the entire CreateMountTarget operation fails.

  • *

The CreateMountTarget call returns only after * creating the network interface, but while the mount target state is still * creating, you can check the mount target creation status by calling * the DescribeMountTargets operation, which among other things returns the * mount target state.

We recommend that you create a mount target * in each of the Availability Zones. There are cost considerations for using a * file system in an Availability Zone through a mount target created in another * Availability Zone. For more information, see Amazon EFS. In addition, by always using a * mount target local to the instance's Availability Zone, you eliminate a partial * failure scenario. If the Availability Zone in which your mount target is created * goes down, then you can't access your file system through that mount target. *

This operation requires permissions for the following action on the file * system:

  • elasticfilesystem:CreateMountTarget

    *

This operation also requires permissions for the following Amazon * EC2 actions:

  • ec2:DescribeSubnets

  • *

    ec2:DescribeNetworkInterfaces

  • * ec2:CreateNetworkInterface

See Also:

* AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::CreateMountTargetOutcomeCallable CreateMountTargetCallable(const Model::CreateMountTargetRequest& request) const; /** *

Creates a mount target for a file system. You can then mount the file system * on EC2 instances by using the mount target.

You can create one mount * target in each Availability Zone in your VPC. All EC2 instances in a VPC within * a given Availability Zone share a single mount target for a given file system. * If you have multiple subnets in an Availability Zone, you create a mount target * in one of the subnets. EC2 instances do not need to be in the same subnet as the * mount target in order to access their file system. For more information, see Amazon EFS: * How it Works.

In the request, you also specify a file system ID for * which you are creating the mount target and the file system's lifecycle state * must be available. For more information, see * DescribeFileSystems.

In the request, you also provide a subnet ID, * which determines the following:

  • VPC in which Amazon EFS creates * the mount target

  • Availability Zone in which Amazon EFS creates * the mount target

  • IP address range from which Amazon EFS * selects the IP address of the mount target (if you don't specify an IP address * in the request)

After creating the mount target, Amazon EFS * returns a response that includes, a MountTargetId and an * IpAddress. You use this IP address when mounting the file system in * an EC2 instance. You can also use the mount target's DNS name when mounting the * file system. The EC2 instance on which you mount the file system by using the * mount target can resolve the mount target's DNS name to its IP address. For more * information, see How * it Works: Implementation Overview.

Note that you can create mount * targets for a file system in only one VPC, and there can be only one mount * target per Availability Zone. That is, if the file system already has one or * more mount targets created for it, the subnet specified in the request to add * another mount target must meet the following requirements:

  • Must * belong to the same VPC as the subnets of the existing mount targets

  • *
  • Must not be in the same Availability Zone as any of the subnets of the * existing mount targets

If the request satisfies the * requirements, Amazon EFS does the following:

  • Creates a new * mount target in the specified subnet.

  • Also creates a new * network interface in the subnet as follows:

    • If the request * provides an IpAddress, Amazon EFS assigns that IP address to the * network interface. Otherwise, Amazon EFS assigns a free address in the subnet * (in the same way that the Amazon EC2 CreateNetworkInterface call * does when a request does not specify a primary private IP address).

    • *
    • If the request provides SecurityGroups, this network * interface is associated with those security groups. Otherwise, it belongs to the * default security group for the subnet's VPC.

    • Assigns the * description Mount target fsmt-id for file system fs-id * where fsmt-id is the mount target ID, and * fs-id is the FileSystemId.

    • Sets * the requesterManaged property of the network interface to * true, and the requesterId value to * EFS.

    Each Amazon EFS mount target has one * corresponding requester-managed EC2 network interface. After the network * interface is created, Amazon EFS sets the NetworkInterfaceId field * in the mount target's description to the network interface ID, and the * IpAddress field to its address. If network interface creation * fails, the entire CreateMountTarget operation fails.

  • *

The CreateMountTarget call returns only after * creating the network interface, but while the mount target state is still * creating, you can check the mount target creation status by calling * the DescribeMountTargets operation, which among other things returns the * mount target state.

We recommend that you create a mount target * in each of the Availability Zones. There are cost considerations for using a * file system in an Availability Zone through a mount target created in another * Availability Zone. For more information, see Amazon EFS. In addition, by always using a * mount target local to the instance's Availability Zone, you eliminate a partial * failure scenario. If the Availability Zone in which your mount target is created * goes down, then you can't access your file system through that mount target. *

This operation requires permissions for the following action on the file * system:

  • elasticfilesystem:CreateMountTarget

    *

This operation also requires permissions for the following Amazon * EC2 actions:

  • ec2:DescribeSubnets

  • *

    ec2:DescribeNetworkInterfaces

  • * ec2:CreateNetworkInterface

See Also:

* AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void CreateMountTargetAsync(const Model::CreateMountTargetRequest& request, const CreateMountTargetResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Deletes the specified access point. After deletion is complete, new clients * can no longer connect to the access points. Clients connected to the access * point at the time of deletion will continue to function until they terminate * their connection.

This operation requires permissions for the * elasticfilesystem:DeleteAccessPoint action.

See * Also:

AWS * API Reference

*/ virtual Model::DeleteAccessPointOutcome DeleteAccessPoint(const Model::DeleteAccessPointRequest& request) const; /** *

Deletes the specified access point. After deletion is complete, new clients * can no longer connect to the access points. Clients connected to the access * point at the time of deletion will continue to function until they terminate * their connection.

This operation requires permissions for the * elasticfilesystem:DeleteAccessPoint action.

See * Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DeleteAccessPointOutcomeCallable DeleteAccessPointCallable(const Model::DeleteAccessPointRequest& request) const; /** *

Deletes the specified access point. After deletion is complete, new clients * can no longer connect to the access points. Clients connected to the access * point at the time of deletion will continue to function until they terminate * their connection.

This operation requires permissions for the * elasticfilesystem:DeleteAccessPoint action.

See * Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DeleteAccessPointAsync(const Model::DeleteAccessPointRequest& request, const DeleteAccessPointResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Deletes a file system, permanently severing access to its contents. Upon * return, the file system no longer exists and you can't access any contents of * the deleted file system.

You can't delete a file system that is in use. * That is, if the file system has any mount targets, you must first delete them. * For more information, see DescribeMountTargets and * DeleteMountTarget.

The DeleteFileSystem call * returns while the file system state is still deleting. You can * check the file system deletion status by calling the DescribeFileSystems * operation, which returns a list of file systems in your account. If you pass * file system ID or creation token for the deleted file system, the * DescribeFileSystems returns a 404 FileSystemNotFound * error.

This operation requires permissions for the * elasticfilesystem:DeleteFileSystem action.

See Also:

* AWS * API Reference

*/ virtual Model::DeleteFileSystemOutcome DeleteFileSystem(const Model::DeleteFileSystemRequest& request) const; /** *

Deletes a file system, permanently severing access to its contents. Upon * return, the file system no longer exists and you can't access any contents of * the deleted file system.

You can't delete a file system that is in use. * That is, if the file system has any mount targets, you must first delete them. * For more information, see DescribeMountTargets and * DeleteMountTarget.

The DeleteFileSystem call * returns while the file system state is still deleting. You can * check the file system deletion status by calling the DescribeFileSystems * operation, which returns a list of file systems in your account. If you pass * file system ID or creation token for the deleted file system, the * DescribeFileSystems returns a 404 FileSystemNotFound * error.

This operation requires permissions for the * elasticfilesystem:DeleteFileSystem action.

See Also:

* AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DeleteFileSystemOutcomeCallable DeleteFileSystemCallable(const Model::DeleteFileSystemRequest& request) const; /** *

Deletes a file system, permanently severing access to its contents. Upon * return, the file system no longer exists and you can't access any contents of * the deleted file system.

You can't delete a file system that is in use. * That is, if the file system has any mount targets, you must first delete them. * For more information, see DescribeMountTargets and * DeleteMountTarget.

The DeleteFileSystem call * returns while the file system state is still deleting. You can * check the file system deletion status by calling the DescribeFileSystems * operation, which returns a list of file systems in your account. If you pass * file system ID or creation token for the deleted file system, the * DescribeFileSystems returns a 404 FileSystemNotFound * error.

This operation requires permissions for the * elasticfilesystem:DeleteFileSystem action.

See Also:

* AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DeleteFileSystemAsync(const Model::DeleteFileSystemRequest& request, const DeleteFileSystemResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Deletes the FileSystemPolicy for the specified file system. The * default FileSystemPolicy goes into effect once the existing policy * is deleted. For more information about the default file system policy, see Using * Resource-based Policies with EFS.

This operation requires permissions * for the elasticfilesystem:DeleteFileSystemPolicy * action.

See Also:

AWS * API Reference

*/ virtual Model::DeleteFileSystemPolicyOutcome DeleteFileSystemPolicy(const Model::DeleteFileSystemPolicyRequest& request) const; /** *

Deletes the FileSystemPolicy for the specified file system. The * default FileSystemPolicy goes into effect once the existing policy * is deleted. For more information about the default file system policy, see Using * Resource-based Policies with EFS.

This operation requires permissions * for the elasticfilesystem:DeleteFileSystemPolicy * action.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DeleteFileSystemPolicyOutcomeCallable DeleteFileSystemPolicyCallable(const Model::DeleteFileSystemPolicyRequest& request) const; /** *

Deletes the FileSystemPolicy for the specified file system. The * default FileSystemPolicy goes into effect once the existing policy * is deleted. For more information about the default file system policy, see Using * Resource-based Policies with EFS.

This operation requires permissions * for the elasticfilesystem:DeleteFileSystemPolicy * action.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DeleteFileSystemPolicyAsync(const Model::DeleteFileSystemPolicyRequest& request, const DeleteFileSystemPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Deletes the specified mount target.

This operation forcibly breaks any * mounts of the file system by using the mount target that is being deleted, which * might disrupt instances or applications using those mounts. To avoid * applications getting cut off abruptly, you might consider unmounting any mounts * of the mount target, if feasible. The operation also deletes the associated * network interface. Uncommitted writes might be lost, but breaking a mount target * using this operation does not corrupt the file system itself. The file system * you created remains. You can mount an EC2 instance in your VPC by using another * mount target.

This operation requires permissions for the following * action on the file system:

  • * elasticfilesystem:DeleteMountTarget

The * DeleteMountTarget call returns while the mount target state is * still deleting. You can check the mount target deletion by calling * the DescribeMountTargets operation, which returns a list of mount target * descriptions for the given file system.

The operation also * requires permissions for the following Amazon EC2 action on the mount target's * network interface:

  • ec2:DeleteNetworkInterface *

See Also:

AWS * API Reference

*/ virtual Model::DeleteMountTargetOutcome DeleteMountTarget(const Model::DeleteMountTargetRequest& request) const; /** *

Deletes the specified mount target.

This operation forcibly breaks any * mounts of the file system by using the mount target that is being deleted, which * might disrupt instances or applications using those mounts. To avoid * applications getting cut off abruptly, you might consider unmounting any mounts * of the mount target, if feasible. The operation also deletes the associated * network interface. Uncommitted writes might be lost, but breaking a mount target * using this operation does not corrupt the file system itself. The file system * you created remains. You can mount an EC2 instance in your VPC by using another * mount target.

This operation requires permissions for the following * action on the file system:

  • * elasticfilesystem:DeleteMountTarget

The * DeleteMountTarget call returns while the mount target state is * still deleting. You can check the mount target deletion by calling * the DescribeMountTargets operation, which returns a list of mount target * descriptions for the given file system.

The operation also * requires permissions for the following Amazon EC2 action on the mount target's * network interface:

  • ec2:DeleteNetworkInterface *

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DeleteMountTargetOutcomeCallable DeleteMountTargetCallable(const Model::DeleteMountTargetRequest& request) const; /** *

Deletes the specified mount target.

This operation forcibly breaks any * mounts of the file system by using the mount target that is being deleted, which * might disrupt instances or applications using those mounts. To avoid * applications getting cut off abruptly, you might consider unmounting any mounts * of the mount target, if feasible. The operation also deletes the associated * network interface. Uncommitted writes might be lost, but breaking a mount target * using this operation does not corrupt the file system itself. The file system * you created remains. You can mount an EC2 instance in your VPC by using another * mount target.

This operation requires permissions for the following * action on the file system:

  • * elasticfilesystem:DeleteMountTarget

The * DeleteMountTarget call returns while the mount target state is * still deleting. You can check the mount target deletion by calling * the DescribeMountTargets operation, which returns a list of mount target * descriptions for the given file system.

The operation also * requires permissions for the following Amazon EC2 action on the mount target's * network interface:

  • ec2:DeleteNetworkInterface *

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DeleteMountTargetAsync(const Model::DeleteMountTargetRequest& request, const DeleteMountTargetResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Returns the description of a specific Amazon EFS access point if the * AccessPointId is provided. If you provide an EFS * FileSystemId, it returns descriptions of all access points for that * file system. You can provide either an AccessPointId or a * FileSystemId in the request, but not both.

This operation * requires permissions for the elasticfilesystem:DescribeAccessPoints * action.

See Also:

AWS * API Reference

*/ virtual Model::DescribeAccessPointsOutcome DescribeAccessPoints(const Model::DescribeAccessPointsRequest& request) const; /** *

Returns the description of a specific Amazon EFS access point if the * AccessPointId is provided. If you provide an EFS * FileSystemId, it returns descriptions of all access points for that * file system. You can provide either an AccessPointId or a * FileSystemId in the request, but not both.

This operation * requires permissions for the elasticfilesystem:DescribeAccessPoints * action.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DescribeAccessPointsOutcomeCallable DescribeAccessPointsCallable(const Model::DescribeAccessPointsRequest& request) const; /** *

Returns the description of a specific Amazon EFS access point if the * AccessPointId is provided. If you provide an EFS * FileSystemId, it returns descriptions of all access points for that * file system. You can provide either an AccessPointId or a * FileSystemId in the request, but not both.

This operation * requires permissions for the elasticfilesystem:DescribeAccessPoints * action.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DescribeAccessPointsAsync(const Model::DescribeAccessPointsRequest& request, const DescribeAccessPointsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Returns the backup policy for the specified EFS file system.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeBackupPolicyOutcome DescribeBackupPolicy(const Model::DescribeBackupPolicyRequest& request) const; /** *

Returns the backup policy for the specified EFS file system.

See * Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DescribeBackupPolicyOutcomeCallable DescribeBackupPolicyCallable(const Model::DescribeBackupPolicyRequest& request) const; /** *

Returns the backup policy for the specified EFS file system.

See * Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DescribeBackupPolicyAsync(const Model::DescribeBackupPolicyRequest& request, const DescribeBackupPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Returns the FileSystemPolicy for the specified EFS file * system.

This operation requires permissions for the * elasticfilesystem:DescribeFileSystemPolicy action.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeFileSystemPolicyOutcome DescribeFileSystemPolicy(const Model::DescribeFileSystemPolicyRequest& request) const; /** *

Returns the FileSystemPolicy for the specified EFS file * system.

This operation requires permissions for the * elasticfilesystem:DescribeFileSystemPolicy action.

See * Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DescribeFileSystemPolicyOutcomeCallable DescribeFileSystemPolicyCallable(const Model::DescribeFileSystemPolicyRequest& request) const; /** *

Returns the FileSystemPolicy for the specified EFS file * system.

This operation requires permissions for the * elasticfilesystem:DescribeFileSystemPolicy action.

See * Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DescribeFileSystemPolicyAsync(const Model::DescribeFileSystemPolicyRequest& request, const DescribeFileSystemPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Returns the description of a specific Amazon EFS file system if either the * file system CreationToken or the FileSystemId is * provided. Otherwise, it returns descriptions of all file systems owned by the * caller's AWS account in the AWS Region of the endpoint that you're calling.

*

When retrieving all file system descriptions, you can optionally specify the * MaxItems parameter to limit the number of descriptions in a * response. Currently, this number is automatically set to 10. If more file system * descriptions remain, Amazon EFS returns a NextMarker, an opaque * token, in the response. In this case, you should send a subsequent request with * the Marker request parameter set to the value of * NextMarker.

To retrieve a list of your file system * descriptions, this operation is used in an iterative process, where * DescribeFileSystems is called first without the Marker * and then the operation continues to call it with the Marker * parameter set to the value of the NextMarker from the previous * response until the response has no NextMarker.

The order * of file systems returned in the response of one DescribeFileSystems * call and the order of file systems returned across the responses of a multi-call * iteration is unspecified.

This operation requires permissions for the * elasticfilesystem:DescribeFileSystems action.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeFileSystemsOutcome DescribeFileSystems(const Model::DescribeFileSystemsRequest& request) const; /** *

Returns the description of a specific Amazon EFS file system if either the * file system CreationToken or the FileSystemId is * provided. Otherwise, it returns descriptions of all file systems owned by the * caller's AWS account in the AWS Region of the endpoint that you're calling.

*

When retrieving all file system descriptions, you can optionally specify the * MaxItems parameter to limit the number of descriptions in a * response. Currently, this number is automatically set to 10. If more file system * descriptions remain, Amazon EFS returns a NextMarker, an opaque * token, in the response. In this case, you should send a subsequent request with * the Marker request parameter set to the value of * NextMarker.

To retrieve a list of your file system * descriptions, this operation is used in an iterative process, where * DescribeFileSystems is called first without the Marker * and then the operation continues to call it with the Marker * parameter set to the value of the NextMarker from the previous * response until the response has no NextMarker.

The order * of file systems returned in the response of one DescribeFileSystems * call and the order of file systems returned across the responses of a multi-call * iteration is unspecified.

This operation requires permissions for the * elasticfilesystem:DescribeFileSystems action.

See * Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DescribeFileSystemsOutcomeCallable DescribeFileSystemsCallable(const Model::DescribeFileSystemsRequest& request) const; /** *

Returns the description of a specific Amazon EFS file system if either the * file system CreationToken or the FileSystemId is * provided. Otherwise, it returns descriptions of all file systems owned by the * caller's AWS account in the AWS Region of the endpoint that you're calling.

*

When retrieving all file system descriptions, you can optionally specify the * MaxItems parameter to limit the number of descriptions in a * response. Currently, this number is automatically set to 10. If more file system * descriptions remain, Amazon EFS returns a NextMarker, an opaque * token, in the response. In this case, you should send a subsequent request with * the Marker request parameter set to the value of * NextMarker.

To retrieve a list of your file system * descriptions, this operation is used in an iterative process, where * DescribeFileSystems is called first without the Marker * and then the operation continues to call it with the Marker * parameter set to the value of the NextMarker from the previous * response until the response has no NextMarker.

The order * of file systems returned in the response of one DescribeFileSystems * call and the order of file systems returned across the responses of a multi-call * iteration is unspecified.

This operation requires permissions for the * elasticfilesystem:DescribeFileSystems action.

See * Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DescribeFileSystemsAsync(const Model::DescribeFileSystemsRequest& request, const DescribeFileSystemsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Returns the current LifecycleConfiguration object for the * specified Amazon EFS file system. EFS lifecycle management uses the * LifecycleConfiguration object to identify which files to move to * the EFS Infrequent Access (IA) storage class. For a file system without a * LifecycleConfiguration object, the call returns an empty array in * the response.

This operation requires permissions for the * elasticfilesystem:DescribeLifecycleConfiguration * operation.

See Also:

AWS * API Reference

*/ virtual Model::DescribeLifecycleConfigurationOutcome DescribeLifecycleConfiguration(const Model::DescribeLifecycleConfigurationRequest& request) const; /** *

Returns the current LifecycleConfiguration object for the * specified Amazon EFS file system. EFS lifecycle management uses the * LifecycleConfiguration object to identify which files to move to * the EFS Infrequent Access (IA) storage class. For a file system without a * LifecycleConfiguration object, the call returns an empty array in * the response.

This operation requires permissions for the * elasticfilesystem:DescribeLifecycleConfiguration * operation.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DescribeLifecycleConfigurationOutcomeCallable DescribeLifecycleConfigurationCallable(const Model::DescribeLifecycleConfigurationRequest& request) const; /** *

Returns the current LifecycleConfiguration object for the * specified Amazon EFS file system. EFS lifecycle management uses the * LifecycleConfiguration object to identify which files to move to * the EFS Infrequent Access (IA) storage class. For a file system without a * LifecycleConfiguration object, the call returns an empty array in * the response.

This operation requires permissions for the * elasticfilesystem:DescribeLifecycleConfiguration * operation.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DescribeLifecycleConfigurationAsync(const Model::DescribeLifecycleConfigurationRequest& request, const DescribeLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Returns the security groups currently in effect for a mount target. This * operation requires that the network interface of the mount target has been * created and the lifecycle state of the mount target is not * deleted.

This operation requires permissions for the * following actions:

  • * elasticfilesystem:DescribeMountTargetSecurityGroups action on the * mount target's file system.

  • * ec2:DescribeNetworkInterfaceAttribute action on the mount target's * network interface.

See Also:

AWS * API Reference

*/ virtual Model::DescribeMountTargetSecurityGroupsOutcome DescribeMountTargetSecurityGroups(const Model::DescribeMountTargetSecurityGroupsRequest& request) const; /** *

Returns the security groups currently in effect for a mount target. This * operation requires that the network interface of the mount target has been * created and the lifecycle state of the mount target is not * deleted.

This operation requires permissions for the * following actions:

  • * elasticfilesystem:DescribeMountTargetSecurityGroups action on the * mount target's file system.

  • * ec2:DescribeNetworkInterfaceAttribute action on the mount target's * network interface.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DescribeMountTargetSecurityGroupsOutcomeCallable DescribeMountTargetSecurityGroupsCallable(const Model::DescribeMountTargetSecurityGroupsRequest& request) const; /** *

Returns the security groups currently in effect for a mount target. This * operation requires that the network interface of the mount target has been * created and the lifecycle state of the mount target is not * deleted.

This operation requires permissions for the * following actions:

  • * elasticfilesystem:DescribeMountTargetSecurityGroups action on the * mount target's file system.

  • * ec2:DescribeNetworkInterfaceAttribute action on the mount target's * network interface.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DescribeMountTargetSecurityGroupsAsync(const Model::DescribeMountTargetSecurityGroupsRequest& request, const DescribeMountTargetSecurityGroupsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Returns the descriptions of all the current mount targets, or a specific * mount target, for a file system. When requesting all of the current mount * targets, the order of mount targets returned in the response is unspecified.

*

This operation requires permissions for the * elasticfilesystem:DescribeMountTargets action, on either the file * system ID that you specify in FileSystemId, or on the file system * of the mount target that you specify in * MountTargetId.

See Also:

AWS * API Reference

*/ virtual Model::DescribeMountTargetsOutcome DescribeMountTargets(const Model::DescribeMountTargetsRequest& request) const; /** *

Returns the descriptions of all the current mount targets, or a specific * mount target, for a file system. When requesting all of the current mount * targets, the order of mount targets returned in the response is unspecified.

*

This operation requires permissions for the * elasticfilesystem:DescribeMountTargets action, on either the file * system ID that you specify in FileSystemId, or on the file system * of the mount target that you specify in * MountTargetId.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DescribeMountTargetsOutcomeCallable DescribeMountTargetsCallable(const Model::DescribeMountTargetsRequest& request) const; /** *

Returns the descriptions of all the current mount targets, or a specific * mount target, for a file system. When requesting all of the current mount * targets, the order of mount targets returned in the response is unspecified.

*

This operation requires permissions for the * elasticfilesystem:DescribeMountTargets action, on either the file * system ID that you specify in FileSystemId, or on the file system * of the mount target that you specify in * MountTargetId.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DescribeMountTargetsAsync(const Model::DescribeMountTargetsRequest& request, const DescribeMountTargetsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Lists all tags for a top-level EFS resource. You must provide the ID of the * resource that you want to retrieve the tags for.

This operation requires * permissions for the elasticfilesystem:DescribeAccessPoints * action.

See Also:

AWS * API Reference

*/ virtual Model::ListTagsForResourceOutcome ListTagsForResource(const Model::ListTagsForResourceRequest& request) const; /** *

Lists all tags for a top-level EFS resource. You must provide the ID of the * resource that you want to retrieve the tags for.

This operation requires * permissions for the elasticfilesystem:DescribeAccessPoints * action.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::ListTagsForResourceOutcomeCallable ListTagsForResourceCallable(const Model::ListTagsForResourceRequest& request) const; /** *

Lists all tags for a top-level EFS resource. You must provide the ID of the * resource that you want to retrieve the tags for.

This operation requires * permissions for the elasticfilesystem:DescribeAccessPoints * action.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void ListTagsForResourceAsync(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Modifies the set of security groups in effect for a mount target.

When * you create a mount target, Amazon EFS also creates a new network interface. For * more information, see CreateMountTarget. This operation replaces the * security groups in effect for the network interface associated with a mount * target, with the SecurityGroups provided in the request. This * operation requires that the network interface of the mount target has been * created and the lifecycle state of the mount target is not deleted. *

The operation requires permissions for the following actions:

    *
  • elasticfilesystem:ModifyMountTargetSecurityGroups action * on the mount target's file system.

  • * ec2:ModifyNetworkInterfaceAttribute action on the mount target's * network interface.

See Also:

AWS * API Reference

*/ virtual Model::ModifyMountTargetSecurityGroupsOutcome ModifyMountTargetSecurityGroups(const Model::ModifyMountTargetSecurityGroupsRequest& request) const; /** *

Modifies the set of security groups in effect for a mount target.

When * you create a mount target, Amazon EFS also creates a new network interface. For * more information, see CreateMountTarget. This operation replaces the * security groups in effect for the network interface associated with a mount * target, with the SecurityGroups provided in the request. This * operation requires that the network interface of the mount target has been * created and the lifecycle state of the mount target is not deleted. *

The operation requires permissions for the following actions:

    *
  • elasticfilesystem:ModifyMountTargetSecurityGroups action * on the mount target's file system.

  • * ec2:ModifyNetworkInterfaceAttribute action on the mount target's * network interface.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::ModifyMountTargetSecurityGroupsOutcomeCallable ModifyMountTargetSecurityGroupsCallable(const Model::ModifyMountTargetSecurityGroupsRequest& request) const; /** *

Modifies the set of security groups in effect for a mount target.

When * you create a mount target, Amazon EFS also creates a new network interface. For * more information, see CreateMountTarget. This operation replaces the * security groups in effect for the network interface associated with a mount * target, with the SecurityGroups provided in the request. This * operation requires that the network interface of the mount target has been * created and the lifecycle state of the mount target is not deleted. *

The operation requires permissions for the following actions:

    *
  • elasticfilesystem:ModifyMountTargetSecurityGroups action * on the mount target's file system.

  • * ec2:ModifyNetworkInterfaceAttribute action on the mount target's * network interface.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void ModifyMountTargetSecurityGroupsAsync(const Model::ModifyMountTargetSecurityGroupsRequest& request, const ModifyMountTargetSecurityGroupsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Updates the file system's backup policy. Use this action to start or stop * automatic backups of the file system.

See Also:

AWS * API Reference

*/ virtual Model::PutBackupPolicyOutcome PutBackupPolicy(const Model::PutBackupPolicyRequest& request) const; /** *

Updates the file system's backup policy. Use this action to start or stop * automatic backups of the file system.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::PutBackupPolicyOutcomeCallable PutBackupPolicyCallable(const Model::PutBackupPolicyRequest& request) const; /** *

Updates the file system's backup policy. Use this action to start or stop * automatic backups of the file system.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void PutBackupPolicyAsync(const Model::PutBackupPolicyRequest& request, const PutBackupPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Applies an Amazon EFS FileSystemPolicy to an Amazon EFS file * system. A file system policy is an IAM resource-based policy and can contain * multiple policy statements. A file system always has exactly one file system * policy, which can be the default policy or an explicit policy set or updated * using this API operation. When an explicit policy is set, it overrides the * default policy. For more information about the default file system policy, see * Default * EFS File System Policy.

This operation requires permissions for the * elasticfilesystem:PutFileSystemPolicy action.

See * Also:

AWS * API Reference

*/ virtual Model::PutFileSystemPolicyOutcome PutFileSystemPolicy(const Model::PutFileSystemPolicyRequest& request) const; /** *

Applies an Amazon EFS FileSystemPolicy to an Amazon EFS file * system. A file system policy is an IAM resource-based policy and can contain * multiple policy statements. A file system always has exactly one file system * policy, which can be the default policy or an explicit policy set or updated * using this API operation. When an explicit policy is set, it overrides the * default policy. For more information about the default file system policy, see * Default * EFS File System Policy.

This operation requires permissions for the * elasticfilesystem:PutFileSystemPolicy action.

See * Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::PutFileSystemPolicyOutcomeCallable PutFileSystemPolicyCallable(const Model::PutFileSystemPolicyRequest& request) const; /** *

Applies an Amazon EFS FileSystemPolicy to an Amazon EFS file * system. A file system policy is an IAM resource-based policy and can contain * multiple policy statements. A file system always has exactly one file system * policy, which can be the default policy or an explicit policy set or updated * using this API operation. When an explicit policy is set, it overrides the * default policy. For more information about the default file system policy, see * Default * EFS File System Policy.

This operation requires permissions for the * elasticfilesystem:PutFileSystemPolicy action.

See * Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void PutFileSystemPolicyAsync(const Model::PutFileSystemPolicyRequest& request, const PutFileSystemPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Enables lifecycle management by creating a new * LifecycleConfiguration object. A * LifecycleConfiguration object defines when files in an Amazon EFS * file system are automatically transitioned to the lower-cost EFS Infrequent * Access (IA) storage class. A LifecycleConfiguration applies to all * files in a file system.

Each Amazon EFS file system supports one * lifecycle configuration, which applies to all files in the file system. If a * LifecycleConfiguration object already exists for the specified file * system, a PutLifecycleConfiguration call modifies the existing * configuration. A PutLifecycleConfiguration call with an empty * LifecyclePolicies array in the request body deletes any existing * LifecycleConfiguration and disables lifecycle management.

In * the request, specify the following:

  • The ID for the file system * for which you are enabling, disabling, or modifying lifecycle management.

    *
  • A LifecyclePolicies array of * LifecyclePolicy objects that define when files are moved to the IA * storage class. The array can contain only one LifecyclePolicy * item.

This operation requires permissions for the * elasticfilesystem:PutLifecycleConfiguration operation.

To * apply a LifecycleConfiguration object to an encrypted file system, * you need the same AWS Key Management Service (AWS KMS) permissions as when you * created the encrypted file system.

See Also:

AWS * API Reference

*/ virtual Model::PutLifecycleConfigurationOutcome PutLifecycleConfiguration(const Model::PutLifecycleConfigurationRequest& request) const; /** *

Enables lifecycle management by creating a new * LifecycleConfiguration object. A * LifecycleConfiguration object defines when files in an Amazon EFS * file system are automatically transitioned to the lower-cost EFS Infrequent * Access (IA) storage class. A LifecycleConfiguration applies to all * files in a file system.

Each Amazon EFS file system supports one * lifecycle configuration, which applies to all files in the file system. If a * LifecycleConfiguration object already exists for the specified file * system, a PutLifecycleConfiguration call modifies the existing * configuration. A PutLifecycleConfiguration call with an empty * LifecyclePolicies array in the request body deletes any existing * LifecycleConfiguration and disables lifecycle management.

In * the request, specify the following:

  • The ID for the file system * for which you are enabling, disabling, or modifying lifecycle management.

    *
  • A LifecyclePolicies array of * LifecyclePolicy objects that define when files are moved to the IA * storage class. The array can contain only one LifecyclePolicy * item.

This operation requires permissions for the * elasticfilesystem:PutLifecycleConfiguration operation.

To * apply a LifecycleConfiguration object to an encrypted file system, * you need the same AWS Key Management Service (AWS KMS) permissions as when you * created the encrypted file system.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::PutLifecycleConfigurationOutcomeCallable PutLifecycleConfigurationCallable(const Model::PutLifecycleConfigurationRequest& request) const; /** *

Enables lifecycle management by creating a new * LifecycleConfiguration object. A * LifecycleConfiguration object defines when files in an Amazon EFS * file system are automatically transitioned to the lower-cost EFS Infrequent * Access (IA) storage class. A LifecycleConfiguration applies to all * files in a file system.

Each Amazon EFS file system supports one * lifecycle configuration, which applies to all files in the file system. If a * LifecycleConfiguration object already exists for the specified file * system, a PutLifecycleConfiguration call modifies the existing * configuration. A PutLifecycleConfiguration call with an empty * LifecyclePolicies array in the request body deletes any existing * LifecycleConfiguration and disables lifecycle management.

In * the request, specify the following:

  • The ID for the file system * for which you are enabling, disabling, or modifying lifecycle management.

    *
  • A LifecyclePolicies array of * LifecyclePolicy objects that define when files are moved to the IA * storage class. The array can contain only one LifecyclePolicy * item.

This operation requires permissions for the * elasticfilesystem:PutLifecycleConfiguration operation.

To * apply a LifecycleConfiguration object to an encrypted file system, * you need the same AWS Key Management Service (AWS KMS) permissions as when you * created the encrypted file system.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void PutLifecycleConfigurationAsync(const Model::PutLifecycleConfigurationRequest& request, const PutLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Creates a tag for an EFS resource. You can create tags for EFS file systems * and access points using this API operation.

This operation requires * permissions for the elasticfilesystem:TagResource * action.

See Also:

AWS * API Reference

*/ virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const; /** *

Creates a tag for an EFS resource. You can create tags for EFS file systems * and access points using this API operation.

This operation requires * permissions for the elasticfilesystem:TagResource * action.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::TagResourceOutcomeCallable TagResourceCallable(const Model::TagResourceRequest& request) const; /** *

Creates a tag for an EFS resource. You can create tags for EFS file systems * and access points using this API operation.

This operation requires * permissions for the elasticfilesystem:TagResource * action.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void TagResourceAsync(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Removes tags from an EFS resource. You can remove tags from EFS file systems * and access points using this API operation.

This operation requires * permissions for the elasticfilesystem:UntagResource * action.

See Also:

AWS * API Reference

*/ virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const; /** *

Removes tags from an EFS resource. You can remove tags from EFS file systems * and access points using this API operation.

This operation requires * permissions for the elasticfilesystem:UntagResource * action.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::UntagResourceOutcomeCallable UntagResourceCallable(const Model::UntagResourceRequest& request) const; /** *

Removes tags from an EFS resource. You can remove tags from EFS file systems * and access points using this API operation.

This operation requires * permissions for the elasticfilesystem:UntagResource * action.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void UntagResourceAsync(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Updates the throughput mode or the amount of provisioned throughput of an * existing file system.

See Also:

AWS * API Reference

*/ virtual Model::UpdateFileSystemOutcome UpdateFileSystem(const Model::UpdateFileSystemRequest& request) const; /** *

Updates the throughput mode or the amount of provisioned throughput of an * existing file system.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::UpdateFileSystemOutcomeCallable UpdateFileSystemCallable(const Model::UpdateFileSystemRequest& request) const; /** *

Updates the throughput mode or the amount of provisioned throughput of an * existing file system.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void UpdateFileSystemAsync(const Model::UpdateFileSystemRequest& request, const UpdateFileSystemResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; void OverrideEndpoint(const Aws::String& endpoint); private: void init(const Aws::Client::ClientConfiguration& clientConfiguration); void CreateAccessPointAsyncHelper(const Model::CreateAccessPointRequest& request, const CreateAccessPointResponseReceivedHandler& handler, const std::shared_ptr& context) const; void CreateFileSystemAsyncHelper(const Model::CreateFileSystemRequest& request, const CreateFileSystemResponseReceivedHandler& handler, const std::shared_ptr& context) const; void CreateMountTargetAsyncHelper(const Model::CreateMountTargetRequest& request, const CreateMountTargetResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DeleteAccessPointAsyncHelper(const Model::DeleteAccessPointRequest& request, const DeleteAccessPointResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DeleteFileSystemAsyncHelper(const Model::DeleteFileSystemRequest& request, const DeleteFileSystemResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DeleteFileSystemPolicyAsyncHelper(const Model::DeleteFileSystemPolicyRequest& request, const DeleteFileSystemPolicyResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DeleteMountTargetAsyncHelper(const Model::DeleteMountTargetRequest& request, const DeleteMountTargetResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DescribeAccessPointsAsyncHelper(const Model::DescribeAccessPointsRequest& request, const DescribeAccessPointsResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DescribeBackupPolicyAsyncHelper(const Model::DescribeBackupPolicyRequest& request, const DescribeBackupPolicyResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DescribeFileSystemPolicyAsyncHelper(const Model::DescribeFileSystemPolicyRequest& request, const DescribeFileSystemPolicyResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DescribeFileSystemsAsyncHelper(const Model::DescribeFileSystemsRequest& request, const DescribeFileSystemsResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DescribeLifecycleConfigurationAsyncHelper(const Model::DescribeLifecycleConfigurationRequest& request, const DescribeLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DescribeMountTargetSecurityGroupsAsyncHelper(const Model::DescribeMountTargetSecurityGroupsRequest& request, const DescribeMountTargetSecurityGroupsResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DescribeMountTargetsAsyncHelper(const Model::DescribeMountTargetsRequest& request, const DescribeMountTargetsResponseReceivedHandler& handler, const std::shared_ptr& context) const; void ListTagsForResourceAsyncHelper(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr& context) const; void ModifyMountTargetSecurityGroupsAsyncHelper(const Model::ModifyMountTargetSecurityGroupsRequest& request, const ModifyMountTargetSecurityGroupsResponseReceivedHandler& handler, const std::shared_ptr& context) const; void PutBackupPolicyAsyncHelper(const Model::PutBackupPolicyRequest& request, const PutBackupPolicyResponseReceivedHandler& handler, const std::shared_ptr& context) const; void PutFileSystemPolicyAsyncHelper(const Model::PutFileSystemPolicyRequest& request, const PutFileSystemPolicyResponseReceivedHandler& handler, const std::shared_ptr& context) const; void PutLifecycleConfigurationAsyncHelper(const Model::PutLifecycleConfigurationRequest& request, const PutLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context) const; void TagResourceAsyncHelper(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr& context) const; void UntagResourceAsyncHelper(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr& context) const; void UpdateFileSystemAsyncHelper(const Model::UpdateFileSystemRequest& request, const UpdateFileSystemResponseReceivedHandler& handler, const std::shared_ptr& context) const; Aws::String m_uri; Aws::String m_configScheme; std::shared_ptr m_executor; }; } // namespace EFS } // namespace Aws