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

software.amazon.awssdk.services.efs.DefaultEfsAsyncClient Maven / Gradle / Ivy

/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
 */

package software.amazon.awssdk.services.efs;

import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.awscore.AwsRequestOverrideConfiguration;
import software.amazon.awssdk.awscore.client.handler.AwsAsyncClientHandler;
import software.amazon.awssdk.awscore.exception.AwsServiceException;
import software.amazon.awssdk.core.ApiName;
import software.amazon.awssdk.core.RequestOverrideConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientOption;
import software.amazon.awssdk.core.client.handler.AsyncClientHandler;
import software.amazon.awssdk.core.client.handler.ClientExecutionParams;
import software.amazon.awssdk.core.http.HttpResponseHandler;
import software.amazon.awssdk.core.metrics.CoreMetric;
import software.amazon.awssdk.core.util.VersionInfo;
import software.amazon.awssdk.metrics.MetricCollector;
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.metrics.NoOpMetricCollector;
import software.amazon.awssdk.protocols.core.ExceptionMetadata;
import software.amazon.awssdk.protocols.json.AwsJsonProtocol;
import software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.BaseAwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.JsonOperationMetadata;
import software.amazon.awssdk.services.efs.model.AccessPointAlreadyExistsException;
import software.amazon.awssdk.services.efs.model.AccessPointLimitExceededException;
import software.amazon.awssdk.services.efs.model.AccessPointNotFoundException;
import software.amazon.awssdk.services.efs.model.AvailabilityZonesMismatchException;
import software.amazon.awssdk.services.efs.model.BadRequestException;
import software.amazon.awssdk.services.efs.model.CreateAccessPointRequest;
import software.amazon.awssdk.services.efs.model.CreateAccessPointResponse;
import software.amazon.awssdk.services.efs.model.CreateFileSystemRequest;
import software.amazon.awssdk.services.efs.model.CreateFileSystemResponse;
import software.amazon.awssdk.services.efs.model.CreateMountTargetRequest;
import software.amazon.awssdk.services.efs.model.CreateMountTargetResponse;
import software.amazon.awssdk.services.efs.model.CreateReplicationConfigurationRequest;
import software.amazon.awssdk.services.efs.model.CreateReplicationConfigurationResponse;
import software.amazon.awssdk.services.efs.model.CreateTagsRequest;
import software.amazon.awssdk.services.efs.model.CreateTagsResponse;
import software.amazon.awssdk.services.efs.model.DeleteAccessPointRequest;
import software.amazon.awssdk.services.efs.model.DeleteAccessPointResponse;
import software.amazon.awssdk.services.efs.model.DeleteFileSystemPolicyRequest;
import software.amazon.awssdk.services.efs.model.DeleteFileSystemPolicyResponse;
import software.amazon.awssdk.services.efs.model.DeleteFileSystemRequest;
import software.amazon.awssdk.services.efs.model.DeleteFileSystemResponse;
import software.amazon.awssdk.services.efs.model.DeleteMountTargetRequest;
import software.amazon.awssdk.services.efs.model.DeleteMountTargetResponse;
import software.amazon.awssdk.services.efs.model.DeleteReplicationConfigurationRequest;
import software.amazon.awssdk.services.efs.model.DeleteReplicationConfigurationResponse;
import software.amazon.awssdk.services.efs.model.DeleteTagsRequest;
import software.amazon.awssdk.services.efs.model.DeleteTagsResponse;
import software.amazon.awssdk.services.efs.model.DependencyTimeoutException;
import software.amazon.awssdk.services.efs.model.DescribeAccessPointsRequest;
import software.amazon.awssdk.services.efs.model.DescribeAccessPointsResponse;
import software.amazon.awssdk.services.efs.model.DescribeAccountPreferencesRequest;
import software.amazon.awssdk.services.efs.model.DescribeAccountPreferencesResponse;
import software.amazon.awssdk.services.efs.model.DescribeBackupPolicyRequest;
import software.amazon.awssdk.services.efs.model.DescribeBackupPolicyResponse;
import software.amazon.awssdk.services.efs.model.DescribeFileSystemPolicyRequest;
import software.amazon.awssdk.services.efs.model.DescribeFileSystemPolicyResponse;
import software.amazon.awssdk.services.efs.model.DescribeFileSystemsRequest;
import software.amazon.awssdk.services.efs.model.DescribeFileSystemsResponse;
import software.amazon.awssdk.services.efs.model.DescribeLifecycleConfigurationRequest;
import software.amazon.awssdk.services.efs.model.DescribeLifecycleConfigurationResponse;
import software.amazon.awssdk.services.efs.model.DescribeMountTargetSecurityGroupsRequest;
import software.amazon.awssdk.services.efs.model.DescribeMountTargetSecurityGroupsResponse;
import software.amazon.awssdk.services.efs.model.DescribeMountTargetsRequest;
import software.amazon.awssdk.services.efs.model.DescribeMountTargetsResponse;
import software.amazon.awssdk.services.efs.model.DescribeReplicationConfigurationsRequest;
import software.amazon.awssdk.services.efs.model.DescribeReplicationConfigurationsResponse;
import software.amazon.awssdk.services.efs.model.DescribeTagsRequest;
import software.amazon.awssdk.services.efs.model.DescribeTagsResponse;
import software.amazon.awssdk.services.efs.model.EfsException;
import software.amazon.awssdk.services.efs.model.EfsRequest;
import software.amazon.awssdk.services.efs.model.FileSystemAlreadyExistsException;
import software.amazon.awssdk.services.efs.model.FileSystemInUseException;
import software.amazon.awssdk.services.efs.model.FileSystemLimitExceededException;
import software.amazon.awssdk.services.efs.model.FileSystemNotFoundException;
import software.amazon.awssdk.services.efs.model.IncorrectFileSystemLifeCycleStateException;
import software.amazon.awssdk.services.efs.model.IncorrectMountTargetStateException;
import software.amazon.awssdk.services.efs.model.InsufficientThroughputCapacityException;
import software.amazon.awssdk.services.efs.model.InternalServerErrorException;
import software.amazon.awssdk.services.efs.model.InvalidPolicyException;
import software.amazon.awssdk.services.efs.model.IpAddressInUseException;
import software.amazon.awssdk.services.efs.model.ListTagsForResourceRequest;
import software.amazon.awssdk.services.efs.model.ListTagsForResourceResponse;
import software.amazon.awssdk.services.efs.model.ModifyMountTargetSecurityGroupsRequest;
import software.amazon.awssdk.services.efs.model.ModifyMountTargetSecurityGroupsResponse;
import software.amazon.awssdk.services.efs.model.MountTargetConflictException;
import software.amazon.awssdk.services.efs.model.MountTargetNotFoundException;
import software.amazon.awssdk.services.efs.model.NetworkInterfaceLimitExceededException;
import software.amazon.awssdk.services.efs.model.NoFreeAddressesInSubnetException;
import software.amazon.awssdk.services.efs.model.PolicyNotFoundException;
import software.amazon.awssdk.services.efs.model.PutAccountPreferencesRequest;
import software.amazon.awssdk.services.efs.model.PutAccountPreferencesResponse;
import software.amazon.awssdk.services.efs.model.PutBackupPolicyRequest;
import software.amazon.awssdk.services.efs.model.PutBackupPolicyResponse;
import software.amazon.awssdk.services.efs.model.PutFileSystemPolicyRequest;
import software.amazon.awssdk.services.efs.model.PutFileSystemPolicyResponse;
import software.amazon.awssdk.services.efs.model.PutLifecycleConfigurationRequest;
import software.amazon.awssdk.services.efs.model.PutLifecycleConfigurationResponse;
import software.amazon.awssdk.services.efs.model.ReplicationNotFoundException;
import software.amazon.awssdk.services.efs.model.SecurityGroupLimitExceededException;
import software.amazon.awssdk.services.efs.model.SecurityGroupNotFoundException;
import software.amazon.awssdk.services.efs.model.SubnetNotFoundException;
import software.amazon.awssdk.services.efs.model.TagResourceRequest;
import software.amazon.awssdk.services.efs.model.TagResourceResponse;
import software.amazon.awssdk.services.efs.model.ThrottlingException;
import software.amazon.awssdk.services.efs.model.ThroughputLimitExceededException;
import software.amazon.awssdk.services.efs.model.TooManyRequestsException;
import software.amazon.awssdk.services.efs.model.UnsupportedAvailabilityZoneException;
import software.amazon.awssdk.services.efs.model.UntagResourceRequest;
import software.amazon.awssdk.services.efs.model.UntagResourceResponse;
import software.amazon.awssdk.services.efs.model.UpdateFileSystemRequest;
import software.amazon.awssdk.services.efs.model.UpdateFileSystemResponse;
import software.amazon.awssdk.services.efs.model.ValidationException;
import software.amazon.awssdk.services.efs.paginators.DescribeAccessPointsPublisher;
import software.amazon.awssdk.services.efs.paginators.DescribeFileSystemsPublisher;
import software.amazon.awssdk.services.efs.paginators.DescribeTagsPublisher;
import software.amazon.awssdk.services.efs.paginators.ListTagsForResourcePublisher;
import software.amazon.awssdk.services.efs.transform.CreateAccessPointRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.CreateFileSystemRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.CreateMountTargetRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.CreateReplicationConfigurationRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.CreateTagsRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DeleteAccessPointRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DeleteFileSystemPolicyRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DeleteFileSystemRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DeleteMountTargetRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DeleteReplicationConfigurationRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DeleteTagsRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DescribeAccessPointsRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DescribeAccountPreferencesRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DescribeBackupPolicyRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DescribeFileSystemPolicyRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DescribeFileSystemsRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DescribeLifecycleConfigurationRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DescribeMountTargetSecurityGroupsRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DescribeMountTargetsRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DescribeReplicationConfigurationsRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.DescribeTagsRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.ListTagsForResourceRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.ModifyMountTargetSecurityGroupsRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.PutAccountPreferencesRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.PutBackupPolicyRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.PutFileSystemPolicyRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.PutLifecycleConfigurationRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.TagResourceRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.UntagResourceRequestMarshaller;
import software.amazon.awssdk.services.efs.transform.UpdateFileSystemRequestMarshaller;
import software.amazon.awssdk.utils.CompletableFutureUtils;

