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

software.amazon.awssdk.services.lambda.DefaultLambdaAsyncClient Maven / Gradle / Ivy

Go to download

The AWS Java SDK for AWS Lambda module holds the client classes that are used for communicating with AWS Lambda Service

There is a newer version: 2.29.15
Show newest version
/*
 * 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.lambda;

import static software.amazon.awssdk.utils.FunctionalUtils.runAndLogError;

import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.concurrent.ScheduledExecutorService;
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.client.handler.AwsAsyncClientHandler;
import software.amazon.awssdk.awscore.eventstream.EventStreamAsyncResponseTransformer;
import software.amazon.awssdk.awscore.eventstream.EventStreamTaggedUnionPojoSupplier;
import software.amazon.awssdk.awscore.eventstream.RestEventStreamAsyncResponseTransformer;
import software.amazon.awssdk.awscore.exception.AwsServiceException;
import software.amazon.awssdk.awscore.internal.AwsProtocolMetadata;
import software.amazon.awssdk.awscore.internal.AwsServiceProtocol;
import software.amazon.awssdk.awscore.retry.AwsRetryStrategy;
import software.amazon.awssdk.core.RequestOverrideConfiguration;
import software.amazon.awssdk.core.SdkPlugin;
import software.amazon.awssdk.core.SdkPojoBuilder;
import software.amazon.awssdk.core.SdkRequest;
import software.amazon.awssdk.core.SdkResponse;
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
import software.amazon.awssdk.core.client.config.SdkAdvancedAsyncClientOption;
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.AttachHttpMetadataResponseHandler;
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.protocol.VoidSdkResponse;
import software.amazon.awssdk.core.retry.RetryMode;
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.retries.api.RetryStrategy;
import software.amazon.awssdk.services.lambda.internal.LambdaServiceClientConfigurationBuilder;
import software.amazon.awssdk.services.lambda.model.AddLayerVersionPermissionRequest;
import software.amazon.awssdk.services.lambda.model.AddLayerVersionPermissionResponse;
import software.amazon.awssdk.services.lambda.model.AddPermissionRequest;
import software.amazon.awssdk.services.lambda.model.AddPermissionResponse;
import software.amazon.awssdk.services.lambda.model.CodeSigningConfigNotFoundException;
import software.amazon.awssdk.services.lambda.model.CodeStorageExceededException;
import software.amazon.awssdk.services.lambda.model.CodeVerificationFailedException;
import software.amazon.awssdk.services.lambda.model.CreateAliasRequest;
import software.amazon.awssdk.services.lambda.model.CreateAliasResponse;
import software.amazon.awssdk.services.lambda.model.CreateCodeSigningConfigRequest;
import software.amazon.awssdk.services.lambda.model.CreateCodeSigningConfigResponse;
import software.amazon.awssdk.services.lambda.model.CreateEventSourceMappingRequest;
import software.amazon.awssdk.services.lambda.model.CreateEventSourceMappingResponse;
import software.amazon.awssdk.services.lambda.model.CreateFunctionRequest;
import software.amazon.awssdk.services.lambda.model.CreateFunctionResponse;
import software.amazon.awssdk.services.lambda.model.CreateFunctionUrlConfigRequest;
import software.amazon.awssdk.services.lambda.model.CreateFunctionUrlConfigResponse;
import software.amazon.awssdk.services.lambda.model.DeleteAliasRequest;
import software.amazon.awssdk.services.lambda.model.DeleteAliasResponse;
import software.amazon.awssdk.services.lambda.model.DeleteCodeSigningConfigRequest;
import software.amazon.awssdk.services.lambda.model.DeleteCodeSigningConfigResponse;
import software.amazon.awssdk.services.lambda.model.DeleteEventSourceMappingRequest;
import software.amazon.awssdk.services.lambda.model.DeleteEventSourceMappingResponse;
import software.amazon.awssdk.services.lambda.model.DeleteFunctionCodeSigningConfigRequest;
import software.amazon.awssdk.services.lambda.model.DeleteFunctionCodeSigningConfigResponse;
import software.amazon.awssdk.services.lambda.model.DeleteFunctionConcurrencyRequest;
import software.amazon.awssdk.services.lambda.model.DeleteFunctionConcurrencyResponse;
import software.amazon.awssdk.services.lambda.model.DeleteFunctionEventInvokeConfigRequest;
import software.amazon.awssdk.services.lambda.model.DeleteFunctionEventInvokeConfigResponse;
import software.amazon.awssdk.services.lambda.model.DeleteFunctionRequest;
import software.amazon.awssdk.services.lambda.model.DeleteFunctionResponse;
import software.amazon.awssdk.services.lambda.model.DeleteFunctionUrlConfigRequest;
import software.amazon.awssdk.services.lambda.model.DeleteFunctionUrlConfigResponse;
import software.amazon.awssdk.services.lambda.model.DeleteLayerVersionRequest;
import software.amazon.awssdk.services.lambda.model.DeleteLayerVersionResponse;
import software.amazon.awssdk.services.lambda.model.DeleteProvisionedConcurrencyConfigRequest;
import software.amazon.awssdk.services.lambda.model.DeleteProvisionedConcurrencyConfigResponse;
import software.amazon.awssdk.services.lambda.model.DeleteResourcePolicyRequest;
import software.amazon.awssdk.services.lambda.model.DeleteResourcePolicyResponse;
import software.amazon.awssdk.services.lambda.model.Ec2AccessDeniedException;
import software.amazon.awssdk.services.lambda.model.Ec2ThrottledException;
import software.amazon.awssdk.services.lambda.model.Ec2UnexpectedException;
import software.amazon.awssdk.services.lambda.model.EfsMountConnectivityException;
import software.amazon.awssdk.services.lambda.model.EfsMountFailureException;
import software.amazon.awssdk.services.lambda.model.EfsMountTimeoutException;
import software.amazon.awssdk.services.lambda.model.EfsioException;
import software.amazon.awssdk.services.lambda.model.EniLimitReachedException;
import software.amazon.awssdk.services.lambda.model.GetAccountSettingsRequest;
import software.amazon.awssdk.services.lambda.model.GetAccountSettingsResponse;
import software.amazon.awssdk.services.lambda.model.GetAliasRequest;
import software.amazon.awssdk.services.lambda.model.GetAliasResponse;
import software.amazon.awssdk.services.lambda.model.GetCodeSigningConfigRequest;
import software.amazon.awssdk.services.lambda.model.GetCodeSigningConfigResponse;
import software.amazon.awssdk.services.lambda.model.GetEventSourceMappingRequest;
import software.amazon.awssdk.services.lambda.model.GetEventSourceMappingResponse;
import software.amazon.awssdk.services.lambda.model.GetFunctionCodeSigningConfigRequest;
import software.amazon.awssdk.services.lambda.model.GetFunctionCodeSigningConfigResponse;
import software.amazon.awssdk.services.lambda.model.GetFunctionConcurrencyRequest;
import software.amazon.awssdk.services.lambda.model.GetFunctionConcurrencyResponse;
import software.amazon.awssdk.services.lambda.model.GetFunctionConfigurationRequest;
import software.amazon.awssdk.services.lambda.model.GetFunctionConfigurationResponse;
import software.amazon.awssdk.services.lambda.model.GetFunctionEventInvokeConfigRequest;
import software.amazon.awssdk.services.lambda.model.GetFunctionEventInvokeConfigResponse;
import software.amazon.awssdk.services.lambda.model.GetFunctionRecursionConfigRequest;
import software.amazon.awssdk.services.lambda.model.GetFunctionRecursionConfigResponse;
import software.amazon.awssdk.services.lambda.model.GetFunctionRequest;
import software.amazon.awssdk.services.lambda.model.GetFunctionResponse;
import software.amazon.awssdk.services.lambda.model.GetFunctionUrlConfigRequest;
import software.amazon.awssdk.services.lambda.model.GetFunctionUrlConfigResponse;
import software.amazon.awssdk.services.lambda.model.GetLayerVersionByArnRequest;
import software.amazon.awssdk.services.lambda.model.GetLayerVersionByArnResponse;
import software.amazon.awssdk.services.lambda.model.GetLayerVersionPolicyRequest;
import software.amazon.awssdk.services.lambda.model.GetLayerVersionPolicyResponse;
import software.amazon.awssdk.services.lambda.model.GetLayerVersionRequest;
import software.amazon.awssdk.services.lambda.model.GetLayerVersionResponse;
import software.amazon.awssdk.services.lambda.model.GetPolicyRequest;
import software.amazon.awssdk.services.lambda.model.GetPolicyResponse;
import software.amazon.awssdk.services.lambda.model.GetProvisionedConcurrencyConfigRequest;
import software.amazon.awssdk.services.lambda.model.GetProvisionedConcurrencyConfigResponse;
import software.amazon.awssdk.services.lambda.model.GetPublicAccessBlockConfigRequest;
import software.amazon.awssdk.services.lambda.model.GetPublicAccessBlockConfigResponse;
import software.amazon.awssdk.services.lambda.model.GetResourcePolicyRequest;
import software.amazon.awssdk.services.lambda.model.GetResourcePolicyResponse;
import software.amazon.awssdk.services.lambda.model.GetRuntimeManagementConfigRequest;
import software.amazon.awssdk.services.lambda.model.GetRuntimeManagementConfigResponse;
import software.amazon.awssdk.services.lambda.model.InvalidCodeSignatureException;
import software.amazon.awssdk.services.lambda.model.InvalidParameterValueException;
import software.amazon.awssdk.services.lambda.model.InvalidRequestContentException;
import software.amazon.awssdk.services.lambda.model.InvalidRuntimeException;
import software.amazon.awssdk.services.lambda.model.InvalidSecurityGroupIdException;
import software.amazon.awssdk.services.lambda.model.InvalidSubnetIdException;
import software.amazon.awssdk.services.lambda.model.InvalidZipFileException;
import software.amazon.awssdk.services.lambda.model.InvokeRequest;
import software.amazon.awssdk.services.lambda.model.InvokeResponse;
import software.amazon.awssdk.services.lambda.model.InvokeWithResponseStreamRequest;
import software.amazon.awssdk.services.lambda.model.InvokeWithResponseStreamResponse;
import software.amazon.awssdk.services.lambda.model.InvokeWithResponseStreamResponseEvent;
import software.amazon.awssdk.services.lambda.model.InvokeWithResponseStreamResponseHandler;
import software.amazon.awssdk.services.lambda.model.KmsAccessDeniedException;
import software.amazon.awssdk.services.lambda.model.KmsDisabledException;
import software.amazon.awssdk.services.lambda.model.KmsInvalidStateException;
import software.amazon.awssdk.services.lambda.model.KmsNotFoundException;
import software.amazon.awssdk.services.lambda.model.LambdaException;
import software.amazon.awssdk.services.lambda.model.ListAliasesRequest;
import software.amazon.awssdk.services.lambda.model.ListAliasesResponse;
import software.amazon.awssdk.services.lambda.model.ListCodeSigningConfigsRequest;
import software.amazon.awssdk.services.lambda.model.ListCodeSigningConfigsResponse;
import software.amazon.awssdk.services.lambda.model.ListEventSourceMappingsRequest;
import software.amazon.awssdk.services.lambda.model.ListEventSourceMappingsResponse;
import software.amazon.awssdk.services.lambda.model.ListFunctionEventInvokeConfigsRequest;
import software.amazon.awssdk.services.lambda.model.ListFunctionEventInvokeConfigsResponse;
import software.amazon.awssdk.services.lambda.model.ListFunctionUrlConfigsRequest;
import software.amazon.awssdk.services.lambda.model.ListFunctionUrlConfigsResponse;
import software.amazon.awssdk.services.lambda.model.ListFunctionsByCodeSigningConfigRequest;
import software.amazon.awssdk.services.lambda.model.ListFunctionsByCodeSigningConfigResponse;
import software.amazon.awssdk.services.lambda.model.ListFunctionsRequest;
import software.amazon.awssdk.services.lambda.model.ListFunctionsResponse;
import software.amazon.awssdk.services.lambda.model.ListLayerVersionsRequest;
import software.amazon.awssdk.services.lambda.model.ListLayerVersionsResponse;
import software.amazon.awssdk.services.lambda.model.ListLayersRequest;
import software.amazon.awssdk.services.lambda.model.ListLayersResponse;
import software.amazon.awssdk.services.lambda.model.ListProvisionedConcurrencyConfigsRequest;
import software.amazon.awssdk.services.lambda.model.ListProvisionedConcurrencyConfigsResponse;
import software.amazon.awssdk.services.lambda.model.ListTagsRequest;
import software.amazon.awssdk.services.lambda.model.ListTagsResponse;
import software.amazon.awssdk.services.lambda.model.ListVersionsByFunctionRequest;
import software.amazon.awssdk.services.lambda.model.ListVersionsByFunctionResponse;
import software.amazon.awssdk.services.lambda.model.PolicyLengthExceededException;
import software.amazon.awssdk.services.lambda.model.PreconditionFailedException;
import software.amazon.awssdk.services.lambda.model.ProvisionedConcurrencyConfigNotFoundException;
import software.amazon.awssdk.services.lambda.model.PublicPolicyException;
import software.amazon.awssdk.services.lambda.model.PublishLayerVersionRequest;
import software.amazon.awssdk.services.lambda.model.PublishLayerVersionResponse;
import software.amazon.awssdk.services.lambda.model.PublishVersionRequest;
import software.amazon.awssdk.services.lambda.model.PublishVersionResponse;
import software.amazon.awssdk.services.lambda.model.PutFunctionCodeSigningConfigRequest;
import software.amazon.awssdk.services.lambda.model.PutFunctionCodeSigningConfigResponse;
import software.amazon.awssdk.services.lambda.model.PutFunctionConcurrencyRequest;
import software.amazon.awssdk.services.lambda.model.PutFunctionConcurrencyResponse;
import software.amazon.awssdk.services.lambda.model.PutFunctionEventInvokeConfigRequest;
import software.amazon.awssdk.services.lambda.model.PutFunctionEventInvokeConfigResponse;
import software.amazon.awssdk.services.lambda.model.PutFunctionRecursionConfigRequest;
import software.amazon.awssdk.services.lambda.model.PutFunctionRecursionConfigResponse;
import software.amazon.awssdk.services.lambda.model.PutProvisionedConcurrencyConfigRequest;
import software.amazon.awssdk.services.lambda.model.PutProvisionedConcurrencyConfigResponse;
import software.amazon.awssdk.services.lambda.model.PutPublicAccessBlockConfigRequest;
import software.amazon.awssdk.services.lambda.model.PutPublicAccessBlockConfigResponse;
import software.amazon.awssdk.services.lambda.model.PutResourcePolicyRequest;
import software.amazon.awssdk.services.lambda.model.PutResourcePolicyResponse;
import software.amazon.awssdk.services.lambda.model.PutRuntimeManagementConfigRequest;
import software.amazon.awssdk.services.lambda.model.PutRuntimeManagementConfigResponse;
import software.amazon.awssdk.services.lambda.model.RecursiveInvocationException;
import software.amazon.awssdk.services.lambda.model.RemoveLayerVersionPermissionRequest;
import software.amazon.awssdk.services.lambda.model.RemoveLayerVersionPermissionResponse;
import software.amazon.awssdk.services.lambda.model.RemovePermissionRequest;
import software.amazon.awssdk.services.lambda.model.RemovePermissionResponse;
import software.amazon.awssdk.services.lambda.model.RequestTooLargeException;
import software.amazon.awssdk.services.lambda.model.ResourceConflictException;
import software.amazon.awssdk.services.lambda.model.ResourceInUseException;
import software.amazon.awssdk.services.lambda.model.ResourceNotFoundException;
import software.amazon.awssdk.services.lambda.model.ResourceNotReadyException;
import software.amazon.awssdk.services.lambda.model.ServiceException;
import software.amazon.awssdk.services.lambda.model.SnapStartException;
import software.amazon.awssdk.services.lambda.model.SnapStartNotReadyException;
import software.amazon.awssdk.services.lambda.model.SnapStartTimeoutException;
import software.amazon.awssdk.services.lambda.model.SubnetIpAddressLimitReachedException;
import software.amazon.awssdk.services.lambda.model.TagResourceRequest;
import software.amazon.awssdk.services.lambda.model.TagResourceResponse;
import software.amazon.awssdk.services.lambda.model.TooManyRequestsException;
import software.amazon.awssdk.services.lambda.model.UnsupportedMediaTypeException;
import software.amazon.awssdk.services.lambda.model.UntagResourceRequest;
import software.amazon.awssdk.services.lambda.model.UntagResourceResponse;
import software.amazon.awssdk.services.lambda.model.UpdateAliasRequest;
import software.amazon.awssdk.services.lambda.model.UpdateAliasResponse;
import software.amazon.awssdk.services.lambda.model.UpdateCodeSigningConfigRequest;
import software.amazon.awssdk.services.lambda.model.UpdateCodeSigningConfigResponse;
import software.amazon.awssdk.services.lambda.model.UpdateEventSourceMappingRequest;
import software.amazon.awssdk.services.lambda.model.UpdateEventSourceMappingResponse;
import software.amazon.awssdk.services.lambda.model.UpdateFunctionCodeRequest;
import software.amazon.awssdk.services.lambda.model.UpdateFunctionCodeResponse;
import software.amazon.awssdk.services.lambda.model.UpdateFunctionConfigurationRequest;
import software.amazon.awssdk.services.lambda.model.UpdateFunctionConfigurationResponse;
import software.amazon.awssdk.services.lambda.model.UpdateFunctionEventInvokeConfigRequest;
import software.amazon.awssdk.services.lambda.model.UpdateFunctionEventInvokeConfigResponse;
import software.amazon.awssdk.services.lambda.model.UpdateFunctionUrlConfigRequest;
import software.amazon.awssdk.services.lambda.model.UpdateFunctionUrlConfigResponse;
import software.amazon.awssdk.services.lambda.transform.AddLayerVersionPermissionRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.AddPermissionRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.CreateAliasRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.CreateCodeSigningConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.CreateEventSourceMappingRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.CreateFunctionRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.CreateFunctionUrlConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.DeleteAliasRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.DeleteCodeSigningConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.DeleteEventSourceMappingRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.DeleteFunctionCodeSigningConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.DeleteFunctionConcurrencyRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.DeleteFunctionEventInvokeConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.DeleteFunctionRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.DeleteFunctionUrlConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.DeleteLayerVersionRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.DeleteProvisionedConcurrencyConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.DeleteResourcePolicyRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetAccountSettingsRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetAliasRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetCodeSigningConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetEventSourceMappingRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetFunctionCodeSigningConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetFunctionConcurrencyRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetFunctionConfigurationRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetFunctionEventInvokeConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetFunctionRecursionConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetFunctionRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetFunctionUrlConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetLayerVersionByArnRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetLayerVersionPolicyRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetLayerVersionRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetPolicyRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetProvisionedConcurrencyConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetPublicAccessBlockConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetResourcePolicyRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.GetRuntimeManagementConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.InvokeRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.InvokeWithResponseStreamRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.ListAliasesRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.ListCodeSigningConfigsRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.ListEventSourceMappingsRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.ListFunctionEventInvokeConfigsRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.ListFunctionUrlConfigsRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.ListFunctionsByCodeSigningConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.ListFunctionsRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.ListLayerVersionsRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.ListLayersRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.ListProvisionedConcurrencyConfigsRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.ListTagsRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.ListVersionsByFunctionRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.PublishLayerVersionRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.PublishVersionRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.PutFunctionCodeSigningConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.PutFunctionConcurrencyRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.PutFunctionEventInvokeConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.PutFunctionRecursionConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.PutProvisionedConcurrencyConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.PutPublicAccessBlockConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.PutResourcePolicyRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.PutRuntimeManagementConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.RemoveLayerVersionPermissionRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.RemovePermissionRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.TagResourceRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.UntagResourceRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.UpdateAliasRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.UpdateCodeSigningConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.UpdateEventSourceMappingRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.UpdateFunctionCodeRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.UpdateFunctionConfigurationRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.UpdateFunctionEventInvokeConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.transform.UpdateFunctionUrlConfigRequestMarshaller;
import software.amazon.awssdk.services.lambda.waiters.LambdaAsyncWaiter;
import software.amazon.awssdk.utils.CompletableFutureUtils;

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

    private static final AwsProtocolMetadata protocolMetadata = AwsProtocolMetadata.builder()
            .serviceProtocol(AwsServiceProtocol.REST_JSON).build();

    private final AsyncClientHandler clientHandler;

    private final AwsJsonProtocolFactory protocolFactory;

    private final SdkClientConfiguration clientConfiguration;

    private final ScheduledExecutorService executorService;

    private final Executor executor;

    protected DefaultLambdaAsyncClient(SdkClientConfiguration clientConfiguration) {
        this.clientHandler = new AwsAsyncClientHandler(clientConfiguration);
        this.clientConfiguration = clientConfiguration.toBuilder().option(SdkClientOption.SDK_CLIENT, this).build();
        this.protocolFactory = init(AwsJsonProtocolFactory.builder()).build();
        this.executor = clientConfiguration.option(SdkAdvancedAsyncClientOption.FUTURE_COMPLETION_EXECUTOR);
        this.executorService = clientConfiguration.option(SdkClientOption.SCHEDULED_EXECUTOR_SERVICE);
    }

    /**
     * 

* Adds permissions to the resource-based policy of a version of an Lambda layer. Use this action * to grant layer usage permission to other accounts. You can grant permission to a single account, all accounts in * an organization, or all Amazon Web Services accounts. *

*

* To revoke permission, call RemoveLayerVersionPermission with the statement ID that you specified when you * added it. *

* * @param addLayerVersionPermissionRequest * @return A Java Future containing the result of the AddLayerVersionPermission operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
    *
  • ServiceException The Lambda service encountered an internal error.
  • *
  • ResourceNotFoundException The resource specified in the request does not exist.
  • *
  • ResourceConflictException The resource already exists, or another operation is in progress.
  • *
  • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
  • *
  • InvalidParameterValueException One of the parameters in the request is not valid.
  • *
  • PolicyLengthExceededException The permissions policy for the resource is too large. For more * information, see Lambda * quotas.
  • *
  • PreconditionFailedException The RevisionId provided does not match the latest RevisionId for the * Lambda function or alias.

    *
      *
    • *

      * For AddPermission and RemovePermission API operations: Call GetPolicy to retrieve the * latest RevisionId for your resource. *

      *
    • *
    • *

      * For all other API operations: Call GetFunction or GetAlias to retrieve * the latest RevisionId for your resource. *

      *
    • *
    • 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.
    • *
    • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
    • *
    * @sample LambdaAsyncClient.AddLayerVersionPermission * @see AWS API Documentation */ @Override public CompletableFuture addLayerVersionPermission( AddLayerVersionPermissionRequest addLayerVersionPermissionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(addLayerVersionPermissionRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, addLayerVersionPermissionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "AddLayerVersionPermission"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, AddLayerVersionPermissionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("AddLayerVersionPermission").withProtocolMetadata(protocolMetadata) .withMarshaller(new AddLayerVersionPermissionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(addLayerVersionPermissionRequest)); 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); } } /** *

    * Grants a principal permission to use a function. You can apply the policy at the function level, or specify a * qualifier to restrict access to a single version or alias. If you use a qualifier, the invoker must use the full * Amazon Resource Name (ARN) of that version or alias to invoke the function. Note: Lambda does not support adding * policies to version $LATEST. *

    *

    * To grant permission to another account, specify the account ID as the Principal. To grant permission * to an organization defined in Organizations, specify the organization ID as the PrincipalOrgID. For * Amazon Web Servicesservices, the principal is a domain-style identifier that the service defines, such as * s3.amazonaws.com or sns.amazonaws.com. For Amazon Web Servicesservices, you can also * specify the ARN of the associated resource as the SourceArn. If you grant permission to a service * principal without specifying the source, other accounts could potentially configure resources in their account to * invoke your Lambda function. *

    *

    * This operation adds a statement to a resource-based permissions policy for the function. For more information * about function policies, see Using resource-based * policies for Lambda. *

    * * @param addPermissionRequest * @return A Java Future containing the result of the AddPermission operation returned by the service.
    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
      *
    • ServiceException The Lambda service encountered an internal error.
    • *
    • ResourceNotFoundException The resource specified in the request does not exist.
    • *
    • ResourceConflictException The resource already exists, or another operation is in progress.
    • *
    • InvalidParameterValueException One of the parameters in the request is not valid.
    • *
    • PolicyLengthExceededException The permissions policy for the resource is too large. For more * information, see Lambda * quotas.
    • *
    • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
    • *
    • PreconditionFailedException The RevisionId provided does not match the latest RevisionId for the * Lambda function or alias.

      *
        *
      • *

        * For AddPermission and RemovePermission API operations: Call GetPolicy to retrieve the * latest RevisionId for your resource. *

        *
      • *
      • *

        * For all other API operations: Call GetFunction or GetAlias to retrieve * the latest RevisionId for your resource. *

        *
      • *
      • PublicPolicyException Lambda prevented your policy from being created because it would grant public * access to your function. If you intended to create a public policy, use the * PutPublicAccessBlockConfig API action to configure your function's public-access settings to allow * public policies.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.AddPermission * @see AWS API * Documentation */ @Override public CompletableFuture addPermission(AddPermissionRequest addPermissionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(addPermissionRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, addPermissionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "AddPermission"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, AddPermissionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("AddPermission").withProtocolMetadata(protocolMetadata) .withMarshaller(new AddPermissionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(addPermissionRequest)); 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 an alias for a * Lambda function version. Use aliases to provide clients with a function identifier that you can update to invoke * a different version. *

      *

      * You can also map an alias to split invocation requests between two versions. Use the RoutingConfig * parameter to specify a second version and the percentage of invocation requests that it receives. *

      * * @param createAliasRequest * @return A Java Future containing the result of the CreateAlias operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • ResourceNotFoundException The resource specified in the request does not exist.
      • *
      • ResourceConflictException The resource already exists, or another operation is in progress.
      • *
      • InvalidParameterValueException One of the parameters in the request is not valid.
      • *
      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.CreateAlias * @see AWS API * Documentation */ @Override public CompletableFuture createAlias(CreateAliasRequest createAliasRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createAliasRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createAliasRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateAlias"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, CreateAliasResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateAlias").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateAliasRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createAliasRequest)); 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 code signing configuration. A code signing configuration * defines a list of allowed signing profiles and defines the code-signing validation policy (action to be taken if * deployment validation checks fail). *

      * * @param createCodeSigningConfigRequest * @return A Java Future containing the result of the CreateCodeSigningConfig operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • InvalidParameterValueException One of the parameters in the request is not valid.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.CreateCodeSigningConfig * @see AWS API Documentation */ @Override public CompletableFuture createCodeSigningConfig( CreateCodeSigningConfigRequest createCodeSigningConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createCodeSigningConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createCodeSigningConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateCodeSigningConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateCodeSigningConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateCodeSigningConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateCodeSigningConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createCodeSigningConfigRequest)); 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 mapping between an event source and an Lambda function. Lambda reads items from the event source and * invokes the function. *

      *

      * For details about how to configure different event sources, see the following topics. *

      * *

      * The following error handling options are available only for stream sources (DynamoDB and Kinesis): *

      *
        *
      • *

        * BisectBatchOnFunctionError – If the function returns an error, split the batch in two and retry. *

        *
      • *
      • *

        * DestinationConfig – Send discarded records to an Amazon SQS queue or Amazon SNS topic. *

        *
      • *
      • *

        * MaximumRecordAgeInSeconds – Discard records older than the specified age. The default value is * infinite (-1). When set to infinite (-1), failed records are retried until the record expires *

        *
      • *
      • *

        * MaximumRetryAttempts – Discard records after the specified number of retries. The default value is * infinite (-1). When set to infinite (-1), failed records are retried until the record expires. *

        *
      • *
      • *

        * ParallelizationFactor – Process multiple batches from each shard concurrently. *

        *
      • *
      *

      * For information about which configuration parameters apply to each event source, see the following topics. *

      * * * @param createEventSourceMappingRequest * @return A Java Future containing the result of the CreateEventSourceMapping operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • InvalidParameterValueException One of the parameters in the request is not valid.
      • *
      • ResourceConflictException The resource already exists, or another operation is in progress.
      • *
      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
      • *
      • ResourceNotFoundException The resource specified in the request does not exist.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.CreateEventSourceMapping * @see AWS API Documentation */ @Override public CompletableFuture createEventSourceMapping( CreateEventSourceMappingRequest createEventSourceMappingRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createEventSourceMappingRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createEventSourceMappingRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateEventSourceMapping"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateEventSourceMappingResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateEventSourceMapping").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateEventSourceMappingRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createEventSourceMappingRequest)); 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 Lambda function. To create a function, you need a deployment package and an * execution role. The deployment package is a .zip file archive or container image that contains your function * code. The execution role grants the function permission to use Amazon Web Servicesservices, such as Amazon * CloudWatch Logs for log streaming and X-Ray for request tracing. *

      *

      * If the deployment package is a container image, then you set the * package type to Image. For a container image, the code property must include the URI of a container * image in the Amazon ECR registry. You do not need to specify the handler and runtime properties. *

      *

      * If the deployment package is a .zip * file archive, then you set the package type to Zip. For a .zip file archive, the code property * specifies the location of the .zip file. You must also specify the handler and runtime properties. The code in * the deployment package must be compatible with the target instruction set architecture of the function ( * x86-64 or arm64). If you do not specify the architecture, then the default value is * x86-64. *

      *

      * When you create a function, Lambda provisions an instance of the function and its supporting resources. If your * function connects to a VPC, this process can take a minute or so. During this time, you can't invoke or modify * the function. The State, StateReason, and StateReasonCode fields in the * response from GetFunctionConfiguration indicate when the function is ready to invoke. For more * information, see Lambda function * states. *

      *

      * A function has an unpublished version, and can have published versions and aliases. The unpublished version * changes when you update your function's code and configuration. A published version is a snapshot of your * function code and configuration that can't be changed. An alias is a named resource that maps to a version, and * can be changed to map to a different version. Use the Publish parameter to create version * 1 of your function from its initial configuration. *

      *

      * The other parameters let you configure version-specific and function-level settings. You can modify * version-specific settings later with UpdateFunctionConfiguration. Function-level settings apply to both * the unpublished and published versions of the function, and include tags (TagResource) and per-function * concurrency limits (PutFunctionConcurrency). *

      *

      * You can use code signing if your deployment package is a .zip file archive. To enable code signing for this * function, specify the ARN of a code-signing configuration. When a user attempts to deploy a code package with * UpdateFunctionCode, Lambda checks that the code package has a valid signature from a trusted publisher. * The code-signing configuration includes set of signing profiles, which define the trusted publishers for this * function. *

      *

      * If another Amazon Web Services account or an Amazon Web Servicesservice invokes your function, use * AddPermission to grant permission by creating a resource-based Identity and Access Management (IAM) * policy. You can grant permissions at the function level, on a version, or on an alias. *

      *

      * To invoke your function directly, use Invoke. To invoke your function in response to events in other * Amazon Web Servicesservices, create an event source mapping (CreateEventSourceMapping), or configure a * function trigger in the other service. For more information, see Invoking Lambda functions. *

      * * @param createFunctionRequest * @return A Java Future containing the result of the CreateFunction operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • InvalidParameterValueException One of the parameters in the request is not valid.
      • *
      • ResourceNotFoundException The resource specified in the request does not exist.
      • *
      • ResourceConflictException The resource already exists, or another operation is in progress.
      • *
      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
      • *
      • CodeStorageExceededException Your Amazon Web Services account has exceeded its maximum total code * size. For more information, see Lambda quotas.
      • *
      • CodeVerificationFailedException The code signature failed one or more of the validation checks for * signature mismatch or expiry, and the code signing policy is set to ENFORCE. Lambda blocks the * deployment.
      • *
      • InvalidCodeSignatureException The code signature failed the integrity check. If the integrity check * fails, then Lambda blocks deployment, even if the code signing policy is set to WARN.
      • *
      • CodeSigningConfigNotFoundException The specified code signing configuration does not exist.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.CreateFunction * @see AWS API * Documentation */ @Override public CompletableFuture createFunction(CreateFunctionRequest createFunctionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createFunctionRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createFunctionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateFunction"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateFunctionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateFunction").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateFunctionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createFunctionRequest)); 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 Lambda function URL with the specified configuration parameters. A function URL is a dedicated HTTP(S) * endpoint that you can use to invoke your function. *

      * * @param createFunctionUrlConfigRequest * @return A Java Future containing the result of the CreateFunctionUrlConfig operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • ResourceConflictException The resource already exists, or another operation is in progress.
      • *
      • ResourceNotFoundException The resource specified in the request does not exist.
      • *
      • InvalidParameterValueException One of the parameters in the request is not valid.
      • *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.CreateFunctionUrlConfig * @see AWS API Documentation */ @Override public CompletableFuture createFunctionUrlConfig( CreateFunctionUrlConfigRequest createFunctionUrlConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createFunctionUrlConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, createFunctionUrlConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateFunctionUrlConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateFunctionUrlConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateFunctionUrlConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new CreateFunctionUrlConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(createFunctionUrlConfigRequest)); 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 Lambda function alias. *

      * * @param deleteAliasRequest * @return A Java Future containing the result of the DeleteAlias operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • InvalidParameterValueException One of the parameters in the request is not valid.
      • *
      • ResourceConflictException The resource already exists, or another operation is in progress.
      • *
      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.DeleteAlias * @see AWS API * Documentation */ @Override public CompletableFuture deleteAlias(DeleteAliasRequest deleteAliasRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteAliasRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteAliasRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteAlias"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DeleteAliasResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteAlias").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteAliasRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteAliasRequest)); 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 code signing configuration. You can delete the code signing configuration only if no function is * using it. *

      * * @param deleteCodeSigningConfigRequest * @return A Java Future containing the result of the DeleteCodeSigningConfig operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • InvalidParameterValueException One of the parameters in the request is not valid.
      • *
      • ResourceNotFoundException The resource specified in the request does not exist.
      • *
      • ResourceConflictException The resource already exists, or another operation is in progress.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.DeleteCodeSigningConfig * @see AWS API Documentation */ @Override public CompletableFuture deleteCodeSigningConfig( DeleteCodeSigningConfigRequest deleteCodeSigningConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteCodeSigningConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteCodeSigningConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteCodeSigningConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteCodeSigningConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteCodeSigningConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteCodeSigningConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteCodeSigningConfigRequest)); 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 event source * mapping. You can get the identifier of a mapping from the output of ListEventSourceMappings. *

      *

      * When you delete an event source mapping, it enters a Deleting state and might not be completely * deleted for several seconds. *

      * * @param deleteEventSourceMappingRequest * @return A Java Future containing the result of the DeleteEventSourceMapping operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • ResourceNotFoundException The resource specified in the request does not exist.
      • *
      • InvalidParameterValueException One of the parameters in the request is not valid.
      • *
      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
      • *
      • ResourceConflictException The resource already exists, or another operation is in progress.
      • *
      • ResourceInUseException The operation conflicts with the resource's availability. For example, you * tried to update an event source mapping in the CREATING state, or you tried to delete an event source * mapping currently UPDATING.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.DeleteEventSourceMapping * @see AWS API Documentation */ @Override public CompletableFuture deleteEventSourceMapping( DeleteEventSourceMappingRequest deleteEventSourceMappingRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteEventSourceMappingRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteEventSourceMappingRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteEventSourceMapping"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteEventSourceMappingResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteEventSourceMapping").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteEventSourceMappingRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteEventSourceMappingRequest)); 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 Lambda function. To delete a specific function version, use the Qualifier parameter. * Otherwise, all versions and aliases are deleted. This doesn't require the user to have explicit permissions for * DeleteAlias. *

      *

      * To delete Lambda event source mappings that invoke a function, use DeleteEventSourceMapping. For Amazon * Web Servicesservices and resources that invoke your function directly, delete the trigger in the service where * you originally configured it. *

      * * @param deleteFunctionRequest * @return A Java Future containing the result of the DeleteFunction operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • ResourceNotFoundException The resource specified in the request does not exist.
      • *
      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
      • *
      • InvalidParameterValueException One of the parameters in the request is not valid.
      • *
      • ResourceConflictException The resource already exists, or another operation is in progress.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.DeleteFunction * @see AWS API * Documentation */ @Override public CompletableFuture deleteFunction(DeleteFunctionRequest deleteFunctionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteFunctionRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteFunctionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteFunction"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteFunctionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteFunction").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteFunctionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteFunctionRequest)); 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 the code signing configuration from the function. *

      * * @param deleteFunctionCodeSigningConfigRequest * @return A Java Future containing the result of the DeleteFunctionCodeSigningConfig operation returned by the * service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • InvalidParameterValueException One of the parameters in the request is not valid.
      • *
      • CodeSigningConfigNotFoundException The specified code signing configuration does not exist.
      • *
      • ResourceNotFoundException The resource specified in the request does not exist.
      • *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
      • *
      • ResourceConflictException The resource already exists, or another operation is in progress.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.DeleteFunctionCodeSigningConfig * @see AWS API Documentation */ @Override public CompletableFuture deleteFunctionCodeSigningConfig( DeleteFunctionCodeSigningConfigRequest deleteFunctionCodeSigningConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteFunctionCodeSigningConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteFunctionCodeSigningConfigRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteFunctionCodeSigningConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteFunctionCodeSigningConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteFunctionCodeSigningConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteFunctionCodeSigningConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteFunctionCodeSigningConfigRequest)); 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 a concurrent execution limit from a function. *

      * * @param deleteFunctionConcurrencyRequest * @return A Java Future containing the result of the DeleteFunctionConcurrency operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • ResourceNotFoundException The resource specified in the request does not exist.
      • *
      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
      • *
      • InvalidParameterValueException One of the parameters in the request is not valid.
      • *
      • ResourceConflictException The resource already exists, or another operation is in progress.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.DeleteFunctionConcurrency * @see AWS API Documentation */ @Override public CompletableFuture deleteFunctionConcurrency( DeleteFunctionConcurrencyRequest deleteFunctionConcurrencyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteFunctionConcurrencyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteFunctionConcurrencyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteFunctionConcurrency"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteFunctionConcurrencyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteFunctionConcurrency").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteFunctionConcurrencyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteFunctionConcurrencyRequest)); 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 configuration for asynchronous invocation for a function, version, or alias. *

      *

      * To configure options for asynchronous invocation, use PutFunctionEventInvokeConfig. *

      * * @param deleteFunctionEventInvokeConfigRequest * @return A Java Future containing the result of the DeleteFunctionEventInvokeConfig operation returned by the * service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • ResourceNotFoundException The resource specified in the request does not exist.
      • *
      • InvalidParameterValueException One of the parameters in the request is not valid.
      • *
      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
      • *
      • ResourceConflictException The resource already exists, or another operation is in progress.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.DeleteFunctionEventInvokeConfig * @see AWS API Documentation */ @Override public CompletableFuture deleteFunctionEventInvokeConfig( DeleteFunctionEventInvokeConfigRequest deleteFunctionEventInvokeConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteFunctionEventInvokeConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteFunctionEventInvokeConfigRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteFunctionEventInvokeConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteFunctionEventInvokeConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteFunctionEventInvokeConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteFunctionEventInvokeConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteFunctionEventInvokeConfigRequest)); 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 Lambda function URL. When you delete a function URL, you can't recover it. Creating a new function URL * results in a different URL address. *

      * * @param deleteFunctionUrlConfigRequest * @return A Java Future containing the result of the DeleteFunctionUrlConfig operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • ResourceConflictException The resource already exists, or another operation is in progress.
      • *
      • ResourceNotFoundException The resource specified in the request does not exist.
      • *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.DeleteFunctionUrlConfig * @see AWS API Documentation */ @Override public CompletableFuture deleteFunctionUrlConfig( DeleteFunctionUrlConfigRequest deleteFunctionUrlConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteFunctionUrlConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteFunctionUrlConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteFunctionUrlConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteFunctionUrlConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteFunctionUrlConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteFunctionUrlConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteFunctionUrlConfigRequest)); 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 version of an Lambda * layer. Deleted versions can no longer be viewed or added to functions. To avoid breaking functions, a copy of * the version remains in Lambda until no functions refer to it. *

      * * @param deleteLayerVersionRequest * @return A Java Future containing the result of the DeleteLayerVersion operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.DeleteLayerVersion * @see AWS API * Documentation */ @Override public CompletableFuture deleteLayerVersion(DeleteLayerVersionRequest deleteLayerVersionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteLayerVersionRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteLayerVersionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteLayerVersion"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteLayerVersionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteLayerVersion").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteLayerVersionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteLayerVersionRequest)); 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 provisioned concurrency configuration for a function. *

      * * @param deleteProvisionedConcurrencyConfigRequest * @return A Java Future containing the result of the DeleteProvisionedConcurrencyConfig operation returned by the * service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • InvalidParameterValueException One of the parameters in the request is not valid.
      • *
      • ResourceConflictException The resource already exists, or another operation is in progress.
      • *
      • ResourceNotFoundException The resource specified in the request does not exist.
      • *
      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
      • *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • 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.
      • *
      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample LambdaAsyncClient.DeleteProvisionedConcurrencyConfig * @see AWS API Documentation */ @Override public CompletableFuture deleteProvisionedConcurrencyConfig( DeleteProvisionedConcurrencyConfigRequest deleteProvisionedConcurrencyConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteProvisionedConcurrencyConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteProvisionedConcurrencyConfigRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteProvisionedConcurrencyConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DeleteProvisionedConcurrencyConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteProvisionedConcurrencyConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteProvisionedConcurrencyConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteProvisionedConcurrencyConfigRequest)); 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); } } /** * *

      * The option to create and modify full JSON resource-based policies, and to use the PutResourcePolicy, * GetResourcePolicy, and DeleteResourcePolicy APIs, won't be available in all Amazon Web Services Regions until * September 30, 2024. *

      *
      *

      * Deletes a resource-based policy * from a function. *

      * * @param deleteResourcePolicyRequest * @return A Java Future containing the result of the DeleteResourcePolicy operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • ServiceException The Lambda service encountered an internal error.
      • *
      • ResourceNotFoundException The resource specified in the request does not exist.
      • *
      • ResourceConflictException The resource already exists, or another operation is in progress.
      • *
      • InvalidParameterValueException One of the parameters in the request is not valid.
      • *
      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
      • *
      • PreconditionFailedException The RevisionId provided does not match the latest RevisionId for the * Lambda function or alias.

        *
          *
        • *

          * For AddPermission and RemovePermission API operations: Call GetPolicy to retrieve the * latest RevisionId for your resource. *

          *
        • *
        • *

          * For all other API operations: Call GetFunction or GetAlias to retrieve * the latest RevisionId for your resource. *

          *
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.DeleteResourcePolicy * @see AWS * API Documentation */ @Override public CompletableFuture deleteResourcePolicy( DeleteResourcePolicyRequest deleteResourcePolicyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteResourcePolicyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteResourcePolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteResourcePolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteResourcePolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteResourcePolicy").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteResourcePolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteResourcePolicyRequest)); 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 details about your account's limits and usage in an Amazon Web Services * Region. *

        * * @param getAccountSettingsRequest * @return A Java Future containing the result of the GetAccountSettings operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetAccountSettings * @see AWS API * Documentation */ @Override public CompletableFuture getAccountSettings(GetAccountSettingsRequest getAccountSettingsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getAccountSettingsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getAccountSettingsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetAccountSettings"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetAccountSettingsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetAccountSettings").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetAccountSettingsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getAccountSettingsRequest)); 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 details about a Lambda function alias. *

        * * @param getAliasRequest * @return A Java Future containing the result of the GetAlias operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetAlias * @see AWS API * Documentation */ @Override public CompletableFuture getAlias(GetAliasRequest getAliasRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getAliasRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getAliasRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetAlias"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, GetAliasResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("GetAlias") .withProtocolMetadata(protocolMetadata) .withMarshaller(new GetAliasRequestMarshaller(protocolFactory)).withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) .withMetricCollector(apiCallMetricCollector).withInput(getAliasRequest)); 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 information about the specified code signing configuration. *

        * * @param getCodeSigningConfigRequest * @return A Java Future containing the result of the GetCodeSigningConfig operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetCodeSigningConfig * @see AWS * API Documentation */ @Override public CompletableFuture getCodeSigningConfig( GetCodeSigningConfigRequest getCodeSigningConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getCodeSigningConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getCodeSigningConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetCodeSigningConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetCodeSigningConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetCodeSigningConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetCodeSigningConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getCodeSigningConfigRequest)); 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 details about an event source mapping. You can get the identifier of a mapping from the output of * ListEventSourceMappings. *

        * * @param getEventSourceMappingRequest * @return A Java Future containing the result of the GetEventSourceMapping operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetEventSourceMapping * @see AWS * API Documentation */ @Override public CompletableFuture getEventSourceMapping( GetEventSourceMappingRequest getEventSourceMappingRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getEventSourceMappingRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getEventSourceMappingRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetEventSourceMapping"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetEventSourceMappingResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetEventSourceMapping").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetEventSourceMappingRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getEventSourceMappingRequest)); 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 information about the function or function version, with a link to download the deployment package that's * valid for 10 minutes. If you specify a function version, only details that are specific to that version are * returned. *

        * * @param getFunctionRequest * @return A Java Future containing the result of the GetFunction operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetFunction * @see AWS API * Documentation */ @Override public CompletableFuture getFunction(GetFunctionRequest getFunctionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getFunctionRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getFunctionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetFunction"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, GetFunctionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetFunction").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetFunctionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getFunctionRequest)); 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 code signing configuration for the specified function. *

        * * @param getFunctionCodeSigningConfigRequest * @return A Java Future containing the result of the GetFunctionCodeSigningConfig operation returned by the * service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetFunctionCodeSigningConfig * @see AWS API Documentation */ @Override public CompletableFuture getFunctionCodeSigningConfig( GetFunctionCodeSigningConfigRequest getFunctionCodeSigningConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getFunctionCodeSigningConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getFunctionCodeSigningConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetFunctionCodeSigningConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetFunctionCodeSigningConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetFunctionCodeSigningConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetFunctionCodeSigningConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getFunctionCodeSigningConfigRequest)); 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 details about the reserved concurrency configuration for a function. To set a concurrency limit for a * function, use PutFunctionConcurrency. *

        * * @param getFunctionConcurrencyRequest * @return A Java Future containing the result of the GetFunctionConcurrency operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetFunctionConcurrency * @see AWS * API Documentation */ @Override public CompletableFuture getFunctionConcurrency( GetFunctionConcurrencyRequest getFunctionConcurrencyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getFunctionConcurrencyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getFunctionConcurrencyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetFunctionConcurrency"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetFunctionConcurrencyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetFunctionConcurrency").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetFunctionConcurrencyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getFunctionConcurrencyRequest)); 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 version-specific settings of a Lambda function or version. The output includes only options that can * vary between versions of a function. To modify these settings, use UpdateFunctionConfiguration. *

        *

        * To get all of a function's details, including function-level settings, use GetFunction. *

        * * @param getFunctionConfigurationRequest * @return A Java Future containing the result of the GetFunctionConfiguration operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetFunctionConfiguration * @see AWS API Documentation */ @Override public CompletableFuture getFunctionConfiguration( GetFunctionConfigurationRequest getFunctionConfigurationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getFunctionConfigurationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getFunctionConfigurationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetFunctionConfiguration"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetFunctionConfigurationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetFunctionConfiguration").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetFunctionConfigurationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getFunctionConfigurationRequest)); 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 configuration for asynchronous invocation for a function, version, or alias. *

        *

        * To configure options for asynchronous invocation, use PutFunctionEventInvokeConfig. *

        * * @param getFunctionEventInvokeConfigRequest * @return A Java Future containing the result of the GetFunctionEventInvokeConfig operation returned by the * service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetFunctionEventInvokeConfig * @see AWS API Documentation */ @Override public CompletableFuture getFunctionEventInvokeConfig( GetFunctionEventInvokeConfigRequest getFunctionEventInvokeConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getFunctionEventInvokeConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getFunctionEventInvokeConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetFunctionEventInvokeConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetFunctionEventInvokeConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetFunctionEventInvokeConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetFunctionEventInvokeConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getFunctionEventInvokeConfigRequest)); 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 your function's recursive loop detection * configuration. *

        * * @param getFunctionRecursionConfigRequest * @return A Java Future containing the result of the GetFunctionRecursionConfig operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetFunctionRecursionConfig * @see AWS API Documentation */ @Override public CompletableFuture getFunctionRecursionConfig( GetFunctionRecursionConfigRequest getFunctionRecursionConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getFunctionRecursionConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getFunctionRecursionConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetFunctionRecursionConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetFunctionRecursionConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetFunctionRecursionConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetFunctionRecursionConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getFunctionRecursionConfigRequest)); 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 details about a Lambda function URL. *

        * * @param getFunctionUrlConfigRequest * @return A Java Future containing the result of the GetFunctionUrlConfig operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetFunctionUrlConfig * @see AWS * API Documentation */ @Override public CompletableFuture getFunctionUrlConfig( GetFunctionUrlConfigRequest getFunctionUrlConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getFunctionUrlConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getFunctionUrlConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetFunctionUrlConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetFunctionUrlConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetFunctionUrlConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetFunctionUrlConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getFunctionUrlConfigRequest)); 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 information about a version of an Lambda layer, with a link to * download the layer archive that's valid for 10 minutes. *

        * * @param getLayerVersionRequest * @return A Java Future containing the result of the GetLayerVersion operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetLayerVersion * @see AWS API * Documentation */ @Override public CompletableFuture getLayerVersion(GetLayerVersionRequest getLayerVersionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getLayerVersionRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getLayerVersionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetLayerVersion"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetLayerVersionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetLayerVersion").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetLayerVersionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getLayerVersionRequest)); 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 information about a version of an Lambda layer, with a link to * download the layer archive that's valid for 10 minutes. *

        * * @param getLayerVersionByArnRequest * @return A Java Future containing the result of the GetLayerVersionByArn operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetLayerVersionByArn * @see AWS * API Documentation */ @Override public CompletableFuture getLayerVersionByArn( GetLayerVersionByArnRequest getLayerVersionByArnRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getLayerVersionByArnRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getLayerVersionByArnRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetLayerVersionByArn"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetLayerVersionByArnResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetLayerVersionByArn").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetLayerVersionByArnRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getLayerVersionByArnRequest)); 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 permission policy for a version of an Lambda layer. For more * information, see AddLayerVersionPermission. *

        * * @param getLayerVersionPolicyRequest * @return A Java Future containing the result of the GetLayerVersionPolicy operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetLayerVersionPolicy * @see AWS * API Documentation */ @Override public CompletableFuture getLayerVersionPolicy( GetLayerVersionPolicyRequest getLayerVersionPolicyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getLayerVersionPolicyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getLayerVersionPolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetLayerVersionPolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetLayerVersionPolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetLayerVersionPolicy").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetLayerVersionPolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getLayerVersionPolicyRequest)); 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 resource-based IAM * policy for a function, version, or alias. *

        * * @param getPolicyRequest * @return A Java Future containing the result of the GetPolicy operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetPolicy * @see AWS API * Documentation */ @Override public CompletableFuture getPolicy(GetPolicyRequest getPolicyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getPolicyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getPolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetPolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, GetPolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("GetPolicy") .withProtocolMetadata(protocolMetadata) .withMarshaller(new GetPolicyRequestMarshaller(protocolFactory)).withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) .withMetricCollector(apiCallMetricCollector).withInput(getPolicyRequest)); 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 provisioned concurrency configuration for a function's alias or version. *

        * * @param getProvisionedConcurrencyConfigRequest * @return A Java Future containing the result of the GetProvisionedConcurrencyConfig operation returned by the * service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ProvisionedConcurrencyConfigNotFoundException The specified configuration does not exist.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetProvisionedConcurrencyConfig * @see AWS API Documentation */ @Override public CompletableFuture getProvisionedConcurrencyConfig( GetProvisionedConcurrencyConfigRequest getProvisionedConcurrencyConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getProvisionedConcurrencyConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getProvisionedConcurrencyConfigRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetProvisionedConcurrencyConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetProvisionedConcurrencyConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetProvisionedConcurrencyConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetProvisionedConcurrencyConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getProvisionedConcurrencyConfigRequest)); 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); } } /** * *

        * The option to configure public-access settings, and to use the PutPublicAccessBlock and GetPublicAccessBlock * APIs, won't be available in all Amazon Web Services Regions until September 30, 2024. *

        *
        *

        * Retrieve the public-access settings for a function. *

        * * @param getPublicAccessBlockConfigRequest * @return A Java Future containing the result of the GetPublicAccessBlockConfig operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetPublicAccessBlockConfig * @see AWS API Documentation */ @Override public CompletableFuture getPublicAccessBlockConfig( GetPublicAccessBlockConfigRequest getPublicAccessBlockConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getPublicAccessBlockConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getPublicAccessBlockConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetPublicAccessBlockConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetPublicAccessBlockConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetPublicAccessBlockConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetPublicAccessBlockConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getPublicAccessBlockConfigRequest)); 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); } } /** * *

        * The option to create and modify full JSON resource-based policies, and to use the PutResourcePolicy, * GetResourcePolicy, and DeleteResourcePolicy APIs, won't be available in all Amazon Web Services Regions until * September 30, 2024. *

        *
        *

        * Retrieves the resource-based policy * attached to a function. *

        * * @param getResourcePolicyRequest * @return A Java Future containing the result of the GetResourcePolicy operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetResourcePolicy * @see AWS API * Documentation */ @Override public CompletableFuture getResourcePolicy(GetResourcePolicyRequest getResourcePolicyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getResourcePolicyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getResourcePolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetResourcePolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetResourcePolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetResourcePolicy").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetResourcePolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getResourcePolicyRequest)); 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 runtime management configuration for a function's version. If the runtime update mode is * Manual, this includes the ARN of the runtime version and the runtime update mode. If the runtime update * mode is Auto or Function update, this includes the runtime update mode and null is * returned for the ARN. For more information, see Runtime updates. *

        * * @param getRuntimeManagementConfigRequest * @return A Java Future containing the result of the GetRuntimeManagementConfig operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.GetRuntimeManagementConfig * @see AWS API Documentation */ @Override public CompletableFuture getRuntimeManagementConfig( GetRuntimeManagementConfigRequest getRuntimeManagementConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getRuntimeManagementConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getRuntimeManagementConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetRuntimeManagementConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetRuntimeManagementConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetRuntimeManagementConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetRuntimeManagementConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getRuntimeManagementConfigRequest)); 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); } } /** *

        * Invokes a Lambda function. You can invoke a function synchronously (and wait for the response), or * asynchronously. By default, Lambda invokes your function synchronously (i.e. theInvocationType is * RequestResponse). To invoke a function asynchronously, set InvocationType to * Event. Lambda passes the ClientContext object to your function for synchronous * invocations only. *

        *

        * For synchronous invocation, * details about the function response, including errors, are included in the response body and headers. For either * invocation type, you can find more information in the execution log and trace. *

        *

        * When an error occurs, your function may be invoked multiple times. Retry behavior varies by error type, client, * event source, and invocation type. For example, if you invoke a function asynchronously and it returns an error, * Lambda executes the function up to two more times. For more information, see Error handling and automatic retries * in Lambda. *

        *

        * For asynchronous invocation, * Lambda adds events to a queue before sending them to your function. If your function does not have enough * capacity to keep up with the queue, events may be lost. Occasionally, your function may receive the same event * multiple times, even if no error occurs. To retain events that were not processed, configure your function with a * dead-letter * queue. *

        *

        * The status code in the API response doesn't reflect function errors. Error codes are reserved for errors that * prevent your function from executing, such as permissions errors, quota errors, or issues with * your function's code and configuration. For example, Lambda returns TooManyRequestsException if * running the function would cause you to exceed a concurrency limit at either the account level ( * ConcurrentInvocationLimitExceeded) or function level ( * ReservedFunctionConcurrentInvocationLimitExceeded). *

        *

        * For functions with a long timeout, your client might disconnect during synchronous invocation while it waits for * a response. Configure your HTTP client, SDK, firewall, proxy, or operating system to allow for long connections * with timeout or keep-alive settings. *

        *

        * This operation requires permission for the lambda:InvokeFunction action. For * details on how to set up permissions for cross-account invocations, see Granting function access to other accounts. *

        * * @param invokeRequest * @return A Java Future containing the result of the Invoke operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • InvalidRequestContentException The request body could not be parsed as JSON.
        • *
        • RequestTooLargeException The request payload exceeded the Invoke request body JSON input * quota. For more information, see Lambda quotas.
        • *
        • UnsupportedMediaTypeException The content type of the Invoke request body is not JSON.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • Ec2UnexpectedException Lambda received an unexpected Amazon EC2 client exception while setting up for * the Lambda function.
        • *
        • SubnetIpAddressLimitReachedException Lambda couldn't set up VPC access for the Lambda function * because one or more configured subnets has no available IP addresses.
        • *
        • EniLimitReachedException Lambda couldn't create an elastic network interface in the VPC, specified as * part of Lambda function configuration, because the limit for network interfaces has been reached. For * more information, see Lambda quotas.
        • *
        • EfsMountConnectivityException The Lambda function couldn't make a network connection to the * configured file system.
        • *
        • EfsMountFailureException The Lambda function couldn't mount the configured file system due to a * permission or configuration issue.
        • *
        • EfsMountTimeoutException The Lambda function made a network connection to the configured file system, * but the mount operation timed out.
        • *
        • EfsioException An error occurred when reading from or writing to a connected file system.
        • *
        • SnapStartException The afterRestore() runtime hook * encountered an error. For more information, check the Amazon CloudWatch logs.
        • *
        • SnapStartTimeoutException Lambda couldn't restore the snapshot within the timeout limit.
        • *
        • SnapStartNotReadyException Lambda is initializing your function. You can invoke the function when the * function state becomes * Active.
        • *
        • Ec2ThrottledException Amazon EC2 throttled Lambda during Lambda function initialization using the * execution role provided for the function.
        • *
        • Ec2AccessDeniedException Need additional permissions to configure VPC settings.
        • *
        • InvalidSubnetIdException The subnet ID provided in the Lambda function VPC configuration is not * valid.
        • *
        • InvalidSecurityGroupIdException The security group ID provided in the Lambda function VPC * configuration is not valid.
        • *
        • InvalidZipFileException Lambda could not unzip the deployment package.
        • *
        • KmsDisabledException Lambda couldn't decrypt the environment variables because the KMS key used is * disabled. Check the Lambda function's KMS key settings.
        • *
        • KmsInvalidStateException Lambda couldn't decrypt the environment variables because the state of the * KMS key used is not valid for Decrypt. Check the function's KMS key settings.
        • *
        • KmsAccessDeniedException Lambda couldn't decrypt the environment variables because KMS access was * denied. Check the Lambda function's KMS permissions.
        • *
        • KmsNotFoundException Lambda couldn't decrypt the environment variables because the KMS key was not * found. Check the function's KMS key settings.
        • *
        • InvalidRuntimeException The runtime or runtime version specified is not supported.
        • *
        • ResourceConflictException The resource already exists, or another operation is in progress.
        • *
        • ResourceNotReadyException The function is inactive and its VPC connection is no longer available. * Wait for the VPC connection to reestablish and try again.
        • *
        • RecursiveInvocationException Lambda has detected your function being invoked in a recursive loop with * other Amazon Web Services resources and stopped your function's invocation.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.Invoke * @see AWS API * Documentation */ @Override public CompletableFuture invoke(InvokeRequest invokeRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(invokeRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, invokeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "Invoke"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(false).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, InvokeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("Invoke") .withProtocolMetadata(protocolMetadata).withMarshaller(new InvokeRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(invokeRequest)); 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); } } /** *

        * Configure your Lambda functions to stream response payloads back to clients. For more information, see Configuring a Lambda * function to stream responses. *

        *

        * This operation requires permission for the lambda:InvokeFunction action. For * details on how to set up permissions for cross-account invocations, see Granting function access to other accounts. *

        * * @param invokeWithResponseStreamRequest * @return A Java Future containing the result of the InvokeWithResponseStream operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • InvalidRequestContentException The request body could not be parsed as JSON.
        • *
        • RequestTooLargeException The request payload exceeded the Invoke request body JSON input * quota. For more information, see Lambda quotas.
        • *
        • UnsupportedMediaTypeException The content type of the Invoke request body is not JSON.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • Ec2UnexpectedException Lambda received an unexpected Amazon EC2 client exception while setting up for * the Lambda function.
        • *
        • SubnetIpAddressLimitReachedException Lambda couldn't set up VPC access for the Lambda function * because one or more configured subnets has no available IP addresses.
        • *
        • EniLimitReachedException Lambda couldn't create an elastic network interface in the VPC, specified as * part of Lambda function configuration, because the limit for network interfaces has been reached. For * more information, see Lambda quotas.
        • *
        • EfsMountConnectivityException The Lambda function couldn't make a network connection to the * configured file system.
        • *
        • EfsMountFailureException The Lambda function couldn't mount the configured file system due to a * permission or configuration issue.
        • *
        • EfsMountTimeoutException The Lambda function made a network connection to the configured file system, * but the mount operation timed out.
        • *
        • EfsioException An error occurred when reading from or writing to a connected file system.
        • *
        • SnapStartException The afterRestore() runtime hook * encountered an error. For more information, check the Amazon CloudWatch logs.
        • *
        • SnapStartTimeoutException Lambda couldn't restore the snapshot within the timeout limit.
        • *
        • SnapStartNotReadyException Lambda is initializing your function. You can invoke the function when the * function state becomes * Active.
        • *
        • Ec2ThrottledException Amazon EC2 throttled Lambda during Lambda function initialization using the * execution role provided for the function.
        • *
        • Ec2AccessDeniedException Need additional permissions to configure VPC settings.
        • *
        • InvalidSubnetIdException The subnet ID provided in the Lambda function VPC configuration is not * valid.
        • *
        • InvalidSecurityGroupIdException The security group ID provided in the Lambda function VPC * configuration is not valid.
        • *
        • InvalidZipFileException Lambda could not unzip the deployment package.
        • *
        • KmsDisabledException Lambda couldn't decrypt the environment variables because the KMS key used is * disabled. Check the Lambda function's KMS key settings.
        • *
        • KmsInvalidStateException Lambda couldn't decrypt the environment variables because the state of the * KMS key used is not valid for Decrypt. Check the function's KMS key settings.
        • *
        • KmsAccessDeniedException Lambda couldn't decrypt the environment variables because KMS access was * denied. Check the Lambda function's KMS permissions.
        • *
        • KmsNotFoundException Lambda couldn't decrypt the environment variables because the KMS key was not * found. Check the function's KMS key settings.
        • *
        • InvalidRuntimeException The runtime or runtime version specified is not supported.
        • *
        • ResourceConflictException The resource already exists, or another operation is in progress.
        • *
        • ResourceNotReadyException The function is inactive and its VPC connection is no longer available. * Wait for the VPC connection to reestablish and try again.
        • *
        • RecursiveInvocationException Lambda has detected your function being invoked in a recursive loop with * other Amazon Web Services resources and stopped your function's invocation.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.InvokeWithResponseStream * @see AWS API Documentation */ @Override public CompletableFuture invokeWithResponseStream(InvokeWithResponseStreamRequest invokeWithResponseStreamRequest, InvokeWithResponseStreamResponseHandler asyncResponseHandler) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(invokeWithResponseStreamRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, invokeWithResponseStreamRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "InvokeWithResponseStream"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = new AttachHttpMetadataResponseHandler( protocolFactory.createResponseHandler(operationMetadata, InvokeWithResponseStreamResponse::builder)); HttpResponseHandler voidResponseHandler = protocolFactory.createResponseHandler(JsonOperationMetadata .builder().isPayloadJson(false).hasStreamingSuccessResponse(true).build(), VoidSdkResponse::builder); HttpResponseHandler eventResponseHandler = protocolFactory .createResponseHandler( JsonOperationMetadata.builder().isPayloadJson(true).hasStreamingSuccessResponse(false).build(), EventStreamTaggedUnionPojoSupplier .builder() .putSdkPojoSupplier("PayloadChunk", InvokeWithResponseStreamResponseEvent::payloadChunkBuilder) .putSdkPojoSupplier("InvokeComplete", InvokeWithResponseStreamResponseEvent::invokeCompleteBuilder) .defaultSdkPojoSupplier( () -> new SdkPojoBuilder(InvokeWithResponseStreamResponseEvent.UNKNOWN)).build()); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture future = new CompletableFuture<>(); EventStreamAsyncResponseTransformer asyncResponseTransformer = EventStreamAsyncResponseTransformer . builder() .eventStreamResponseHandler(asyncResponseHandler).eventResponseHandler(eventResponseHandler) .initialResponseHandler(responseHandler).exceptionResponseHandler(errorResponseHandler).future(future) .executor(executor).serviceName(serviceName()).build(); RestEventStreamAsyncResponseTransformer restAsyncResponseTransformer = RestEventStreamAsyncResponseTransformer . builder() .eventStreamAsyncResponseTransformer(asyncResponseTransformer) .eventStreamResponseHandler(asyncResponseHandler).build(); CompletableFuture executeFuture = clientHandler.execute( new ClientExecutionParams() .withOperationName("InvokeWithResponseStream").withProtocolMetadata(protocolMetadata) .withMarshaller(new InvokeWithResponseStreamRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(invokeWithResponseStreamRequest), restAsyncResponseTransformer); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { if (e != null) { try { asyncResponseHandler.exceptionOccurred(e); } finally { future.completeExceptionally(e); } } metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return CompletableFutureUtils.forwardExceptionTo(future, executeFuture); } catch (Throwable t) { runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring", () -> asyncResponseHandler.exceptionOccurred(t)); metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

        * Returns a list of aliases * for a Lambda function. *

        * * @param listAliasesRequest * @return A Java Future containing the result of the ListAliases operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.ListAliases * @see AWS API * Documentation */ @Override public CompletableFuture listAliases(ListAliasesRequest listAliasesRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listAliasesRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listAliasesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListAliases"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, ListAliasesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListAliases").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListAliasesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listAliasesRequest)); 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 a list of code * signing configurations. A request returns up to 10,000 configurations per call. You can use the * MaxItems parameter to return fewer configurations per call. *

        * * @param listCodeSigningConfigsRequest * @return A Java Future containing the result of the ListCodeSigningConfigs operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.ListCodeSigningConfigs * @see AWS * API Documentation */ @Override public CompletableFuture listCodeSigningConfigs( ListCodeSigningConfigsRequest listCodeSigningConfigsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listCodeSigningConfigsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listCodeSigningConfigsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListCodeSigningConfigs"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListCodeSigningConfigsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListCodeSigningConfigs").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListCodeSigningConfigsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listCodeSigningConfigsRequest)); 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 event source mappings. Specify an EventSourceArn to show only event source mappings for a * single event source. *

        * * @param listEventSourceMappingsRequest * @return A Java Future containing the result of the ListEventSourceMappings operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.ListEventSourceMappings * @see AWS API Documentation */ @Override public CompletableFuture listEventSourceMappings( ListEventSourceMappingsRequest listEventSourceMappingsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listEventSourceMappingsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listEventSourceMappingsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListEventSourceMappings"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListEventSourceMappingsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListEventSourceMappings").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListEventSourceMappingsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listEventSourceMappingsRequest)); 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 a list of configurations for asynchronous invocation for a function. *

        *

        * To configure options for asynchronous invocation, use PutFunctionEventInvokeConfig. *

        * * @param listFunctionEventInvokeConfigsRequest * @return A Java Future containing the result of the ListFunctionEventInvokeConfigs operation returned by the * service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.ListFunctionEventInvokeConfigs * @see AWS API Documentation */ @Override public CompletableFuture listFunctionEventInvokeConfigs( ListFunctionEventInvokeConfigsRequest listFunctionEventInvokeConfigsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listFunctionEventInvokeConfigsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listFunctionEventInvokeConfigsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListFunctionEventInvokeConfigs"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListFunctionEventInvokeConfigsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListFunctionEventInvokeConfigs").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListFunctionEventInvokeConfigsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listFunctionEventInvokeConfigsRequest)); 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 a list of Lambda function URLs for the specified function. *

        * * @param listFunctionUrlConfigsRequest * @return A Java Future containing the result of the ListFunctionUrlConfigs operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.ListFunctionUrlConfigs * @see AWS * API Documentation */ @Override public CompletableFuture listFunctionUrlConfigs( ListFunctionUrlConfigsRequest listFunctionUrlConfigsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listFunctionUrlConfigsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listFunctionUrlConfigsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListFunctionUrlConfigs"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListFunctionUrlConfigsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListFunctionUrlConfigs").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListFunctionUrlConfigsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listFunctionUrlConfigsRequest)); 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 a list of Lambda functions, with the version-specific configuration of each. Lambda returns up to 50 * functions per call. *

        *

        * Set FunctionVersion to ALL to include all published versions of each function in * addition to the unpublished version. *

        * *

        * The ListFunctions operation returns a subset of the FunctionConfiguration fields. To get the * additional fields (State, StateReasonCode, StateReason, LastUpdateStatus, LastUpdateStatusReason, * LastUpdateStatusReasonCode, RuntimeVersionConfig) for a function or version, use GetFunction. *

        *
        * * @param listFunctionsRequest * @return A Java Future containing the result of the ListFunctions operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.ListFunctions * @see AWS API * Documentation */ @Override public CompletableFuture listFunctions(ListFunctionsRequest listFunctionsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listFunctionsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listFunctionsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListFunctions"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, ListFunctionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListFunctions").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListFunctionsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listFunctionsRequest)); 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); } } /** *

        * List the functions that use the specified code signing configuration. You can use this method prior to deleting a * code signing configuration, to verify that no functions are using it. *

        * * @param listFunctionsByCodeSigningConfigRequest * @return A Java Future containing the result of the ListFunctionsByCodeSigningConfig operation returned by the * service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.ListFunctionsByCodeSigningConfig * @see AWS API Documentation */ @Override public CompletableFuture listFunctionsByCodeSigningConfig( ListFunctionsByCodeSigningConfigRequest listFunctionsByCodeSigningConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listFunctionsByCodeSigningConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listFunctionsByCodeSigningConfigRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListFunctionsByCodeSigningConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, ListFunctionsByCodeSigningConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListFunctionsByCodeSigningConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListFunctionsByCodeSigningConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listFunctionsByCodeSigningConfigRequest)); 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 the versions of an Lambda * layer. Versions that have been deleted aren't listed. Specify a runtime identifier to list only * versions that indicate that they're compatible with that runtime. Specify a compatible architecture to include * only layer versions that are compatible with that architecture. *

        * * @param listLayerVersionsRequest * @return A Java Future containing the result of the ListLayerVersions operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.ListLayerVersions * @see AWS API * Documentation */ @Override public CompletableFuture listLayerVersions(ListLayerVersionsRequest listLayerVersionsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listLayerVersionsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listLayerVersionsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListLayerVersions"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListLayerVersionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListLayerVersions").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListLayerVersionsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listLayerVersionsRequest)); 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 Lambda layers and shows * information about the latest version of each. Specify a runtime identifier to list only * layers that indicate that they're compatible with that runtime. Specify a compatible architecture to include only * layers that are compatible with that instruction set architecture. *

        * * @param listLayersRequest * @return A Java Future containing the result of the ListLayers operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.ListLayers * @see AWS API * Documentation */ @Override public CompletableFuture listLayers(ListLayersRequest listLayersRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listLayersRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listLayersRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListLayers"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, ListLayersResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("ListLayers") .withProtocolMetadata(protocolMetadata) .withMarshaller(new ListLayersRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listLayersRequest)); 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 a list of provisioned concurrency configurations for a function. *

        * * @param listProvisionedConcurrencyConfigsRequest * @return A Java Future containing the result of the ListProvisionedConcurrencyConfigs operation returned by the * service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.ListProvisionedConcurrencyConfigs * @see AWS API Documentation */ @Override public CompletableFuture listProvisionedConcurrencyConfigs( ListProvisionedConcurrencyConfigsRequest listProvisionedConcurrencyConfigsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listProvisionedConcurrencyConfigsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listProvisionedConcurrencyConfigsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListProvisionedConcurrencyConfigs"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, ListProvisionedConcurrencyConfigsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListProvisionedConcurrencyConfigs").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListProvisionedConcurrencyConfigsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listProvisionedConcurrencyConfigsRequest)); 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 a function, event source mapping, or code signing configuration's tags. You can also view funciton tags with * GetFunction. *

        * * @param listTagsRequest * @return A Java Future containing the result of the ListTags operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.ListTags * @see AWS API * Documentation */ @Override public CompletableFuture listTags(ListTagsRequest listTagsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listTagsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listTagsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListTags"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, ListTagsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("ListTags") .withProtocolMetadata(protocolMetadata) .withMarshaller(new ListTagsRequestMarshaller(protocolFactory)).withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration) .withMetricCollector(apiCallMetricCollector).withInput(listTagsRequest)); 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 a list of versions, * with the version-specific configuration of each. Lambda returns up to 50 versions per call. *

        * * @param listVersionsByFunctionRequest * @return A Java Future containing the result of the ListVersionsByFunction operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.ListVersionsByFunction * @see AWS * API Documentation */ @Override public CompletableFuture listVersionsByFunction( ListVersionsByFunctionRequest listVersionsByFunctionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listVersionsByFunctionRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listVersionsByFunctionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListVersionsByFunction"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListVersionsByFunctionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListVersionsByFunction").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListVersionsByFunctionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listVersionsByFunctionRequest)); 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 an Lambda layer from * a ZIP archive. Each time you call PublishLayerVersion with the same layer name, a new version is * created. *

        *

        * Add layers to your function with CreateFunction or UpdateFunctionConfiguration. *

        * * @param publishLayerVersionRequest * @return A Java Future containing the result of the PublishLayerVersion operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • CodeStorageExceededException Your Amazon Web Services account has exceeded its maximum total code * size. For more information, see Lambda quotas.
        • *
        • 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.
        • *
        • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample LambdaAsyncClient.PublishLayerVersion * @see AWS * API Documentation */ @Override public CompletableFuture publishLayerVersion( PublishLayerVersionRequest publishLayerVersionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(publishLayerVersionRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, publishLayerVersionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PublishLayerVersion"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PublishLayerVersionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PublishLayerVersion").withProtocolMetadata(protocolMetadata) .withMarshaller(new PublishLayerVersionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(publishLayerVersionRequest)); 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 version from the * current code and configuration of a function. Use versions to create a snapshot of your function code and * configuration that doesn't change. *

        *

        * Lambda doesn't publish a version if the function's configuration and code haven't changed since the last version. * Use UpdateFunctionCode or UpdateFunctionConfiguration to update the function before publishing a * version. *

        *

        * Clients can invoke versions directly or with an alias. To create an alias, use CreateAlias. *

        * * @param publishVersionRequest * @return A Java Future containing the result of the PublishVersion operation returned by the service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • ServiceException The Lambda service encountered an internal error.
        • *
        • ResourceNotFoundException The resource specified in the request does not exist.
        • *
        • InvalidParameterValueException One of the parameters in the request is not valid.
        • *
        • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
        • *
        • CodeStorageExceededException Your Amazon Web Services account has exceeded its maximum total code * size. For more information, see Lambda quotas.
        • *
        • PreconditionFailedException The RevisionId provided does not match the latest RevisionId for the * Lambda function or alias.

          *
            *
          • *

            * For AddPermission and RemovePermission API operations: Call GetPolicy to retrieve the * latest RevisionId for your resource. *

            *
          • *
          • *

            * For all other API operations: Call GetFunction or GetAlias to retrieve * the latest RevisionId for your resource. *

            *
          • *
          • ResourceConflictException The resource already exists, or another operation is in progress.
          • *
          • 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.
          • *
          • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
          • *
          * @sample LambdaAsyncClient.PublishVersion * @see AWS API * Documentation */ @Override public CompletableFuture publishVersion(PublishVersionRequest publishVersionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(publishVersionRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, publishVersionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PublishVersion"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PublishVersionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PublishVersion").withProtocolMetadata(protocolMetadata) .withMarshaller(new PublishVersionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(publishVersionRequest)); 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); } } /** *

          * Update the code signing configuration for the function. Changes to the code signing configuration take effect the * next time a user tries to deploy a code package to the function. *

          * * @param putFunctionCodeSigningConfigRequest * @return A Java Future containing the result of the PutFunctionCodeSigningConfig operation returned by the * service.
          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
            *
          • ServiceException The Lambda service encountered an internal error.
          • *
          • InvalidParameterValueException One of the parameters in the request is not valid.
          • *
          • ResourceNotFoundException The resource specified in the request does not exist.
          • *
          • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
          • *
          • ResourceConflictException The resource already exists, or another operation is in progress.
          • *
          • CodeSigningConfigNotFoundException The specified code signing configuration does not exist.
          • *
          • 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.
          • *
          • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
          • *
          * @sample LambdaAsyncClient.PutFunctionCodeSigningConfig * @see AWS API Documentation */ @Override public CompletableFuture putFunctionCodeSigningConfig( PutFunctionCodeSigningConfigRequest putFunctionCodeSigningConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putFunctionCodeSigningConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putFunctionCodeSigningConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutFunctionCodeSigningConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutFunctionCodeSigningConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutFunctionCodeSigningConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutFunctionCodeSigningConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putFunctionCodeSigningConfigRequest)); 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); } } /** *

          * Sets the maximum number of simultaneous executions for a function, and reserves capacity for that concurrency * level. *

          *

          * Concurrency settings apply to the function as a whole, including all published versions and the unpublished * version. Reserving concurrency both ensures that your function has capacity to process the specified number of * events simultaneously, and prevents it from scaling beyond that level. Use GetFunction to see the current * setting for a function. *

          *

          * Use GetAccountSettings to see your Regional concurrency limit. You can reserve concurrency for as many * functions as you like, as long as you leave at least 100 simultaneous executions unreserved for functions that * aren't configured with a per-function limit. For more information, see Lambda function scaling. *

          * * @param putFunctionConcurrencyRequest * @return A Java Future containing the result of the PutFunctionConcurrency operation returned by the service.
          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
            *
          • ServiceException The Lambda service encountered an internal error.
          • *
          • InvalidParameterValueException One of the parameters in the request is not valid.
          • *
          • ResourceNotFoundException The resource specified in the request does not exist.
          • *
          • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
          • *
          • ResourceConflictException The resource already exists, or another operation is in progress.
          • *
          • 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.
          • *
          • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
          • *
          * @sample LambdaAsyncClient.PutFunctionConcurrency * @see AWS * API Documentation */ @Override public CompletableFuture putFunctionConcurrency( PutFunctionConcurrencyRequest putFunctionConcurrencyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putFunctionConcurrencyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putFunctionConcurrencyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutFunctionConcurrency"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutFunctionConcurrencyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutFunctionConcurrency").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutFunctionConcurrencyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putFunctionConcurrencyRequest)); 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); } } /** *

          * Configures options for asynchronous * invocation on a function, version, or alias. If a configuration already exists for a function, version, or * alias, this operation overwrites it. If you exclude any settings, they are removed. To set one option without * affecting existing settings for other options, use UpdateFunctionEventInvokeConfig. *

          *

          * By default, Lambda retries an asynchronous invocation twice if the function returns an error. It retains events * in a queue for up to six hours. When an event fails all processing attempts or stays in the asynchronous * invocation queue for too long, Lambda discards it. To retain discarded events, configure a dead-letter queue with * UpdateFunctionConfiguration. *

          *

          * To send an invocation record to a queue, topic, function, or event bus, specify a destination. You can configure separate destinations for successful invocations (on-success) and events that * fail all processing attempts (on-failure). You can configure destinations in addition to or instead of a * dead-letter queue. *

          * * @param putFunctionEventInvokeConfigRequest * @return A Java Future containing the result of the PutFunctionEventInvokeConfig operation returned by the * service.
          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
            *
          • ServiceException The Lambda service encountered an internal error.
          • *
          • ResourceNotFoundException The resource specified in the request does not exist.
          • *
          • InvalidParameterValueException One of the parameters in the request is not valid.
          • *
          • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
          • *
          • ResourceConflictException The resource already exists, or another operation is in progress.
          • *
          • 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.
          • *
          • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
          • *
          * @sample LambdaAsyncClient.PutFunctionEventInvokeConfig * @see AWS API Documentation */ @Override public CompletableFuture putFunctionEventInvokeConfig( PutFunctionEventInvokeConfigRequest putFunctionEventInvokeConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putFunctionEventInvokeConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putFunctionEventInvokeConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutFunctionEventInvokeConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutFunctionEventInvokeConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutFunctionEventInvokeConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutFunctionEventInvokeConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putFunctionEventInvokeConfigRequest)); 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); } } /** *

          * Sets your function's recursive * loop detection configuration. *

          *

          * When you configure a Lambda function to output to the same service or resource that invokes the function, it's * possible to create an infinite recursive loop. For example, a Lambda function might write a message to an Amazon * Simple Queue Service (Amazon SQS) queue, which then invokes the same function. This invocation causes the * function to write another message to the queue, which in turn invokes the function again. *

          *

          * Lambda can detect certain types of recursive loops shortly after they occur. When Lambda detects a recursive loop * and your function's recursive loop detection configuration is set to Terminate, it stops your * function being invoked and notifies you. *

          * * @param putFunctionRecursionConfigRequest * @return A Java Future containing the result of the PutFunctionRecursionConfig operation returned by the service.
          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
            *
          • InvalidParameterValueException One of the parameters in the request is not valid.
          • *
          • ResourceConflictException The resource already exists, or another operation is in progress.
          • *
          • ResourceNotFoundException The resource specified in the request does not exist.
          • *
          • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
          • *
          • ServiceException The Lambda service encountered an internal error.
          • *
          • 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.
          • *
          • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
          • *
          * @sample LambdaAsyncClient.PutFunctionRecursionConfig * @see AWS API Documentation */ @Override public CompletableFuture putFunctionRecursionConfig( PutFunctionRecursionConfigRequest putFunctionRecursionConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putFunctionRecursionConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putFunctionRecursionConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutFunctionRecursionConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutFunctionRecursionConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutFunctionRecursionConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutFunctionRecursionConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putFunctionRecursionConfigRequest)); 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); } } /** *

          * Adds a provisioned concurrency configuration to a function's alias or version. *

          * * @param putProvisionedConcurrencyConfigRequest * @return A Java Future containing the result of the PutProvisionedConcurrencyConfig operation returned by the * service.
          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
            *
          • InvalidParameterValueException One of the parameters in the request is not valid.
          • *
          • ResourceNotFoundException The resource specified in the request does not exist.
          • *
          • ResourceConflictException The resource already exists, or another operation is in progress.
          • *
          • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
          • *
          • ServiceException The Lambda service encountered an internal error.
          • *
          • 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.
          • *
          • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
          • *
          * @sample LambdaAsyncClient.PutProvisionedConcurrencyConfig * @see AWS API Documentation */ @Override public CompletableFuture putProvisionedConcurrencyConfig( PutProvisionedConcurrencyConfigRequest putProvisionedConcurrencyConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putProvisionedConcurrencyConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putProvisionedConcurrencyConfigRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutProvisionedConcurrencyConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutProvisionedConcurrencyConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutProvisionedConcurrencyConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutProvisionedConcurrencyConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putProvisionedConcurrencyConfigRequest)); 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); } } /** * *

          * The option to configure public-access settings, and to use the PutPublicAccessBlock and GetPublicAccessBlock * APIs, won't be available in all Amazon Web Services Regions until September 30, 2024. *

          *
          *

          * Configure your function's public-access settings. *

          *

          * To control public access to a Lambda function, you can choose whether to allow the creation of resource-based * policies that allow public access to that function. You can also block public access to a function, even if * it has an existing resource-based policy that allows it. *

          * * @param putPublicAccessBlockConfigRequest * @return A Java Future containing the result of the PutPublicAccessBlockConfig operation returned by the service.
          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
            *
          • ServiceException The Lambda service encountered an internal error.
          • *
          • ResourceNotFoundException The resource specified in the request does not exist.
          • *
          • ResourceConflictException The resource already exists, or another operation is in progress.
          • *
          • InvalidParameterValueException One of the parameters in the request is not valid.
          • *
          • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
          • *
          • 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.
          • *
          • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
          • *
          * @sample LambdaAsyncClient.PutPublicAccessBlockConfig * @see AWS API Documentation */ @Override public CompletableFuture putPublicAccessBlockConfig( PutPublicAccessBlockConfigRequest putPublicAccessBlockConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putPublicAccessBlockConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putPublicAccessBlockConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutPublicAccessBlockConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutPublicAccessBlockConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutPublicAccessBlockConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutPublicAccessBlockConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putPublicAccessBlockConfigRequest)); 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); } } /** * *

          * The option to create and modify full JSON resource-based policies, and to use the PutResourcePolicy, * GetResourcePolicy, and DeleteResourcePolicy APIs, won't be available in all Amazon Web Services Regions until * September 30, 2024. *

          *
          *

          * Adds a resource-based * policy to a function. You can use resource-based policies to grant access to other Amazon Web Services * accounts, organizations, or * services. * Resource-based policies apply to a single function, version, or alias. *

          * *

          * Adding a resource-based policy using this API action replaces any existing policy you've previously created. This * means that if you've previously added resource-based permissions to a function using the AddPermission * action, those permissions will be overwritten by your new policy. *

          *
          * * @param putResourcePolicyRequest * @return A Java Future containing the result of the PutResourcePolicy operation returned by the service.
          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
            *
          • ServiceException The Lambda service encountered an internal error.
          • *
          • ResourceNotFoundException The resource specified in the request does not exist.
          • *
          • ResourceConflictException The resource already exists, or another operation is in progress.
          • *
          • InvalidParameterValueException One of the parameters in the request is not valid.
          • *
          • PolicyLengthExceededException The permissions policy for the resource is too large. For more * information, see Lambda * quotas.
          • *
          • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
          • *
          • PreconditionFailedException The RevisionId provided does not match the latest RevisionId for the * Lambda function or alias.

            *
              *
            • *

              * For AddPermission and RemovePermission API operations: Call GetPolicy to retrieve the * latest RevisionId for your resource. *

              *
            • *
            • *

              * For all other API operations: Call GetFunction or GetAlias to retrieve * the latest RevisionId for your resource. *

              *
            • *
            • PublicPolicyException Lambda prevented your policy from being created because it would grant public * access to your function. If you intended to create a public policy, use the * PutPublicAccessBlockConfig API action to configure your function's public-access settings to allow * public policies.
            • *
            • 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.
            • *
            • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
            • *
            * @sample LambdaAsyncClient.PutResourcePolicy * @see AWS API * Documentation */ @Override public CompletableFuture putResourcePolicy(PutResourcePolicyRequest putResourcePolicyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putResourcePolicyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putResourcePolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutResourcePolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutResourcePolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutResourcePolicy").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutResourcePolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putResourcePolicyRequest)); 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); } } /** *

            * Sets the runtime management configuration for a function's version. For more information, see Runtime updates. *

            * * @param putRuntimeManagementConfigRequest * @return A Java Future containing the result of the PutRuntimeManagementConfig operation returned by the service.
            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
              *
            • ServiceException The Lambda service encountered an internal error.
            • *
            • ResourceNotFoundException The resource specified in the request does not exist.
            • *
            • ResourceConflictException The resource already exists, or another operation is in progress.
            • *
            • InvalidParameterValueException One of the parameters in the request is not valid.
            • *
            • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
            • *
            • 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.
            • *
            • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
            • *
            * @sample LambdaAsyncClient.PutRuntimeManagementConfig * @see AWS API Documentation */ @Override public CompletableFuture putRuntimeManagementConfig( PutRuntimeManagementConfigRequest putRuntimeManagementConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putRuntimeManagementConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putRuntimeManagementConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutRuntimeManagementConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutRuntimeManagementConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutRuntimeManagementConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutRuntimeManagementConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putRuntimeManagementConfigRequest)); 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 a statement from the permissions policy for a version of an Lambda layer. For more * information, see AddLayerVersionPermission. *

            * * @param removeLayerVersionPermissionRequest * @return A Java Future containing the result of the RemoveLayerVersionPermission operation returned by the * service.
            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
              *
            • ServiceException The Lambda service encountered an internal error.
            • *
            • ResourceNotFoundException The resource specified in the request does not exist.
            • *
            • InvalidParameterValueException One of the parameters in the request is not valid.
            • *
            • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
            • *
            • PreconditionFailedException The RevisionId provided does not match the latest RevisionId for the * Lambda function or alias.

              *
                *
              • *

                * For AddPermission and RemovePermission API operations: Call GetPolicy to retrieve the * latest RevisionId for your resource. *

                *
              • *
              • *

                * For all other API operations: Call GetFunction or GetAlias to retrieve * the latest RevisionId for your resource. *

                *
              • *
              • 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.
              • *
              • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample LambdaAsyncClient.RemoveLayerVersionPermission * @see AWS API Documentation */ @Override public CompletableFuture removeLayerVersionPermission( RemoveLayerVersionPermissionRequest removeLayerVersionPermissionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(removeLayerVersionPermissionRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, removeLayerVersionPermissionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RemoveLayerVersionPermission"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RemoveLayerVersionPermissionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("RemoveLayerVersionPermission").withProtocolMetadata(protocolMetadata) .withMarshaller(new RemoveLayerVersionPermissionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(removeLayerVersionPermissionRequest)); 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); } } /** *

              * Revokes function-use permission from an Amazon Web Servicesservice or another Amazon Web Services account. You * can get the ID of the statement from the output of GetPolicy. *

              * * @param removePermissionRequest * @return A Java Future containing the result of the RemovePermission operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ServiceException The Lambda service encountered an internal error.
              • *
              • ResourceNotFoundException The resource specified in the request does not exist.
              • *
              • InvalidParameterValueException One of the parameters in the request is not valid.
              • *
              • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
              • *
              • PreconditionFailedException The RevisionId provided does not match the latest RevisionId for the * Lambda function or alias.

                *
                  *
                • *

                  * For AddPermission and RemovePermission API operations: Call GetPolicy to retrieve the * latest RevisionId for your resource. *

                  *
                • *
                • *

                  * For all other API operations: Call GetFunction or GetAlias to retrieve * the latest RevisionId for your resource. *

                  *
                • *
                • PublicPolicyException Lambda prevented your policy from being created because it would grant public * access to your function. If you intended to create a public policy, use the * PutPublicAccessBlockConfig API action to configure your function's public-access settings to allow * public policies.
                • *
                • 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.
                • *
                • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                • *
                * @sample LambdaAsyncClient.RemovePermission * @see AWS API * Documentation */ @Override public CompletableFuture removePermission(RemovePermissionRequest removePermissionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(removePermissionRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, removePermissionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RemovePermission"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RemovePermissionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("RemovePermission").withProtocolMetadata(protocolMetadata) .withMarshaller(new RemovePermissionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(removePermissionRequest)); 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); } } /** *

                * Adds tags to a function, event source * mapping, or code signing configuration. *

                * * @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. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                  *
                • ServiceException The Lambda service encountered an internal error.
                • *
                • ResourceNotFoundException The resource specified in the request does not exist.
                • *
                • InvalidParameterValueException One of the parameters in the request is not valid.
                • *
                • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
                • *
                • ResourceConflictException The resource already exists, or another operation is in progress.
                • *
                • 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.
                • *
                • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                • *
                * @sample LambdaAsyncClient.TagResource * @see AWS API * Documentation */ @Override public CompletableFuture tagResource(TagResourceRequest tagResourceRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(tagResourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, tagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); 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").withProtocolMetadata(protocolMetadata) .withMarshaller(new TagResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).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 a function, event * source mapping, or code signing configuration. *

                * * @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. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                  *
                • ServiceException The Lambda service encountered an internal error.
                • *
                • ResourceNotFoundException The resource specified in the request does not exist.
                • *
                • InvalidParameterValueException One of the parameters in the request is not valid.
                • *
                • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
                • *
                • ResourceConflictException The resource already exists, or another operation is in progress.
                • *
                • 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.
                • *
                • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                • *
                * @sample LambdaAsyncClient.UntagResource * @see AWS API * Documentation */ @Override public CompletableFuture untagResource(UntagResourceRequest untagResourceRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(untagResourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, untagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); 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").withProtocolMetadata(protocolMetadata) .withMarshaller(new UntagResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).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 configuration of a Lambda function alias. *

                * * @param updateAliasRequest * @return A Java Future containing the result of the UpdateAlias operation returned by the service.
                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                  *
                • ServiceException The Lambda service encountered an internal error.
                • *
                • ResourceNotFoundException The resource specified in the request does not exist.
                • *
                • InvalidParameterValueException One of the parameters in the request is not valid.
                • *
                • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
                • *
                • PreconditionFailedException The RevisionId provided does not match the latest RevisionId for the * Lambda function or alias.

                  *
                    *
                  • *

                    * For AddPermission and RemovePermission API operations: Call GetPolicy to retrieve the * latest RevisionId for your resource. *

                    *
                  • *
                  • *

                    * For all other API operations: Call GetFunction or GetAlias to retrieve * the latest RevisionId for your resource. *

                    *
                  • *
                  • ResourceConflictException The resource already exists, or another operation is in progress.
                  • *
                  • 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.
                  • *
                  • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                  • *
                  * @sample LambdaAsyncClient.UpdateAlias * @see AWS API * Documentation */ @Override public CompletableFuture updateAlias(UpdateAliasRequest updateAliasRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateAliasRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateAliasRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateAlias"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, UpdateAliasResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateAlias").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateAliasRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateAliasRequest)); 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); } } /** *

                  * Update the code signing configuration. Changes to the code signing configuration take effect the next time a user * tries to deploy a code package to the function. *

                  * * @param updateCodeSigningConfigRequest * @return A Java Future containing the result of the UpdateCodeSigningConfig operation returned by the service.
                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                    *
                  • ServiceException The Lambda service encountered an internal error.
                  • *
                  • InvalidParameterValueException One of the parameters in the request is not valid.
                  • *
                  • ResourceNotFoundException The resource specified in the request does not exist.
                  • *
                  • 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.
                  • *
                  • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                  • *
                  * @sample LambdaAsyncClient.UpdateCodeSigningConfig * @see AWS API Documentation */ @Override public CompletableFuture updateCodeSigningConfig( UpdateCodeSigningConfigRequest updateCodeSigningConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateCodeSigningConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateCodeSigningConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateCodeSigningConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateCodeSigningConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateCodeSigningConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateCodeSigningConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateCodeSigningConfigRequest)); 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 an event source mapping. You can change the function that Lambda invokes, or pause invocation and resume * later from the same location. *

                  *

                  * For details about how to configure different event sources, see the following topics. *

                  * *

                  * The following error handling options are available only for stream sources (DynamoDB and Kinesis): *

                  *
                    *
                  • *

                    * BisectBatchOnFunctionError – If the function returns an error, split the batch in two and retry. *

                    *
                  • *
                  • *

                    * DestinationConfig – Send discarded records to an Amazon SQS queue or Amazon SNS topic. *

                    *
                  • *
                  • *

                    * MaximumRecordAgeInSeconds – Discard records older than the specified age. The default value is * infinite (-1). When set to infinite (-1), failed records are retried until the record expires *

                    *
                  • *
                  • *

                    * MaximumRetryAttempts – Discard records after the specified number of retries. The default value is * infinite (-1). When set to infinite (-1), failed records are retried until the record expires. *

                    *
                  • *
                  • *

                    * ParallelizationFactor – Process multiple batches from each shard concurrently. *

                    *
                  • *
                  *

                  * For information about which configuration parameters apply to each event source, see the following topics. *

                  * * * @param updateEventSourceMappingRequest * @return A Java Future containing the result of the UpdateEventSourceMapping operation returned by the service.
                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                    *
                  • ServiceException The Lambda service encountered an internal error.
                  • *
                  • ResourceNotFoundException The resource specified in the request does not exist.
                  • *
                  • InvalidParameterValueException One of the parameters in the request is not valid.
                  • *
                  • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
                  • *
                  • ResourceConflictException The resource already exists, or another operation is in progress.
                  • *
                  • ResourceInUseException The operation conflicts with the resource's availability. For example, you * tried to update an event source mapping in the CREATING state, or you tried to delete an event source * mapping currently UPDATING.
                  • *
                  • 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.
                  • *
                  • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                  • *
                  * @sample LambdaAsyncClient.UpdateEventSourceMapping * @see AWS API Documentation */ @Override public CompletableFuture updateEventSourceMapping( UpdateEventSourceMappingRequest updateEventSourceMappingRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateEventSourceMappingRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateEventSourceMappingRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateEventSourceMapping"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateEventSourceMappingResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateEventSourceMapping").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateEventSourceMappingRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateEventSourceMappingRequest)); 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 a Lambda function's code. If code signing is enabled for the function, the code package must be signed by * a trusted publisher. For more information, see Configuring code signing for * Lambda. *

                  *

                  * If the function's package type is Image, then you must specify the code package in * ImageUri as the URI of a container image in the Amazon ECR * registry. *

                  *

                  * If the function's package type is Zip, then you must specify the deployment package as a .zip * file archive. Enter the Amazon S3 bucket and key of the code .zip file location. You can also provide the * function code inline using the ZipFile field. *

                  *

                  * The code in the deployment package must be compatible with the target instruction set architecture of the * function (x86-64 or arm64). *

                  *

                  * The function's code is locked when you publish a version. You can't modify the code of a published version, only * the unpublished version. *

                  * *

                  * For a function defined as a container image, Lambda resolves the image tag to an image digest. In Amazon ECR, if * you update the image tag to a new image, Lambda does not automatically update the function. *

                  *
                  * * @param updateFunctionCodeRequest * @return A Java Future containing the result of the UpdateFunctionCode operation returned by the service.
                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                    *
                  • ServiceException The Lambda service encountered an internal error.
                  • *
                  • ResourceNotFoundException The resource specified in the request does not exist.
                  • *
                  • InvalidParameterValueException One of the parameters in the request is not valid.
                  • *
                  • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
                  • *
                  • CodeStorageExceededException Your Amazon Web Services account has exceeded its maximum total code * size. For more information, see Lambda quotas.
                  • *
                  • PreconditionFailedException The RevisionId provided does not match the latest RevisionId for the * Lambda function or alias.

                    *
                      *
                    • *

                      * For AddPermission and RemovePermission API operations: Call GetPolicy to retrieve the * latest RevisionId for your resource. *

                      *
                    • *
                    • *

                      * For all other API operations: Call GetFunction or GetAlias to retrieve * the latest RevisionId for your resource. *

                      *
                    • *
                    • ResourceConflictException The resource already exists, or another operation is in progress.
                    • *
                    • CodeVerificationFailedException The code signature failed one or more of the validation checks for * signature mismatch or expiry, and the code signing policy is set to ENFORCE. Lambda blocks the * deployment.
                    • *
                    • InvalidCodeSignatureException The code signature failed the integrity check. If the integrity check * fails, then Lambda blocks deployment, even if the code signing policy is set to WARN.
                    • *
                    • CodeSigningConfigNotFoundException The specified code signing configuration does not exist.
                    • *
                    • 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.
                    • *
                    • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                    • *
                    * @sample LambdaAsyncClient.UpdateFunctionCode * @see AWS API * Documentation */ @Override public CompletableFuture updateFunctionCode(UpdateFunctionCodeRequest updateFunctionCodeRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateFunctionCodeRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateFunctionCodeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateFunctionCode"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateFunctionCodeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateFunctionCode").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateFunctionCodeRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateFunctionCodeRequest)); 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); } } /** *

                    * Modify the version-specific settings of a Lambda function. *

                    *

                    * When you update a function, Lambda provisions an instance of the function and its supporting resources. If your * function connects to a VPC, this process can take a minute. During this time, you can't modify the function, but * you can still invoke it. The LastUpdateStatus, LastUpdateStatusReason, and * LastUpdateStatusReasonCode fields in the response from GetFunctionConfiguration indicate when * the update is complete and the function is processing events with the new configuration. For more information, * see Lambda function states. *

                    *

                    * These settings can vary between versions of a function and are locked when you publish a version. You can't * modify the configuration of a published version, only the unpublished version. *

                    *

                    * To configure function concurrency, use PutFunctionConcurrency. To grant invoke permissions to an Amazon * Web Services account or Amazon Web Servicesservice, use AddPermission. *

                    * * @param updateFunctionConfigurationRequest * @return A Java Future containing the result of the UpdateFunctionConfiguration operation returned by the service.
                    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                      *
                    • ServiceException The Lambda service encountered an internal error.
                    • *
                    • ResourceNotFoundException The resource specified in the request does not exist.
                    • *
                    • InvalidParameterValueException One of the parameters in the request is not valid.
                    • *
                    • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
                    • *
                    • ResourceConflictException The resource already exists, or another operation is in progress.
                    • *
                    • PreconditionFailedException The RevisionId provided does not match the latest RevisionId for the * Lambda function or alias.

                      *
                        *
                      • *

                        * For AddPermission and RemovePermission API operations: Call GetPolicy to retrieve the * latest RevisionId for your resource. *

                        *
                      • *
                      • *

                        * For all other API operations: Call GetFunction or GetAlias to retrieve * the latest RevisionId for your resource. *

                        *
                      • *
                      • CodeVerificationFailedException The code signature failed one or more of the validation checks for * signature mismatch or expiry, and the code signing policy is set to ENFORCE. Lambda blocks the * deployment.
                      • *
                      • InvalidCodeSignatureException The code signature failed the integrity check. If the integrity check * fails, then Lambda blocks deployment, even if the code signing policy is set to WARN.
                      • *
                      • CodeSigningConfigNotFoundException The specified code signing configuration does not exist.
                      • *
                      • 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.
                      • *
                      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                      • *
                      * @sample LambdaAsyncClient.UpdateFunctionConfiguration * @see AWS API Documentation */ @Override public CompletableFuture updateFunctionConfiguration( UpdateFunctionConfigurationRequest updateFunctionConfigurationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateFunctionConfigurationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateFunctionConfigurationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateFunctionConfiguration"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateFunctionConfigurationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateFunctionConfiguration").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateFunctionConfigurationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateFunctionConfigurationRequest)); 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 configuration for asynchronous invocation for a function, version, or alias. *

                      *

                      * To configure options for asynchronous invocation, use PutFunctionEventInvokeConfig. *

                      * * @param updateFunctionEventInvokeConfigRequest * @return A Java Future containing the result of the UpdateFunctionEventInvokeConfig operation returned by the * service.
                      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                        *
                      • ServiceException The Lambda service encountered an internal error.
                      • *
                      • ResourceNotFoundException The resource specified in the request does not exist.
                      • *
                      • InvalidParameterValueException One of the parameters in the request is not valid.
                      • *
                      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
                      • *
                      • ResourceConflictException The resource already exists, or another operation is in progress.
                      • *
                      • 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.
                      • *
                      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                      • *
                      * @sample LambdaAsyncClient.UpdateFunctionEventInvokeConfig * @see AWS API Documentation */ @Override public CompletableFuture updateFunctionEventInvokeConfig( UpdateFunctionEventInvokeConfigRequest updateFunctionEventInvokeConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateFunctionEventInvokeConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateFunctionEventInvokeConfigRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateFunctionEventInvokeConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateFunctionEventInvokeConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateFunctionEventInvokeConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateFunctionEventInvokeConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateFunctionEventInvokeConfigRequest)); 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 configuration for a Lambda function URL. *

                      * * @param updateFunctionUrlConfigRequest * @return A Java Future containing the result of the UpdateFunctionUrlConfig operation returned by the service.
                      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                        *
                      • ResourceConflictException The resource already exists, or another operation is in progress.
                      • *
                      • ResourceNotFoundException The resource specified in the request does not exist.
                      • *
                      • InvalidParameterValueException One of the parameters in the request is not valid.
                      • *
                      • ServiceException The Lambda service encountered an internal error.
                      • *
                      • TooManyRequestsException The request throughput limit was exceeded. For more information, see Lambda * quotas.
                      • *
                      • 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.
                      • *
                      • LambdaException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                      • *
                      * @sample LambdaAsyncClient.UpdateFunctionUrlConfig * @see AWS API Documentation */ @Override public CompletableFuture updateFunctionUrlConfig( UpdateFunctionUrlConfigRequest updateFunctionUrlConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(updateFunctionUrlConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, updateFunctionUrlConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Lambda"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UpdateFunctionUrlConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UpdateFunctionUrlConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UpdateFunctionUrlConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new UpdateFunctionUrlConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(updateFunctionUrlConfigRequest)); 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 LambdaAsyncWaiter waiter() { return LambdaAsyncWaiter.builder().client(this).scheduledExecutorService(executorService).build(); } @Override public final LambdaServiceClientConfiguration serviceClientConfiguration() { return new LambdaServiceClientConfigurationBuilder(this.clientConfiguration.toBuilder()).build(); } @Override public final String serviceName() { return SERVICE_NAME; } private > T init(T builder) { return builder .clientConfiguration(clientConfiguration) .defaultServiceExceptionSupplier(LambdaException::builder) .protocol(AwsJsonProtocol.REST_JSON) .protocolVersion("1.1") .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceNotReadyException") .exceptionBuilderSupplier(ResourceNotReadyException::builder).httpStatusCode(502).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("KMSInvalidStateException") .exceptionBuilderSupplier(KmsInvalidStateException::builder).httpStatusCode(502).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("KMSNotFoundException") .exceptionBuilderSupplier(KmsNotFoundException::builder).httpStatusCode(502).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("SubnetIPAddressLimitReachedException") .exceptionBuilderSupplier(SubnetIpAddressLimitReachedException::builder).httpStatusCode(502) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidZipFileException") .exceptionBuilderSupplier(InvalidZipFileException::builder).httpStatusCode(502).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("SnapStartNotReadyException") .exceptionBuilderSupplier(SnapStartNotReadyException::builder).httpStatusCode(409).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidCodeSignatureException") .exceptionBuilderSupplier(InvalidCodeSignatureException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidRuntimeException") .exceptionBuilderSupplier(InvalidRuntimeException::builder).httpStatusCode(502).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("EFSMountFailureException") .exceptionBuilderSupplier(EfsMountFailureException::builder).httpStatusCode(403).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("SnapStartException") .exceptionBuilderSupplier(SnapStartException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ENILimitReachedException") .exceptionBuilderSupplier(EniLimitReachedException::builder).httpStatusCode(502).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceNotFoundException") .exceptionBuilderSupplier(ResourceNotFoundException::builder).httpStatusCode(404).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceConflictException") .exceptionBuilderSupplier(ResourceConflictException::builder).httpStatusCode(409).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("EC2ThrottledException") .exceptionBuilderSupplier(Ec2ThrottledException::builder).httpStatusCode(502).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("KMSAccessDeniedException") .exceptionBuilderSupplier(KmsAccessDeniedException::builder).httpStatusCode(502).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("PreconditionFailedException") .exceptionBuilderSupplier(PreconditionFailedException::builder).httpStatusCode(412).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("EFSMountTimeoutException") .exceptionBuilderSupplier(EfsMountTimeoutException::builder).httpStatusCode(408).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("UnsupportedMediaTypeException") .exceptionBuilderSupplier(UnsupportedMediaTypeException::builder).httpStatusCode(415).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("PublicPolicyException") .exceptionBuilderSupplier(PublicPolicyException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidParameterValueException") .exceptionBuilderSupplier(InvalidParameterValueException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("EC2AccessDeniedException") .exceptionBuilderSupplier(Ec2AccessDeniedException::builder).httpStatusCode(502).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceInUseException") .exceptionBuilderSupplier(ResourceInUseException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("PolicyLengthExceededException") .exceptionBuilderSupplier(PolicyLengthExceededException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ServiceException") .exceptionBuilderSupplier(ServiceException::builder).httpStatusCode(500).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("SnapStartTimeoutException") .exceptionBuilderSupplier(SnapStartTimeoutException::builder).httpStatusCode(408).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidRequestContentException") .exceptionBuilderSupplier(InvalidRequestContentException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("EFSMountConnectivityException") .exceptionBuilderSupplier(EfsMountConnectivityException::builder).httpStatusCode(408).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("CodeSigningConfigNotFoundException") .exceptionBuilderSupplier(CodeSigningConfigNotFoundException::builder).httpStatusCode(404) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ProvisionedConcurrencyConfigNotFoundException") .exceptionBuilderSupplier(ProvisionedConcurrencyConfigNotFoundException::builder) .httpStatusCode(404).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("EFSIOException").exceptionBuilderSupplier(EfsioException::builder) .httpStatusCode(410).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("RecursiveInvocationException") .exceptionBuilderSupplier(RecursiveInvocationException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidSubnetIDException") .exceptionBuilderSupplier(InvalidSubnetIdException::builder).httpStatusCode(502).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("CodeStorageExceededException") .exceptionBuilderSupplier(CodeStorageExceededException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidSecurityGroupIDException") .exceptionBuilderSupplier(InvalidSecurityGroupIdException::builder).httpStatusCode(502).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("KMSDisabledException") .exceptionBuilderSupplier(KmsDisabledException::builder).httpStatusCode(502).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("CodeVerificationFailedException") .exceptionBuilderSupplier(CodeVerificationFailedException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("EC2UnexpectedException") .exceptionBuilderSupplier(Ec2UnexpectedException::builder).httpStatusCode(502).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("RequestTooLargeException") .exceptionBuilderSupplier(RequestTooLargeException::builder).httpStatusCode(413).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("TooManyRequestsException") .exceptionBuilderSupplier(TooManyRequestsException::builder).httpStatusCode(429).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 void updateRetryStrategyClientConfiguration(SdkClientConfiguration.Builder configuration) { ClientOverrideConfiguration.Builder builder = configuration.asOverrideConfigurationBuilder(); RetryMode retryMode = builder.retryMode(); if (retryMode != null) { configuration.option(SdkClientOption.RETRY_STRATEGY, AwsRetryStrategy.forRetryMode(retryMode)); } else { Consumer> configurator = builder.retryStrategyConfigurator(); if (configurator != null) { RetryStrategy.Builder defaultBuilder = AwsRetryStrategy.defaultRetryStrategy().toBuilder(); configurator.accept(defaultBuilder); configuration.option(SdkClientOption.RETRY_STRATEGY, defaultBuilder.build()); } else { RetryStrategy retryStrategy = builder.retryStrategy(); if (retryStrategy != null) { configuration.option(SdkClientOption.RETRY_STRATEGY, retryStrategy); } } } configuration.option(SdkClientOption.CONFIGURED_RETRY_MODE, null); configuration.option(SdkClientOption.CONFIGURED_RETRY_STRATEGY, null); configuration.option(SdkClientOption.CONFIGURED_RETRY_CONFIGURATOR, null); } private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, SdkClientConfiguration clientConfiguration) { List plugins = request.overrideConfiguration().map(c -> c.plugins()).orElse(Collections.emptyList()); SdkClientConfiguration.Builder configuration = clientConfiguration.toBuilder(); if (plugins.isEmpty()) { return configuration.build(); } LambdaServiceClientConfigurationBuilder serviceConfigBuilder = new LambdaServiceClientConfigurationBuilder(configuration); for (SdkPlugin plugin : plugins) { plugin.configureClient(serviceConfigBuilder); } updateRetryStrategyClientConfiguration(configuration); return configuration.build(); } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } @Override public void close() { clientHandler.close(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy