/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include namespace Aws { namespace EFS { /** * Amazon Elastic File System

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

*/ class AWS_EFS_API EFSClient : public Aws::Client::AWSJsonClient, public Aws::Client::ClientWithAsyncTemplateMethods { public: typedef Aws::Client::AWSJsonClient BASECLASS; static const char* SERVICE_NAME; static const char* ALLOCATION_TAG; typedef EFSClientConfiguration ClientConfigurationType; typedef EFSEndpointProvider EndpointProviderType; /** * 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::EFS::EFSClientConfiguration& clientConfiguration = Aws::EFS::EFSClientConfiguration(), std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG)); /** * 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, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::EFS::EFSClientConfiguration& clientConfiguration = Aws::EFS::EFSClientConfiguration()); /** * 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, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::EFS::EFSClientConfiguration& clientConfiguration = Aws::EFS::EFSClientConfiguration()); /* Legacy constructors due deprecation */ /** * 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); /** * 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); /** * 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); /* End of legacy constructors due deprecation */ 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 the * application's own directory and any subdirectories. To learn more, see Mounting * a file system using EFS access points.

If multiple requests to * create access points on the same file system are sent in quick succession, and * the file system is near the limit of 1,000 access points, you may experience a * throttling response for these requests. This is to ensure that the file system * does not exceed the stated access point limit.

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

Access points can be tagged on creation. If tags are specified in * the creation action, IAM performs additional authorization on the * elasticfilesystem:TagResource action to verify if users have * permissions to create tags. Therefore, you must grant explicit permissions to * use the elasticfilesystem:TagResource action. For more information, * see Granting * permissions to tag resources during creation.

See Also:

AWS * API Reference

*/ virtual Model::CreateAccessPointOutcome CreateAccessPoint(const Model::CreateAccessPointRequest& request) const; /** * A Callable wrapper for CreateAccessPoint that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateAccessPointOutcomeCallable CreateAccessPointCallable(const CreateAccessPointRequestT& request) const { return SubmitCallable(&EFSClient::CreateAccessPoint, request); } /** * An Async wrapper for CreateAccessPoint that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateAccessPointAsync(const CreateAccessPointRequestT& request, const CreateAccessPointResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::CreateAccessPoint, request, handler, context); } /** *

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 Amazon Web Services 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.

For more information, see Creating * a file system in the Amazon EFS User Guide.

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 accepts 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.

You can set the throughput mode for the file * system using the ThroughputMode parameter.

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.

File systems can * be tagged on creation. If tags are specified in the creation action, IAM * performs additional authorization on the * elasticfilesystem:TagResource action to verify if users have * permissions to create tags. Therefore, you must grant explicit permissions to * use the elasticfilesystem:TagResource action. For more information, * see Granting * permissions to tag resources during creation.

See Also:

AWS * API Reference

*/ virtual Model::CreateFileSystemOutcome CreateFileSystem(const Model::CreateFileSystemRequest& request) const; /** * A Callable wrapper for CreateFileSystem that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateFileSystemOutcomeCallable CreateFileSystemCallable(const CreateFileSystemRequestT& request) const { return SubmitCallable(&EFSClient::CreateFileSystem, request); } /** * An Async wrapper for CreateFileSystem that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateFileSystemAsync(const CreateFileSystemRequestT& request, const CreateFileSystemResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::CreateFileSystem, request, handler, context); } /** *

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.

You can create only * one mount target for an EFS file system using One Zone storage classes. You must * create that mount target in the same Availability Zone in which the file system * is located. Use the AvailabilityZoneName and * AvailabiltyZoneId properties in the DescribeFileSystems * response object to get this information. Use the subnetId * associated with the file system's Availability Zone when creating the mount * target.

For more information, see Amazon EFS: * How it Works.

To create a mount target for a file system, the file * system's lifecycle state must be available. For more information, * see DescribeFileSystems.

In the request, provide the * following:

  • The file system ID for which you are creating the * mount target.

  • A subnet ID, which determines the following:

    *
    • The VPC in which Amazon EFS creates the mount target

    • *

      The Availability Zone in which Amazon EFS creates the mount target

    • *
    • The 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; /** * A Callable wrapper for CreateMountTarget that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateMountTargetOutcomeCallable CreateMountTargetCallable(const CreateMountTargetRequestT& request) const { return SubmitCallable(&EFSClient::CreateMountTarget, request); } /** * An Async wrapper for CreateMountTarget that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateMountTargetAsync(const CreateMountTargetRequestT& request, const CreateMountTargetResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::CreateMountTarget, request, handler, context); } /** *

Creates a replication configuration that replicates an existing EFS file * system to a new, read-only file system. For more information, see Amazon EFS * replication in the Amazon EFS User Guide. The replication * configuration specifies the following:

  • Source file * system - An existing EFS file system that you want replicated. The source * file system cannot be a destination file system in an existing replication * configuration.

  • Destination file system configuration - * The configuration of the destination file system to which the source file system * will be replicated. There can only be one destination file system in a * replication configuration. The destination file system configuration consists of * the following properties:

    • Amazon Web Services Region - * The Amazon Web Services Region in which the destination file system is created. * Amazon EFS replication is available in all Amazon Web Services Regions that * Amazon EFS is available in, except Africa (Cape Town), Asia Pacific (Hong Kong), * Asia Pacific (Jakarta), Europe (Milan), and Middle East (Bahrain).

    • *
    • Availability Zone - If you want the destination file system to * use EFS One Zone availability and durability, you must specify the Availability * Zone to create the file system in. For more information about EFS storage * classes, see Amazon * EFS storage classes in the Amazon EFS User Guide.

    • * Encryption - All destination file systems are created with encryption at * rest enabled. You can specify the Key Management Service (KMS) key that is used * to encrypt the destination file system. If you don't specify a KMS key, your * service-managed KMS key for Amazon EFS is used.

      After the file * system is created, you cannot change the KMS key.

  • *

The following properties are set by default:

  • * Performance mode - The destination file system's performance mode matches * that of the source file system, unless the destination file system uses EFS One * Zone storage. In that case, the General Purpose performance mode is used. The * performance mode cannot be changed.

  • Throughput mode - * The destination file system's throughput mode matches that of the source file * system. After the file system is created, you can modify the throughput * mode.

The following properties are turned off by default:

*
  • Lifecycle management - EFS lifecycle management and EFS * Intelligent-Tiering are not enabled on the destination file system. After the * destination file system is created, you can enable EFS lifecycle management and * EFS Intelligent-Tiering.

  • Automatic backups - Automatic * daily backups not enabled on the destination file system. After the file system * is created, you can change this setting.

For more * information, see Amazon EFS * replication in the Amazon EFS User Guide.

See Also:

* AWS * API Reference

*/ virtual Model::CreateReplicationConfigurationOutcome CreateReplicationConfiguration(const Model::CreateReplicationConfigurationRequest& request) const; /** * A Callable wrapper for CreateReplicationConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateReplicationConfigurationOutcomeCallable CreateReplicationConfigurationCallable(const CreateReplicationConfigurationRequestT& request) const { return SubmitCallable(&EFSClient::CreateReplicationConfiguration, request); } /** * An Async wrapper for CreateReplicationConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateReplicationConfigurationAsync(const CreateReplicationConfigurationRequestT& request, const CreateReplicationConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::CreateReplicationConfiguration, request, handler, context); } /** *

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; /** * A Callable wrapper for DeleteAccessPoint that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteAccessPointOutcomeCallable DeleteAccessPointCallable(const DeleteAccessPointRequestT& request) const { return SubmitCallable(&EFSClient::DeleteAccessPoint, request); } /** * An Async wrapper for DeleteAccessPoint that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteAccessPointAsync(const DeleteAccessPointRequestT& request, const DeleteAccessPointResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::DeleteAccessPoint, request, handler, context); } /** *

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 need to manually delete mount targets * attached to a file system before you can delete an EFS file system. This step is * performed for you when you use the Amazon Web Services console to delete a file * system.

You cannot delete a file system that is part of an EFS * Replication configuration. You need to delete the replication configuration * first.

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; /** * A Callable wrapper for DeleteFileSystem that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteFileSystemOutcomeCallable DeleteFileSystemCallable(const DeleteFileSystemRequestT& request) const { return SubmitCallable(&EFSClient::DeleteFileSystem, request); } /** * An Async wrapper for DeleteFileSystem that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteFileSystemAsync(const DeleteFileSystemRequestT& request, const DeleteFileSystemResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::DeleteFileSystem, request, handler, context); } /** *

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; /** * A Callable wrapper for DeleteFileSystemPolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteFileSystemPolicyOutcomeCallable DeleteFileSystemPolicyCallable(const DeleteFileSystemPolicyRequestT& request) const { return SubmitCallable(&EFSClient::DeleteFileSystemPolicy, request); } /** * An Async wrapper for DeleteFileSystemPolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteFileSystemPolicyAsync(const DeleteFileSystemPolicyRequestT& request, const DeleteFileSystemPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::DeleteFileSystemPolicy, request, handler, context); } /** *

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; /** * A Callable wrapper for DeleteMountTarget that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteMountTargetOutcomeCallable DeleteMountTargetCallable(const DeleteMountTargetRequestT& request) const { return SubmitCallable(&EFSClient::DeleteMountTarget, request); } /** * An Async wrapper for DeleteMountTarget that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteMountTargetAsync(const DeleteMountTargetRequestT& request, const DeleteMountTargetResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::DeleteMountTarget, request, handler, context); } /** *

Deletes an existing replication configuration. To delete a replication * configuration, you must make the request from the Amazon Web Services Region in * which the destination file system is located. Deleting a replication * configuration ends the replication process. After a replication configuration is * deleted, the destination file system is no longer read-only. You can write to * the destination file system after its status becomes * Writeable.

See Also:

AWS * API Reference

*/ virtual Model::DeleteReplicationConfigurationOutcome DeleteReplicationConfiguration(const Model::DeleteReplicationConfigurationRequest& request) const; /** * A Callable wrapper for DeleteReplicationConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteReplicationConfigurationOutcomeCallable DeleteReplicationConfigurationCallable(const DeleteReplicationConfigurationRequestT& request) const { return SubmitCallable(&EFSClient::DeleteReplicationConfiguration, request); } /** * An Async wrapper for DeleteReplicationConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteReplicationConfigurationAsync(const DeleteReplicationConfigurationRequestT& request, const DeleteReplicationConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::DeleteReplicationConfiguration, request, handler, context); } /** *

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; /** * A Callable wrapper for DescribeAccessPoints that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeAccessPointsOutcomeCallable DescribeAccessPointsCallable(const DescribeAccessPointsRequestT& request) const { return SubmitCallable(&EFSClient::DescribeAccessPoints, request); } /** * An Async wrapper for DescribeAccessPoints that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeAccessPointsAsync(const DescribeAccessPointsRequestT& request, const DescribeAccessPointsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::DescribeAccessPoints, request, handler, context); } /** *

Returns the account preferences settings for the Amazon Web Services account * associated with the user making the request, in the current Amazon Web Services * Region. For more information, see Managing Amazon EFS resource * IDs.

See Also:

AWS * API Reference

*/ virtual Model::DescribeAccountPreferencesOutcome DescribeAccountPreferences(const Model::DescribeAccountPreferencesRequest& request) const; /** * A Callable wrapper for DescribeAccountPreferences that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeAccountPreferencesOutcomeCallable DescribeAccountPreferencesCallable(const DescribeAccountPreferencesRequestT& request) const { return SubmitCallable(&EFSClient::DescribeAccountPreferences, request); } /** * An Async wrapper for DescribeAccountPreferences that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeAccountPreferencesAsync(const DescribeAccountPreferencesRequestT& request, const DescribeAccountPreferencesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::DescribeAccountPreferences, request, handler, context); } /** *

Returns the backup policy for the specified EFS file system.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeBackupPolicyOutcome DescribeBackupPolicy(const Model::DescribeBackupPolicyRequest& request) const; /** * A Callable wrapper for DescribeBackupPolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeBackupPolicyOutcomeCallable DescribeBackupPolicyCallable(const DescribeBackupPolicyRequestT& request) const { return SubmitCallable(&EFSClient::DescribeBackupPolicy, request); } /** * An Async wrapper for DescribeBackupPolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeBackupPolicyAsync(const DescribeBackupPolicyRequestT& request, const DescribeBackupPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::DescribeBackupPolicy, request, handler, context); } /** *

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; /** * A Callable wrapper for DescribeFileSystemPolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeFileSystemPolicyOutcomeCallable DescribeFileSystemPolicyCallable(const DescribeFileSystemPolicyRequestT& request) const { return SubmitCallable(&EFSClient::DescribeFileSystemPolicy, request); } /** * An Async wrapper for DescribeFileSystemPolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeFileSystemPolicyAsync(const DescribeFileSystemPolicyRequestT& request, const DescribeFileSystemPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::DescribeFileSystemPolicy, request, handler, context); } /** *

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 Amazon Web Services account in the Amazon Web Services 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. This number is automatically set * to 100. 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; /** * A Callable wrapper for DescribeFileSystems that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeFileSystemsOutcomeCallable DescribeFileSystemsCallable(const DescribeFileSystemsRequestT& request) const { return SubmitCallable(&EFSClient::DescribeFileSystems, request); } /** * An Async wrapper for DescribeFileSystems that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeFileSystemsAsync(const DescribeFileSystemsRequestT& request, const DescribeFileSystemsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::DescribeFileSystems, request, handler, context); } /** *

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.

When EFS Intelligent-Tiering is enabled, * TransitionToPrimaryStorageClass has a value of * AFTER_1_ACCESS.

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

See Also:

AWS * API Reference

*/ virtual Model::DescribeLifecycleConfigurationOutcome DescribeLifecycleConfiguration(const Model::DescribeLifecycleConfigurationRequest& request) const; /** * A Callable wrapper for DescribeLifecycleConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeLifecycleConfigurationOutcomeCallable DescribeLifecycleConfigurationCallable(const DescribeLifecycleConfigurationRequestT& request) const { return SubmitCallable(&EFSClient::DescribeLifecycleConfiguration, request); } /** * An Async wrapper for DescribeLifecycleConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeLifecycleConfigurationAsync(const DescribeLifecycleConfigurationRequestT& request, const DescribeLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::DescribeLifecycleConfiguration, request, handler, context); } /** *

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; /** * A Callable wrapper for DescribeMountTargetSecurityGroups that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeMountTargetSecurityGroupsOutcomeCallable DescribeMountTargetSecurityGroupsCallable(const DescribeMountTargetSecurityGroupsRequestT& request) const { return SubmitCallable(&EFSClient::DescribeMountTargetSecurityGroups, request); } /** * An Async wrapper for DescribeMountTargetSecurityGroups that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeMountTargetSecurityGroupsAsync(const DescribeMountTargetSecurityGroupsRequestT& request, const DescribeMountTargetSecurityGroupsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::DescribeMountTargetSecurityGroups, request, handler, context); } /** *

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; /** * A Callable wrapper for DescribeMountTargets that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeMountTargetsOutcomeCallable DescribeMountTargetsCallable(const DescribeMountTargetsRequestT& request) const { return SubmitCallable(&EFSClient::DescribeMountTargets, request); } /** * An Async wrapper for DescribeMountTargets that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeMountTargetsAsync(const DescribeMountTargetsRequestT& request, const DescribeMountTargetsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::DescribeMountTargets, request, handler, context); } /** *

Retrieves the replication configuration for a specific file system. If a file * system is not specified, all of the replication configurations for the Amazon * Web Services account in an Amazon Web Services Region are * retrieved.

See Also:

AWS * API Reference

*/ virtual Model::DescribeReplicationConfigurationsOutcome DescribeReplicationConfigurations(const Model::DescribeReplicationConfigurationsRequest& request) const; /** * A Callable wrapper for DescribeReplicationConfigurations that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeReplicationConfigurationsOutcomeCallable DescribeReplicationConfigurationsCallable(const DescribeReplicationConfigurationsRequestT& request) const { return SubmitCallable(&EFSClient::DescribeReplicationConfigurations, request); } /** * An Async wrapper for DescribeReplicationConfigurations that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeReplicationConfigurationsAsync(const DescribeReplicationConfigurationsRequestT& request, const DescribeReplicationConfigurationsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::DescribeReplicationConfigurations, request, handler, context); } /** *

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; /** * A Callable wrapper for ListTagsForResource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListTagsForResourceOutcomeCallable ListTagsForResourceCallable(const ListTagsForResourceRequestT& request) const { return SubmitCallable(&EFSClient::ListTagsForResource, request); } /** * An Async wrapper for ListTagsForResource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListTagsForResourceAsync(const ListTagsForResourceRequestT& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::ListTagsForResource, request, handler, context); } /** *

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; /** * A Callable wrapper for ModifyMountTargetSecurityGroups that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ModifyMountTargetSecurityGroupsOutcomeCallable ModifyMountTargetSecurityGroupsCallable(const ModifyMountTargetSecurityGroupsRequestT& request) const { return SubmitCallable(&EFSClient::ModifyMountTargetSecurityGroups, request); } /** * An Async wrapper for ModifyMountTargetSecurityGroups that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ModifyMountTargetSecurityGroupsAsync(const ModifyMountTargetSecurityGroupsRequestT& request, const ModifyMountTargetSecurityGroupsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::ModifyMountTargetSecurityGroups, request, handler, context); } /** *

Use this operation to set the account preference in the current Amazon Web * Services Region to use long 17 character (63 bit) or short 8 character (32 bit) * resource IDs for new EFS file system and mount target resources. All existing * resource IDs are not affected by any changes you make. You can set the ID * preference during the opt-in period as EFS transitions to long resource IDs. For * more information, see Managing * Amazon EFS resource IDs.

Starting in October, 2021, you will * receive an error if you try to set the account preference to use the short 8 * character format resource ID. Contact Amazon Web Services support if you receive * an error and must use short IDs for file system and mount target resources.

*

See Also:

AWS * API Reference

*/ virtual Model::PutAccountPreferencesOutcome PutAccountPreferences(const Model::PutAccountPreferencesRequest& request) const; /** * A Callable wrapper for PutAccountPreferences that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::PutAccountPreferencesOutcomeCallable PutAccountPreferencesCallable(const PutAccountPreferencesRequestT& request) const { return SubmitCallable(&EFSClient::PutAccountPreferences, request); } /** * An Async wrapper for PutAccountPreferences that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void PutAccountPreferencesAsync(const PutAccountPreferencesRequestT& request, const PutAccountPreferencesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::PutAccountPreferences, request, handler, context); } /** *

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; /** * A Callable wrapper for PutBackupPolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::PutBackupPolicyOutcomeCallable PutBackupPolicyCallable(const PutBackupPolicyRequestT& request) const { return SubmitCallable(&EFSClient::PutBackupPolicy, request); } /** * An Async wrapper for PutBackupPolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void PutBackupPolicyAsync(const PutBackupPolicyRequestT& request, const PutBackupPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::PutBackupPolicy, request, handler, context); } /** *

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. EFS file system policies have a 20,000 character * limit. 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.

EFS file system policies have a * 20,000 character limit.

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

See * Also:

AWS * API Reference

*/ virtual Model::PutFileSystemPolicyOutcome PutFileSystemPolicy(const Model::PutFileSystemPolicyRequest& request) const; /** * A Callable wrapper for PutFileSystemPolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::PutFileSystemPolicyOutcomeCallable PutFileSystemPolicyCallable(const PutFileSystemPolicyRequestT& request) const { return SubmitCallable(&EFSClient::PutFileSystemPolicy, request); } /** * An Async wrapper for PutFileSystemPolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void PutFileSystemPolicyAsync(const PutFileSystemPolicyRequestT& request, const PutFileSystemPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::PutFileSystemPolicy, request, handler, context); } /** *

Use this action to manage EFS lifecycle management and EFS * Intelligent-Tiering. A LifecycleConfiguration consists of one or * more LifecyclePolicy objects that define the following:

    *
  • EFS Lifecycle management - When Amazon EFS automatically * transitions files in a file system into the lower-cost EFS Infrequent Access * (IA) storage class.

    To enable EFS Lifecycle management, set the value of * TransitionToIA to one of the available options.

  • * EFS Intelligent-Tiering - When Amazon EFS automatically transitions files * from IA back into the file system's primary storage class (EFS Standard or EFS * One Zone Standard).

    To enable EFS Intelligent-Tiering, set the value of * TransitionToPrimaryStorageClass to AFTER_1_ACCESS.

    *

For more information, see EFS * Lifecycle Management.

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 turns off lifecycle management and EFS * Intelligent-Tiering for the file system.

In the request, specify the * following:

  • The ID for the file system for which you are * enabling, disabling, or modifying lifecycle management and EFS * Intelligent-Tiering.

  • A LifecyclePolicies array of * LifecyclePolicy objects that define when files are moved into IA * storage, and when they are moved back to Standard storage.

    Amazon * EFS requires that each LifecyclePolicy object have only have a * single transition, so the LifecyclePolicies array needs to be * structured with separate LifecyclePolicy objects. See the example * requests in the following section for more information.

*

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

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

See Also:

AWS * API Reference

*/ virtual Model::PutLifecycleConfigurationOutcome PutLifecycleConfiguration(const Model::PutLifecycleConfigurationRequest& request) const; /** * A Callable wrapper for PutLifecycleConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::PutLifecycleConfigurationOutcomeCallable PutLifecycleConfigurationCallable(const PutLifecycleConfigurationRequestT& request) const { return SubmitCallable(&EFSClient::PutLifecycleConfiguration, request); } /** * An Async wrapper for PutLifecycleConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void PutLifecycleConfigurationAsync(const PutLifecycleConfigurationRequestT& request, const PutLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::PutLifecycleConfiguration, request, handler, context); } /** *

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; /** * A Callable wrapper for TagResource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::TagResourceOutcomeCallable TagResourceCallable(const TagResourceRequestT& request) const { return SubmitCallable(&EFSClient::TagResource, request); } /** * An Async wrapper for TagResource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void TagResourceAsync(const TagResourceRequestT& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::TagResource, request, handler, context); } /** *

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; /** * A Callable wrapper for UntagResource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UntagResourceOutcomeCallable UntagResourceCallable(const UntagResourceRequestT& request) const { return SubmitCallable(&EFSClient::UntagResource, request); } /** * An Async wrapper for UntagResource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UntagResourceAsync(const UntagResourceRequestT& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::UntagResource, request, handler, context); } /** *

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; /** * A Callable wrapper for UpdateFileSystem that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateFileSystemOutcomeCallable UpdateFileSystemCallable(const UpdateFileSystemRequestT& request) const { return SubmitCallable(&EFSClient::UpdateFileSystem, request); } /** * An Async wrapper for UpdateFileSystem that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateFileSystemAsync(const UpdateFileSystemRequestT& request, const UpdateFileSystemResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EFSClient::UpdateFileSystem, request, handler, context); } void OverrideEndpoint(const Aws::String& endpoint); std::shared_ptr& accessEndpointProvider(); private: friend class Aws::Client::ClientWithAsyncTemplateMethods; void init(const EFSClientConfiguration& clientConfiguration); EFSClientConfiguration m_clientConfiguration; std::shared_ptr m_executor; std::shared_ptr m_endpointProvider; }; } // namespace EFS } // namespace Aws