/**
 * Internal implementation of {@link EfsAsyncClient}.
 *
 * @see EfsAsyncClient#builder()
 */
@Generated("software.amazon.awssdk:codegen")
@SdkInternalApi
final class DefaultEfsAsyncClient implements EfsAsyncClient {
    private static final Logger log = LoggerFactory.getLogger(DefaultEfsAsyncClient.class);

    private final AsyncClientHandler clientHandler;

    private final AwsJsonProtocolFactory protocolFactory;

    private final SdkClientConfiguration clientConfiguration;

    protected DefaultEfsAsyncClient(SdkClientConfiguration clientConfiguration) {
        this.clientHandler = new AwsAsyncClientHandler(clientConfiguration);
        this.clientConfiguration = clientConfiguration;
        this.protocolFactory = init(AwsJsonProtocolFactory.builder()).build();
    }

    @Override
    public final String serviceName() {
        return SERVICE_NAME;
    }

    /**
     * 

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

*

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

* * @param createAccessPointRequest * @return A Java Future containing the result of the CreateAccessPoint operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • AccessPointAlreadyExistsException Returned if the access point that you are trying to create already * exists, with the creation token you provided in the request.
  • *
  • IncorrectFileSystemLifeCycleStateException Returned if the file system's lifecycle state is not * "available".
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • AccessPointLimitExceededException Returned if the Amazon Web Services account has already created the * maximum number of access points allowed per file system. For more informaton, see https://docs.aws.amazon.com/efs/latest/ug/limits.html#limits-efs-resources-per-account-per-region.
  • *
  • ThrottlingException Returned when the CreateAccessPoint API action is called too quickly * and the number of Access Points in the account is nearing the limit of 120.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.CreateAccessPoint * @see AWS API Documentation */ @Override public CompletableFuture createAccessPoint(CreateAccessPointRequest createAccessPointRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, createAccessPointRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateAccessPoint"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateAccessPointResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateAccessPoint") .withMarshaller(new CreateAccessPointRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(createAccessPointRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

* * @param createFileSystemRequest * @return A Java Future containing the result of the CreateFileSystem operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemAlreadyExistsException Returned if the file system you are trying to create already exists, * with the creation token you provided.
  • *
  • FileSystemLimitExceededException Returned if the Amazon Web Services account has already created the * maximum number of file systems allowed per account.
  • *
  • InsufficientThroughputCapacityException Returned if there's not enough capacity to provision * additional throughput. This value might be returned when you try to create a file system in provisioned * throughput mode, when you attempt to increase the provisioned throughput of an existing file system, or * when you attempt to change an existing file system from Bursting Throughput to Provisioned Throughput * mode. Try again later.
  • *
  • ThroughputLimitExceededException Returned if the throughput mode or amount of provisioned throughput * can't be changed because the throughput limit of 1024 MiB/s has been reached.
  • *
  • UnsupportedAvailabilityZoneException Returned if the requested Amazon EFS functionality is not * available in the specified Availability Zone.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.CreateFileSystem * @see AWS API Documentation */ @Override public CompletableFuture createFileSystem(CreateFileSystemRequest createFileSystemRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, createFileSystemRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateFileSystem"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateFileSystemResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateFileSystem") .withMarshaller(new CreateFileSystemRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(createFileSystemRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* 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 *

    *
  • *
* * @param createMountTargetRequest * @return A Java Future containing the result of the CreateMountTarget operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • IncorrectFileSystemLifeCycleStateException Returned if the file system's lifecycle state is not * "available".
  • *
  • MountTargetConflictException Returned if the mount target would violate one of the specified * restrictions based on the file system's existing mount targets.
  • *
  • SubnetNotFoundException Returned if there is no subnet with ID SubnetId provided in the * request.
  • *
  • NoFreeAddressesInSubnetException Returned if IpAddress was not specified in the request * and there are no free IP addresses in the subnet.
  • *
  • IpAddressInUseException Returned if the request specified an IpAddress that is already * in use in the subnet.
  • *
  • NetworkInterfaceLimitExceededException The calling account has reached the limit for elastic network * interfaces for the specific Amazon Web Services Region. Either delete some network interfaces or request * that the account quota be raised. For more information, see Amazon VPC * Quotas in the Amazon VPC User Guide (see the Network interfaces per Region entry in the * Network interfaces table).
  • *
  • SecurityGroupLimitExceededException Returned if the size of SecurityGroups specified in * the request is greater than five.
  • *
  • SecurityGroupNotFoundException Returned if one of the specified security groups doesn't exist in the * subnet's virtual private cloud (VPC).
  • *
  • UnsupportedAvailabilityZoneException Returned if the requested Amazon EFS functionality is not * available in the specified Availability Zone.
  • *
  • AvailabilityZonesMismatchException Returned if the Availability Zone that was specified for a mount * target is different from the Availability Zone that was specified for One Zone storage. For more * information, see Regional and One Zone * storage redundancy.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.CreateMountTarget * @see AWS API Documentation */ @Override public CompletableFuture createMountTarget(CreateMountTargetRequest createMountTargetRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, createMountTargetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateMountTarget"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateMountTargetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateMountTarget") .withMarshaller(new CreateMountTargetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(createMountTargetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* 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 uses the Bursting Throughput mode by default. 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. *

* * @param createReplicationConfigurationRequest * @return A Java Future containing the result of the CreateReplicationConfiguration operation returned by the * service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • IncorrectFileSystemLifeCycleStateException Returned if the file system's lifecycle state is not * "available".
  • *
  • ValidationException Returned if the Backup service is not available in the Amazon Web Services Region * in which the request was made.
  • *
  • ReplicationNotFoundException Returned if the specified file system does not have a replication * configuration.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • UnsupportedAvailabilityZoneException Returned if the requested Amazon EFS functionality is not * available in the specified Availability Zone.
  • *
  • FileSystemLimitExceededException Returned if the Amazon Web Services account has already created the * maximum number of file systems allowed per account.
  • *
  • InsufficientThroughputCapacityException Returned if there's not enough capacity to provision * additional throughput. This value might be returned when you try to create a file system in provisioned * throughput mode, when you attempt to increase the provisioned throughput of an existing file system, or * when you attempt to change an existing file system from Bursting Throughput to Provisioned Throughput * mode. Try again later.
  • *
  • ThroughputLimitExceededException Returned if the throughput mode or amount of provisioned throughput * can't be changed because the throughput limit of 1024 MiB/s has been reached.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.CreateReplicationConfiguration * @see AWS API Documentation */ @Override public CompletableFuture createReplicationConfiguration( CreateReplicationConfigurationRequest createReplicationConfigurationRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, createReplicationConfigurationRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateReplicationConfiguration"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateReplicationConfigurationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateReplicationConfiguration") .withMarshaller(new CreateReplicationConfigurationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(createReplicationConfigurationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

* DEPRECATED - CreateTags is deprecated and not maintained. To create tags for EFS resources, use the * API action. *

*
*

* Creates or overwrites tags associated with a file system. Each tag is a key-value pair. If a tag key specified in * the request already exists on the file system, this operation overwrites its value with the value provided in the * request. If you add the Name tag to your file system, Amazon EFS returns it in the response to the * DescribeFileSystems operation. *

*

* This operation requires permission for the elasticfilesystem:CreateTags action. *

* * @param createTagsRequest * @return A Java Future containing the result of the CreateTags operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.CreateTags * @see AWS * API Documentation */ @Override public CompletableFuture createTags(CreateTagsRequest createTagsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, createTagsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateTags"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, CreateTagsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("CreateTags") .withMarshaller(new CreateTagsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(createTagsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

* * @param deleteAccessPointRequest * @return A Java Future containing the result of the DeleteAccessPoint operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • AccessPointNotFoundException Returned if the specified AccessPointId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DeleteAccessPoint * @see AWS API Documentation */ @Override public CompletableFuture deleteAccessPoint(DeleteAccessPointRequest deleteAccessPointRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteAccessPointRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteAccessPoint"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteAccessPointResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteAccessPoint") .withMarshaller(new DeleteAccessPointRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteAccessPointRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

* * @param deleteFileSystemRequest * @return A Java Future containing the result of the DeleteFileSystem operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • FileSystemInUseException Returned if a file system has mount targets.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DeleteFileSystem * @see AWS API Documentation */ @Override public CompletableFuture deleteFileSystem(DeleteFileSystemRequest deleteFileSystemRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteFileSystemRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteFileSystem"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteFileSystemResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteFileSystem") .withMarshaller(new DeleteFileSystemRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteFileSystemRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

* * @param deleteFileSystemPolicyRequest * @return A Java Future containing the result of the DeleteFileSystemPolicy operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • IncorrectFileSystemLifeCycleStateException Returned if the file system's lifecycle state is not * "available".
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DeleteFileSystemPolicy * @see AWS API Documentation */ @Override public CompletableFuture deleteFileSystemPolicy( DeleteFileSystemPolicyRequest deleteFileSystemPolicyRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteFileSystemPolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteFileSystemPolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteFileSystemPolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteFileSystemPolicy") .withMarshaller(new DeleteFileSystemPolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteFileSystemPolicyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* 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 *

    *
  • *
* * @param deleteMountTargetRequest * @return A Java Future containing the result of the DeleteMountTarget operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • DependencyTimeoutException The service timed out trying to fulfill the request, and the client should * try the call again.
  • *
  • MountTargetNotFoundException Returned if there is no mount target with the specified ID found in the * caller's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DeleteMountTarget * @see AWS API Documentation */ @Override public CompletableFuture deleteMountTarget(DeleteMountTargetRequest deleteMountTargetRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteMountTargetRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteMountTarget"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteMountTargetResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteMountTarget") .withMarshaller(new DeleteMountTargetRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteMountTargetRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

* * @param deleteReplicationConfigurationRequest * @return A Java Future containing the result of the DeleteReplicationConfiguration operation returned by the * service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • ReplicationNotFoundException Returned if the specified file system does not have a replication * configuration.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DeleteReplicationConfiguration * @see AWS API Documentation */ @Override public CompletableFuture deleteReplicationConfiguration( DeleteReplicationConfigurationRequest deleteReplicationConfigurationRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteReplicationConfigurationRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteReplicationConfiguration"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteReplicationConfigurationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteReplicationConfiguration") .withMarshaller(new DeleteReplicationConfigurationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteReplicationConfigurationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

* DEPRECATED - DeleteTags is deprecated and not maintained. To remove tags from EFS resources, use the * API action. *

*
*

* Deletes the specified tags from a file system. If the DeleteTags request includes a tag key that * doesn't exist, Amazon EFS ignores it and doesn't cause an error. For more information about tags and related * restrictions, see Tag * restrictions in the Billing and Cost Management User Guide. *

*

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

* * @param deleteTagsRequest * @return A Java Future containing the result of the DeleteTags operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DeleteTags * @see AWS * API Documentation */ @Override public CompletableFuture deleteTags(DeleteTagsRequest deleteTagsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteTagsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteTags"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DeleteTagsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("DeleteTags") .withMarshaller(new DeleteTagsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteTagsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

* * @param describeAccessPointsRequest * @return A Java Future containing the result of the DescribeAccessPoints operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • AccessPointNotFoundException Returned if the specified AccessPointId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DescribeAccessPoints * @see AWS API Documentation */ @Override public CompletableFuture describeAccessPoints( DescribeAccessPointsRequest describeAccessPointsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeAccessPointsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeAccessPoints"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeAccessPointsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeAccessPoints") .withMarshaller(new DescribeAccessPointsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeAccessPointsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

*
*

* This is a variant of * {@link #describeAccessPoints(software.amazon.awssdk.services.efs.model.DescribeAccessPointsRequest)} operation. * The return type is a custom publisher that can be subscribed to request a stream of response pages. SDK will * internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.efs.paginators.DescribeAccessPointsPublisher publisher = client.describeAccessPointsPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.efs.paginators.DescribeAccessPointsPublisher publisher = client.describeAccessPointsPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.efs.model.DescribeAccessPointsResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of MaxResults won't limit the number of results you get with the * paginator. It only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #describeAccessPoints(software.amazon.awssdk.services.efs.model.DescribeAccessPointsRequest)} * operation. *

* * @param describeAccessPointsRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • AccessPointNotFoundException Returned if the specified AccessPointId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DescribeAccessPoints * @see AWS API Documentation */ public DescribeAccessPointsPublisher describeAccessPointsPaginator(DescribeAccessPointsRequest describeAccessPointsRequest) { return new DescribeAccessPointsPublisher(this, applyPaginatorUserAgent(describeAccessPointsRequest)); } /** *

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

* * @param describeAccountPreferencesRequest * @return A Java Future containing the result of the DescribeAccountPreferences operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DescribeAccountPreferences * @see AWS API Documentation */ @Override public CompletableFuture describeAccountPreferences( DescribeAccountPreferencesRequest describeAccountPreferencesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeAccountPreferencesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeAccountPreferences"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeAccountPreferencesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeAccountPreferences") .withMarshaller(new DescribeAccountPreferencesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeAccountPreferencesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns the backup policy for the specified EFS file system. *

* * @param describeBackupPolicyRequest * @return A Java Future containing the result of the DescribeBackupPolicy operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • PolicyNotFoundException Returned if the default file system policy is in effect for the EFS file * system specified.
  • *
  • ValidationException Returned if the Backup service is not available in the Amazon Web Services Region * in which the request was made.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DescribeBackupPolicy * @see AWS API Documentation */ @Override public CompletableFuture describeBackupPolicy( DescribeBackupPolicyRequest describeBackupPolicyRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeBackupPolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeBackupPolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeBackupPolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeBackupPolicy") .withMarshaller(new DescribeBackupPolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeBackupPolicyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns the FileSystemPolicy for the specified EFS file system. *

*

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

* * @param describeFileSystemPolicyRequest * @return A Java Future containing the result of the DescribeFileSystemPolicy operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • PolicyNotFoundException Returned if the default file system policy is in effect for the EFS file * system specified.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DescribeFileSystemPolicy * @see AWS API Documentation */ @Override public CompletableFuture describeFileSystemPolicy( DescribeFileSystemPolicyRequest describeFileSystemPolicyRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeFileSystemPolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeFileSystemPolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeFileSystemPolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeFileSystemPolicy") .withMarshaller(new DescribeFileSystemPolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeFileSystemPolicyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

* * @param describeFileSystemsRequest * @return A Java Future containing the result of the DescribeFileSystems operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DescribeFileSystems * @see AWS API Documentation */ @Override public CompletableFuture describeFileSystems( DescribeFileSystemsRequest describeFileSystemsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeFileSystemsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeFileSystems"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeFileSystemsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeFileSystems") .withMarshaller(new DescribeFileSystemsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeFileSystemsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

*
*

* This is a variant of * {@link #describeFileSystems(software.amazon.awssdk.services.efs.model.DescribeFileSystemsRequest)} operation. The * return type is a custom publisher that can be subscribed to request a stream of response pages. SDK will * internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.efs.paginators.DescribeFileSystemsPublisher publisher = client.describeFileSystemsPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.efs.paginators.DescribeFileSystemsPublisher publisher = client.describeFileSystemsPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.efs.model.DescribeFileSystemsResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of MaxItems won't limit the number of results you get with the paginator. * It only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #describeFileSystems(software.amazon.awssdk.services.efs.model.DescribeFileSystemsRequest)} operation. *

* * @param describeFileSystemsRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DescribeFileSystems * @see AWS API Documentation */ public DescribeFileSystemsPublisher describeFileSystemsPaginator(DescribeFileSystemsRequest describeFileSystemsRequest) { return new DescribeFileSystemsPublisher(this, applyPaginatorUserAgent(describeFileSystemsRequest)); } /** *

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

* * @param describeLifecycleConfigurationRequest * @return A Java Future containing the result of the DescribeLifecycleConfiguration operation returned by the * service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DescribeLifecycleConfiguration * @see AWS API Documentation */ @Override public CompletableFuture describeLifecycleConfiguration( DescribeLifecycleConfigurationRequest describeLifecycleConfigurationRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeLifecycleConfigurationRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeLifecycleConfiguration"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeLifecycleConfigurationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeLifecycleConfiguration") .withMarshaller(new DescribeLifecycleConfigurationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeLifecycleConfigurationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

    *
  • *
* * @param describeMountTargetSecurityGroupsRequest * @return A Java Future containing the result of the DescribeMountTargetSecurityGroups operation returned by the * service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • MountTargetNotFoundException Returned if there is no mount target with the specified ID found in the * caller's Amazon Web Services account.
  • *
  • IncorrectMountTargetStateException Returned if the mount target is not in the correct state for the * operation.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DescribeMountTargetSecurityGroups * @see AWS API Documentation */ @Override public CompletableFuture describeMountTargetSecurityGroups( DescribeMountTargetSecurityGroupsRequest describeMountTargetSecurityGroupsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeMountTargetSecurityGroupsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeMountTargetSecurityGroups"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribeMountTargetSecurityGroupsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeMountTargetSecurityGroups") .withMarshaller(new DescribeMountTargetSecurityGroupsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeMountTargetSecurityGroupsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

* * @param describeMountTargetsRequest * @return A Java Future containing the result of the DescribeMountTargets operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • MountTargetNotFoundException Returned if there is no mount target with the specified ID found in the * caller's Amazon Web Services account.
  • *
  • AccessPointNotFoundException Returned if the specified AccessPointId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DescribeMountTargets * @see AWS API Documentation */ @Override public CompletableFuture describeMountTargets( DescribeMountTargetsRequest describeMountTargetsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeMountTargetsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeMountTargets"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeMountTargetsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeMountTargets") .withMarshaller(new DescribeMountTargetsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeMountTargetsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

* * @param describeReplicationConfigurationsRequest * @return A Java Future containing the result of the DescribeReplicationConfigurations operation returned by the * service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • ReplicationNotFoundException Returned if the specified file system does not have a replication * configuration.
  • *
  • ValidationException Returned if the Backup service is not available in the Amazon Web Services Region * in which the request was made.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DescribeReplicationConfigurations * @see AWS API Documentation */ @Override public CompletableFuture describeReplicationConfigurations( DescribeReplicationConfigurationsRequest describeReplicationConfigurationsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeReplicationConfigurationsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeReplicationConfigurations"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribeReplicationConfigurationsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeReplicationConfigurations") .withMarshaller(new DescribeReplicationConfigurationsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeReplicationConfigurationsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

* DEPRECATED - The DescribeTags action is deprecated and not maintained. To view tags associated with * EFS resources, use the ListTagsForResource API action. *

*
*

* Returns the tags associated with a file system. The order of tags returned in the response of one * DescribeTags call and the order of tags returned across the responses of a multiple-call iteration * (when using pagination) is unspecified. *

*

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

* * @param describeTagsRequest * @return A Java Future containing the result of the DescribeTags operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DescribeTags * @see AWS API Documentation */ @Override public CompletableFuture describeTags(DescribeTagsRequest describeTagsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeTagsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeTags"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DescribeTagsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeTags").withMarshaller(new DescribeTagsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeTagsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

* DEPRECATED - The DescribeTags action is deprecated and not maintained. To view tags associated with * EFS resources, use the ListTagsForResource API action. *

*
*

* Returns the tags associated with a file system. The order of tags returned in the response of one * DescribeTags call and the order of tags returned across the responses of a multiple-call iteration * (when using pagination) is unspecified. *

*

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

*
*

* This is a variant of {@link #describeTags(software.amazon.awssdk.services.efs.model.DescribeTagsRequest)} * operation. The return type is a custom publisher that can be subscribed to request a stream of response pages. * SDK will internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.efs.paginators.DescribeTagsPublisher publisher = client.describeTagsPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.efs.paginators.DescribeTagsPublisher publisher = client.describeTagsPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.efs.model.DescribeTagsResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of MaxItems won't limit the number of results you get with the paginator. * It only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #describeTags(software.amazon.awssdk.services.efs.model.DescribeTagsRequest)} operation. *

* * @param describeTagsRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.DescribeTags * @see AWS API Documentation */ public DescribeTagsPublisher describeTagsPaginator(DescribeTagsRequest describeTagsRequest) { return new DescribeTagsPublisher(this, applyPaginatorUserAgent(describeTagsRequest)); } /** *

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

* * @param listTagsForResourceRequest * @return A Java Future containing the result of the ListTagsForResource operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • AccessPointNotFoundException Returned if the specified AccessPointId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.ListTagsForResource * @see AWS API Documentation */ @Override public CompletableFuture listTagsForResource( ListTagsForResourceRequest listTagsForResourceRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listTagsForResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListTagsForResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListTagsForResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListTagsForResource") .withMarshaller(new ListTagsForResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(listTagsForResourceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

*
*

* This is a variant of * {@link #listTagsForResource(software.amazon.awssdk.services.efs.model.ListTagsForResourceRequest)} operation. The * return type is a custom publisher that can be subscribed to request a stream of response pages. SDK will * internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.efs.paginators.ListTagsForResourcePublisher publisher = client.listTagsForResourcePaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.efs.paginators.ListTagsForResourcePublisher publisher = client.listTagsForResourcePaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.efs.model.ListTagsForResourceResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of MaxResults won't limit the number of results you get with the * paginator. It only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #listTagsForResource(software.amazon.awssdk.services.efs.model.ListTagsForResourceRequest)} operation. *

* * @param listTagsForResourceRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • AccessPointNotFoundException Returned if the specified AccessPointId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.ListTagsForResource * @see AWS API Documentation */ public ListTagsForResourcePublisher listTagsForResourcePaginator(ListTagsForResourceRequest listTagsForResourceRequest) { return new ListTagsForResourcePublisher(this, applyPaginatorUserAgent(listTagsForResourceRequest)); } /** *

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

    *
  • *
* * @param modifyMountTargetSecurityGroupsRequest * @return A Java Future containing the result of the ModifyMountTargetSecurityGroups operation returned by the * service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • MountTargetNotFoundException Returned if there is no mount target with the specified ID found in the * caller's Amazon Web Services account.
  • *
  • IncorrectMountTargetStateException Returned if the mount target is not in the correct state for the * operation.
  • *
  • SecurityGroupLimitExceededException Returned if the size of SecurityGroups specified in * the request is greater than five.
  • *
  • SecurityGroupNotFoundException Returned if one of the specified security groups doesn't exist in the * subnet's virtual private cloud (VPC).
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.ModifyMountTargetSecurityGroups * @see AWS API Documentation */ @Override public CompletableFuture modifyMountTargetSecurityGroups( ModifyMountTargetSecurityGroupsRequest modifyMountTargetSecurityGroupsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, modifyMountTargetSecurityGroupsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ModifyMountTargetSecurityGroups"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ModifyMountTargetSecurityGroupsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ModifyMountTargetSecurityGroups") .withMarshaller(new ModifyMountTargetSecurityGroupsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(modifyMountTargetSecurityGroupsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

*
* * @param putAccountPreferencesRequest * @return A Java Future containing the result of the PutAccountPreferences operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.PutAccountPreferences * @see AWS API Documentation */ @Override public CompletableFuture putAccountPreferences( PutAccountPreferencesRequest putAccountPreferencesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, putAccountPreferencesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutAccountPreferences"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutAccountPreferencesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutAccountPreferences") .withMarshaller(new PutAccountPreferencesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(putAccountPreferencesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

* * @param putBackupPolicyRequest * @return A Java Future containing the result of the PutBackupPolicy operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • IncorrectFileSystemLifeCycleStateException Returned if the file system's lifecycle state is not * "available".
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • ValidationException Returned if the Backup service is not available in the Amazon Web Services Region * in which the request was made.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.PutBackupPolicy * @see AWS API Documentation */ @Override public CompletableFuture putBackupPolicy(PutBackupPolicyRequest putBackupPolicyRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, putBackupPolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutBackupPolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutBackupPolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutBackupPolicy") .withMarshaller(new PutBackupPolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(putBackupPolicyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

* * @param putFileSystemPolicyRequest * @return A Java Future containing the result of the PutFileSystemPolicy operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • InvalidPolicyException Returned if the FileSystemPolicy is malformed or contains an * error such as a parameter value that is not valid or a missing required parameter. Returned in the case * of a policy lockout safety check error.
  • *
  • IncorrectFileSystemLifeCycleStateException Returned if the file system's lifecycle state is not * "available".
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.PutFileSystemPolicy * @see AWS API Documentation */ @Override public CompletableFuture putFileSystemPolicy( PutFileSystemPolicyRequest putFileSystemPolicyRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, putFileSystemPolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutFileSystemPolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutFileSystemPolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutFileSystemPolicy") .withMarshaller(new PutFileSystemPolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(putFileSystemPolicyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Use this action to manage EFS lifecycle management and 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 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 (Standard or 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 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 * 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. *

* * @param putLifecycleConfigurationRequest * @return A Java Future containing the result of the PutLifecycleConfiguration operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • IncorrectFileSystemLifeCycleStateException Returned if the file system's lifecycle state is not * "available".
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.PutLifecycleConfiguration * @see AWS API Documentation */ @Override public CompletableFuture putLifecycleConfiguration( PutLifecycleConfigurationRequest putLifecycleConfigurationRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, putLifecycleConfigurationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutLifecycleConfiguration"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutLifecycleConfigurationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutLifecycleConfiguration") .withMarshaller(new PutLifecycleConfigurationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(putLifecycleConfigurationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

* * @param tagResourceRequest * @return A Java Future containing the result of the TagResource operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • AccessPointNotFoundException Returned if the specified AccessPointId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.TagResource * @see AWS * API Documentation */ @Override public CompletableFuture tagResource(TagResourceRequest tagResourceRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, tagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "TagResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, TagResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("TagResource").withMarshaller(new TagResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(tagResourceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

* * @param untagResourceRequest * @return A Java Future containing the result of the UntagResource operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • AccessPointNotFoundException Returned if the specified AccessPointId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.UntagResource * @see AWS API Documentation */ @Override public CompletableFuture untagResource(UntagResourceRequest untagResourceRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, untagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UntagResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, UntagResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UntagResource") .withMarshaller(new UntagResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(untagResourceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

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

* * @param updateFileSystemRequest * @return A Java Future containing the result of the UpdateFileSystem operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • BadRequestException Returned if the request is malformed or contains an error such as an invalid * parameter value or a missing required parameter.
  • *
  • FileSystemNotFoundException Returned if the specified FileSystemId value doesn't exist * in the requester's Amazon Web Services account.
  • *
  • IncorrectFileSystemLifeCycleStateException Returned if the file system's lifecycle state is not * "available".
  • *
  • InsufficientThroughputCapacityException Returned if there's not enough capacity to provision * additional throughput. This value might be returned when you try to create a file system in provisioned * throughput mode, when you attempt to increase the provisioned throughput of an existing file system, or * when you attempt to change an existing file system from Bursting Throughput to Provisioned Throughput * mode. Try again later.
  • *
  • InternalServerErrorException Returned if an error occurred on the server side.
  • *
  • ThroughputLimitExceededException Returned if the throughput mode or amount of provisioned throughput * can't be changed because the throughput limit of 1024 MiB/s has been reached.
  • *
  • TooManyRequestsException Returned if you don’t wait at least 24 hours before either changing the * throughput mode, or decreasing the Provisioned Throughput value.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • EfsException Base class for all service exceptions. Unknown exceptions will be thrown as an instance * of this type.
  • *
* @sample EfsAsyncClient.UpdateFileSystem * @see AWS API Documentation */ @Override public CompletableFuture updateFileSystem(UpdateFileSystemRequest updateFileSystemRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, updateFileSystemRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "EFS"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateFileSystem"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateFileSystemResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateFileSystem") .withMarshaller(new UpdateFileSystemRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(updateFileSystemRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } @Override public void close() { clientHandler.close(); } private > T init(T builder) { return builder .clientConfiguration(clientConfiguration) .defaultServiceExceptionSupplier(EfsException::builder) .protocol(AwsJsonProtocol.REST_JSON) .protocolVersion("1.1") .registerModeledException( ExceptionMetadata.builder().errorCode("IpAddressInUse") .exceptionBuilderSupplier(IpAddressInUseException::builder).httpStatusCode(409).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("FileSystemInUse") .exceptionBuilderSupplier(FileSystemInUseException::builder).httpStatusCode(409).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("FileSystemAlreadyExists") .exceptionBuilderSupplier(FileSystemAlreadyExistsException::builder).httpStatusCode(409).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("AccessPointAlreadyExists") .exceptionBuilderSupplier(AccessPointAlreadyExistsException::builder).httpStatusCode(409).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("IncorrectFileSystemLifeCycleState") .exceptionBuilderSupplier(IncorrectFileSystemLifeCycleStateException::builder) .httpStatusCode(409).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("AccessPointLimitExceeded") .exceptionBuilderSupplier(AccessPointLimitExceededException::builder).httpStatusCode(403).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoFreeAddressesInSubnet") .exceptionBuilderSupplier(NoFreeAddressesInSubnetException::builder).httpStatusCode(409).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("FileSystemNotFound") .exceptionBuilderSupplier(FileSystemNotFoundException::builder).httpStatusCode(404).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ThrottlingException") .exceptionBuilderSupplier(ThrottlingException::builder).httpStatusCode(429).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InsufficientThroughputCapacity") .exceptionBuilderSupplier(InsufficientThroughputCapacityException::builder).httpStatusCode(503) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("SecurityGroupLimitExceeded") .exceptionBuilderSupplier(SecurityGroupLimitExceededException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("PolicyNotFound") .exceptionBuilderSupplier(PolicyNotFoundException::builder).httpStatusCode(404).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("FileSystemLimitExceeded") .exceptionBuilderSupplier(FileSystemLimitExceededException::builder).httpStatusCode(403).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("UnsupportedAvailabilityZone") .exceptionBuilderSupplier(UnsupportedAvailabilityZoneException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("AccessPointNotFound") .exceptionBuilderSupplier(AccessPointNotFoundException::builder).httpStatusCode(404).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("MountTargetConflict") .exceptionBuilderSupplier(MountTargetConflictException::builder).httpStatusCode(409).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidPolicyException") .exceptionBuilderSupplier(InvalidPolicyException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("SecurityGroupNotFound") .exceptionBuilderSupplier(SecurityGroupNotFoundException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NetworkInterfaceLimitExceeded") .exceptionBuilderSupplier(NetworkInterfaceLimitExceededException::builder).httpStatusCode(409) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ReplicationNotFound") .exceptionBuilderSupplier(ReplicationNotFoundException::builder).httpStatusCode(404).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("MountTargetNotFound") .exceptionBuilderSupplier(MountTargetNotFoundException::builder).httpStatusCode(404).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ValidationException") .exceptionBuilderSupplier(ValidationException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("SubnetNotFound") .exceptionBuilderSupplier(SubnetNotFoundException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("IncorrectMountTargetState") .exceptionBuilderSupplier(IncorrectMountTargetStateException::builder).httpStatusCode(409) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ThroughputLimitExceeded") .exceptionBuilderSupplier(ThroughputLimitExceededException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("DependencyTimeout") .exceptionBuilderSupplier(DependencyTimeoutException::builder).httpStatusCode(504).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("AvailabilityZonesMismatch") .exceptionBuilderSupplier(AvailabilityZonesMismatchException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("TooManyRequests") .exceptionBuilderSupplier(TooManyRequestsException::builder).httpStatusCode(429).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("BadRequest") .exceptionBuilderSupplier(BadRequestException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InternalServerError") .exceptionBuilderSupplier(InternalServerErrorException::builder).httpStatusCode(500).build()); } private static List resolveMetricPublishers(SdkClientConfiguration clientConfiguration, RequestOverrideConfiguration requestOverrideConfiguration) { List publishers = null; if (requestOverrideConfiguration != null) { publishers = requestOverrideConfiguration.metricPublishers(); } if (publishers == null || publishers.isEmpty()) { publishers = clientConfiguration.option(SdkClientOption.METRIC_PUBLISHERS); } if (publishers == null) { publishers = Collections.emptyList(); } return publishers; } private T applyPaginatorUserAgent(T request) { Consumer userAgentApplier = b -> b.addApiName(ApiName.builder() .version(VersionInfo.SDK_VERSION).name("PAGINATED").build()); AwsRequestOverrideConfiguration overrideConfiguration = request.overrideConfiguration() .map(c -> c.toBuilder().applyMutation(userAgentApplier).build()) .orElse((AwsRequestOverrideConfiguration.builder().applyMutation(userAgentApplier).build())); return (T) request.toBuilder().overrideConfiguration(overrideConfiguration).build(); } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy