
software.amazon.awssdk.services.wafv2.DefaultWafv2AsyncClient Maven / Gradle / Ivy
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
* the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package software.amazon.awssdk.services.wafv2;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
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.exception.AwsServiceException;
import software.amazon.awssdk.awscore.internal.AwsProtocolMetadata;
import software.amazon.awssdk.awscore.internal.AwsServiceProtocol;
import software.amazon.awssdk.core.RequestOverrideConfiguration;
import software.amazon.awssdk.core.SdkPlugin;
import software.amazon.awssdk.core.SdkRequest;
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientOption;
import software.amazon.awssdk.core.client.handler.AsyncClientHandler;
import software.amazon.awssdk.core.client.handler.ClientExecutionParams;
import software.amazon.awssdk.core.http.HttpResponseHandler;
import software.amazon.awssdk.core.metrics.CoreMetric;
import software.amazon.awssdk.metrics.MetricCollector;
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.metrics.NoOpMetricCollector;
import software.amazon.awssdk.protocols.core.ExceptionMetadata;
import software.amazon.awssdk.protocols.json.AwsJsonProtocol;
import software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.BaseAwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.JsonOperationMetadata;
import software.amazon.awssdk.services.wafv2.internal.Wafv2ServiceClientConfigurationBuilder;
import software.amazon.awssdk.services.wafv2.model.AssociateWebAclRequest;
import software.amazon.awssdk.services.wafv2.model.AssociateWebAclResponse;
import software.amazon.awssdk.services.wafv2.model.CheckCapacityRequest;
import software.amazon.awssdk.services.wafv2.model.CheckCapacityResponse;
import software.amazon.awssdk.services.wafv2.model.CreateApiKeyRequest;
import software.amazon.awssdk.services.wafv2.model.CreateApiKeyResponse;
import software.amazon.awssdk.services.wafv2.model.CreateIpSetRequest;
import software.amazon.awssdk.services.wafv2.model.CreateIpSetResponse;
import software.amazon.awssdk.services.wafv2.model.CreateRegexPatternSetRequest;
import software.amazon.awssdk.services.wafv2.model.CreateRegexPatternSetResponse;
import software.amazon.awssdk.services.wafv2.model.CreateRuleGroupRequest;
import software.amazon.awssdk.services.wafv2.model.CreateRuleGroupResponse;
import software.amazon.awssdk.services.wafv2.model.CreateWebAclRequest;
import software.amazon.awssdk.services.wafv2.model.CreateWebAclResponse;
import software.amazon.awssdk.services.wafv2.model.DeleteApiKeyRequest;
import software.amazon.awssdk.services.wafv2.model.DeleteApiKeyResponse;
import software.amazon.awssdk.services.wafv2.model.DeleteFirewallManagerRuleGroupsRequest;
import software.amazon.awssdk.services.wafv2.model.DeleteFirewallManagerRuleGroupsResponse;
import software.amazon.awssdk.services.wafv2.model.DeleteIpSetRequest;
import software.amazon.awssdk.services.wafv2.model.DeleteIpSetResponse;
import software.amazon.awssdk.services.wafv2.model.DeleteLoggingConfigurationRequest;
import software.amazon.awssdk.services.wafv2.model.DeleteLoggingConfigurationResponse;
import software.amazon.awssdk.services.wafv2.model.DeletePermissionPolicyRequest;
import software.amazon.awssdk.services.wafv2.model.DeletePermissionPolicyResponse;
import software.amazon.awssdk.services.wafv2.model.DeleteRegexPatternSetRequest;
import software.amazon.awssdk.services.wafv2.model.DeleteRegexPatternSetResponse;
import software.amazon.awssdk.services.wafv2.model.DeleteRuleGroupRequest;
import software.amazon.awssdk.services.wafv2.model.DeleteRuleGroupResponse;
import software.amazon.awssdk.services.wafv2.model.DeleteWebAclRequest;
import software.amazon.awssdk.services.wafv2.model.DeleteWebAclResponse;
import software.amazon.awssdk.services.wafv2.model.DescribeAllManagedProductsRequest;
import software.amazon.awssdk.services.wafv2.model.DescribeAllManagedProductsResponse;
import software.amazon.awssdk.services.wafv2.model.DescribeManagedProductsByVendorRequest;
import software.amazon.awssdk.services.wafv2.model.DescribeManagedProductsByVendorResponse;
import software.amazon.awssdk.services.wafv2.model.DescribeManagedRuleGroupRequest;
import software.amazon.awssdk.services.wafv2.model.DescribeManagedRuleGroupResponse;
import software.amazon.awssdk.services.wafv2.model.DisassociateWebAclRequest;
import software.amazon.awssdk.services.wafv2.model.DisassociateWebAclResponse;
import software.amazon.awssdk.services.wafv2.model.GenerateMobileSdkReleaseUrlRequest;
import software.amazon.awssdk.services.wafv2.model.GenerateMobileSdkReleaseUrlResponse;
import software.amazon.awssdk.services.wafv2.model.GetDecryptedApiKeyRequest;
import software.amazon.awssdk.services.wafv2.model.GetDecryptedApiKeyResponse;
import software.amazon.awssdk.services.wafv2.model.GetIpSetRequest;
import software.amazon.awssdk.services.wafv2.model.GetIpSetResponse;
import software.amazon.awssdk.services.wafv2.model.GetLoggingConfigurationRequest;
import software.amazon.awssdk.services.wafv2.model.GetLoggingConfigurationResponse;
import software.amazon.awssdk.services.wafv2.model.GetManagedRuleSetRequest;
import software.amazon.awssdk.services.wafv2.model.GetManagedRuleSetResponse;
import software.amazon.awssdk.services.wafv2.model.GetMobileSdkReleaseRequest;
import software.amazon.awssdk.services.wafv2.model.GetMobileSdkReleaseResponse;
import software.amazon.awssdk.services.wafv2.model.GetPermissionPolicyRequest;
import software.amazon.awssdk.services.wafv2.model.GetPermissionPolicyResponse;
import software.amazon.awssdk.services.wafv2.model.GetRateBasedStatementManagedKeysRequest;
import software.amazon.awssdk.services.wafv2.model.GetRateBasedStatementManagedKeysResponse;
import software.amazon.awssdk.services.wafv2.model.GetRegexPatternSetRequest;
import software.amazon.awssdk.services.wafv2.model.GetRegexPatternSetResponse;
import software.amazon.awssdk.services.wafv2.model.GetRuleGroupRequest;
import software.amazon.awssdk.services.wafv2.model.GetRuleGroupResponse;
import software.amazon.awssdk.services.wafv2.model.GetSampledRequestsRequest;
import software.amazon.awssdk.services.wafv2.model.GetSampledRequestsResponse;
import software.amazon.awssdk.services.wafv2.model.GetWebAclForResourceRequest;
import software.amazon.awssdk.services.wafv2.model.GetWebAclForResourceResponse;
import software.amazon.awssdk.services.wafv2.model.GetWebAclRequest;
import software.amazon.awssdk.services.wafv2.model.GetWebAclResponse;
import software.amazon.awssdk.services.wafv2.model.ListApiKeysRequest;
import software.amazon.awssdk.services.wafv2.model.ListApiKeysResponse;
import software.amazon.awssdk.services.wafv2.model.ListAvailableManagedRuleGroupVersionsRequest;
import software.amazon.awssdk.services.wafv2.model.ListAvailableManagedRuleGroupVersionsResponse;
import software.amazon.awssdk.services.wafv2.model.ListAvailableManagedRuleGroupsRequest;
import software.amazon.awssdk.services.wafv2.model.ListAvailableManagedRuleGroupsResponse;
import software.amazon.awssdk.services.wafv2.model.ListIpSetsRequest;
import software.amazon.awssdk.services.wafv2.model.ListIpSetsResponse;
import software.amazon.awssdk.services.wafv2.model.ListLoggingConfigurationsRequest;
import software.amazon.awssdk.services.wafv2.model.ListLoggingConfigurationsResponse;
import software.amazon.awssdk.services.wafv2.model.ListManagedRuleSetsRequest;
import software.amazon.awssdk.services.wafv2.model.ListManagedRuleSetsResponse;
import software.amazon.awssdk.services.wafv2.model.ListMobileSdkReleasesRequest;
import software.amazon.awssdk.services.wafv2.model.ListMobileSdkReleasesResponse;
import software.amazon.awssdk.services.wafv2.model.ListRegexPatternSetsRequest;
import software.amazon.awssdk.services.wafv2.model.ListRegexPatternSetsResponse;
import software.amazon.awssdk.services.wafv2.model.ListResourcesForWebAclRequest;
import software.amazon.awssdk.services.wafv2.model.ListResourcesForWebAclResponse;
import software.amazon.awssdk.services.wafv2.model.ListRuleGroupsRequest;
import software.amazon.awssdk.services.wafv2.model.ListRuleGroupsResponse;
import software.amazon.awssdk.services.wafv2.model.ListTagsForResourceRequest;
import software.amazon.awssdk.services.wafv2.model.ListTagsForResourceResponse;
import software.amazon.awssdk.services.wafv2.model.ListWebAcLsRequest;
import software.amazon.awssdk.services.wafv2.model.ListWebAcLsResponse;
import software.amazon.awssdk.services.wafv2.model.PutLoggingConfigurationRequest;
import software.amazon.awssdk.services.wafv2.model.PutLoggingConfigurationResponse;
import software.amazon.awssdk.services.wafv2.model.PutManagedRuleSetVersionsRequest;
import software.amazon.awssdk.services.wafv2.model.PutManagedRuleSetVersionsResponse;
import software.amazon.awssdk.services.wafv2.model.PutPermissionPolicyRequest;
import software.amazon.awssdk.services.wafv2.model.PutPermissionPolicyResponse;
import software.amazon.awssdk.services.wafv2.model.TagResourceRequest;
import software.amazon.awssdk.services.wafv2.model.TagResourceResponse;
import software.amazon.awssdk.services.wafv2.model.UntagResourceRequest;
import software.amazon.awssdk.services.wafv2.model.UntagResourceResponse;
import software.amazon.awssdk.services.wafv2.model.UpdateIpSetRequest;
import software.amazon.awssdk.services.wafv2.model.UpdateIpSetResponse;
import software.amazon.awssdk.services.wafv2.model.UpdateManagedRuleSetVersionExpiryDateRequest;
import software.amazon.awssdk.services.wafv2.model.UpdateManagedRuleSetVersionExpiryDateResponse;
import software.amazon.awssdk.services.wafv2.model.UpdateRegexPatternSetRequest;
import software.amazon.awssdk.services.wafv2.model.UpdateRegexPatternSetResponse;
import software.amazon.awssdk.services.wafv2.model.UpdateRuleGroupRequest;
import software.amazon.awssdk.services.wafv2.model.UpdateRuleGroupResponse;
import software.amazon.awssdk.services.wafv2.model.UpdateWebAclRequest;
import software.amazon.awssdk.services.wafv2.model.UpdateWebAclResponse;
import software.amazon.awssdk.services.wafv2.model.WafAssociatedItemException;
import software.amazon.awssdk.services.wafv2.model.WafConfigurationWarningException;
import software.amazon.awssdk.services.wafv2.model.WafDuplicateItemException;
import software.amazon.awssdk.services.wafv2.model.WafExpiredManagedRuleGroupVersionException;
import software.amazon.awssdk.services.wafv2.model.WafInternalErrorException;
import software.amazon.awssdk.services.wafv2.model.WafInvalidOperationException;
import software.amazon.awssdk.services.wafv2.model.WafInvalidParameterException;
import software.amazon.awssdk.services.wafv2.model.WafInvalidPermissionPolicyException;
import software.amazon.awssdk.services.wafv2.model.WafInvalidResourceException;
import software.amazon.awssdk.services.wafv2.model.WafLimitsExceededException;
import software.amazon.awssdk.services.wafv2.model.WafLogDestinationPermissionIssueException;
import software.amazon.awssdk.services.wafv2.model.WafNonexistentItemException;
import software.amazon.awssdk.services.wafv2.model.WafOptimisticLockException;
import software.amazon.awssdk.services.wafv2.model.WafServiceLinkedRoleErrorException;
import software.amazon.awssdk.services.wafv2.model.WafSubscriptionNotFoundException;
import software.amazon.awssdk.services.wafv2.model.WafTagOperationException;
import software.amazon.awssdk.services.wafv2.model.WafTagOperationInternalErrorException;
import software.amazon.awssdk.services.wafv2.model.WafUnavailableEntityException;
import software.amazon.awssdk.services.wafv2.model.WafUnsupportedAggregateKeyTypeException;
import software.amazon.awssdk.services.wafv2.model.Wafv2Exception;
import software.amazon.awssdk.services.wafv2.transform.AssociateWebAclRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.CheckCapacityRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.CreateApiKeyRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.CreateIpSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.CreateRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.CreateRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.CreateWebAclRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeleteApiKeyRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeleteFirewallManagerRuleGroupsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeleteIpSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeleteLoggingConfigurationRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeletePermissionPolicyRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeleteRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeleteRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DeleteWebAclRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DescribeAllManagedProductsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DescribeManagedProductsByVendorRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DescribeManagedRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.DisassociateWebAclRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GenerateMobileSdkReleaseUrlRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetDecryptedApiKeyRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetIpSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetLoggingConfigurationRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetManagedRuleSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetMobileSdkReleaseRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetPermissionPolicyRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetRateBasedStatementManagedKeysRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetSampledRequestsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetWebAclForResourceRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.GetWebAclRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListApiKeysRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListAvailableManagedRuleGroupVersionsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListAvailableManagedRuleGroupsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListIpSetsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListLoggingConfigurationsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListManagedRuleSetsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListMobileSdkReleasesRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListRegexPatternSetsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListResourcesForWebAclRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListRuleGroupsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListTagsForResourceRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.ListWebAcLsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.PutLoggingConfigurationRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.PutManagedRuleSetVersionsRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.PutPermissionPolicyRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.TagResourceRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.UntagResourceRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.UpdateIpSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.UpdateManagedRuleSetVersionExpiryDateRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.UpdateRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.UpdateRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.wafv2.transform.UpdateWebAclRequestMarshaller;
import software.amazon.awssdk.utils.CompletableFutureUtils;
/**
* Internal implementation of {@link Wafv2AsyncClient}.
*
* @see Wafv2AsyncClient#builder()
*/
@Generated("software.amazon.awssdk:codegen")
@SdkInternalApi
final class DefaultWafv2AsyncClient implements Wafv2AsyncClient {
private static final Logger log = LoggerFactory.getLogger(DefaultWafv2AsyncClient.class);
private static final AwsProtocolMetadata protocolMetadata = AwsProtocolMetadata.builder()
.serviceProtocol(AwsServiceProtocol.AWS_JSON).build();
private final AsyncClientHandler clientHandler;
private final AwsJsonProtocolFactory protocolFactory;
private final SdkClientConfiguration clientConfiguration;
protected DefaultWafv2AsyncClient(SdkClientConfiguration clientConfiguration) {
this.clientHandler = new AwsAsyncClientHandler(clientConfiguration);
this.clientConfiguration = clientConfiguration.toBuilder().option(SdkClientOption.SDK_CLIENT, this).build();
this.protocolFactory = init(AwsJsonProtocolFactory.builder()).build();
}
/**
*
* Associates a web ACL with a regional application resource, to protect the resource. A regional application can be
* an Application Load Balancer (ALB), an Amazon API Gateway REST API, an AppSync GraphQL API, an Amazon Cognito
* user pool, an App Runner service, or an Amazon Web Services Verified Access instance.
*
*
* For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To associate
* a web ACL, in the CloudFront call UpdateDistribution
, set the web ACL ID to the Amazon Resource Name
* (ARN) of the web ACL. For information, see UpdateDistribution in the Amazon CloudFront Developer Guide.
*
*
* Required permissions for customer-managed IAM policies
*
*
* This call requires permissions that are specific to the protected resource type. For details, see Permissions for AssociateWebACL in the WAF Developer Guide.
*
*
* Temporary inconsistencies during updates
*
*
* When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate
* to all areas where the resources are stored. The propagation time can be from a few seconds to a number of
* minutes.
*
*
* The following are examples of the temporary inconsistencies that you might notice during change propagation:
*
*
* -
*
* After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating
* that the web ACL is unavailable.
*
*
* -
*
* After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web
* ACL is used and not in another.
*
*
* -
*
* After you change a rule action setting, you might see the old action in some places and the new action in others.
*
*
* -
*
* After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in
* one area while still allowed in another.
*
*
*
*
* @param associateWebAclRequest
* @return A Java Future containing the result of the AssociateWebACL operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafUnavailableEntityException WAF couldn’t retrieve a resource that you specified for this operation.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate. Verify the
* resources that you are specifying in your request parameters and then retry the operation.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.AssociateWebACL
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture associateWebACL(AssociateWebAclRequest associateWebAclRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(associateWebAclRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, associateWebAclRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "AssociateWebACL");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, AssociateWebAclResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("AssociateWebACL").withProtocolMetadata(protocolMetadata)
.withMarshaller(new AssociateWebAclRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(associateWebAclRequest));
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 web ACL capacity unit (WCU) requirements for a specified scope and set of rules. You can use this to
* check the capacity requirements for the rules you want to use in a RuleGroup or WebACL.
*
*
* WAF uses WCUs to calculate and control the operating resources that are used to run your rules, rule groups, and
* web ACLs. WAF calculates capacity differently for each rule type, to reflect the relative cost of each rule.
* Simple rules that cost little to run use fewer WCUs than more complex rules that use more processing power. Rule
* group capacity is fixed at creation, which helps users plan their web ACL WCU usage when they use a rule group.
* For more information, see WAF web ACL capacity
* units (WCU) in the WAF Developer Guide.
*
*
* @param checkCapacityRequest
* @return A Java Future containing the result of the CheckCapacity operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource
* limit. For example, the maximum number of
WebACL
objects that you can create for an Amazon
* Web Services account. For more information, see WAF quotas in the WAF
* Developer Guide.
* - WafInvalidResourceException WAF couldn’t perform the operation because the resource that you
* requested isn’t valid. Check the resource, and try again.
* - WafUnavailableEntityException WAF couldn’t retrieve a resource that you specified for this operation.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate. Verify the
* resources that you are specifying in your request parameters and then retry the operation.
* - WafSubscriptionNotFoundException You tried to use a managed rule group that's available by
* subscription, but you aren't subscribed to it yet.
* - WafExpiredManagedRuleGroupVersionException The operation failed because the specified version for the
* managed rule group has expired. You can retrieve the available versions for the managed rule group by
* calling ListAvailableManagedRuleGroupVersions.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.CheckCapacity
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture checkCapacity(CheckCapacityRequest checkCapacityRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(checkCapacityRequest, this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, checkCapacityRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CheckCapacity");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
CheckCapacityResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CheckCapacity").withProtocolMetadata(protocolMetadata)
.withMarshaller(new CheckCapacityRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(checkCapacityRequest));
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 API key that contains a set of token domains.
*
*
* API keys are required for the integration of the CAPTCHA API in your JavaScript client applications. The API lets
* you customize the placement and characteristics of the CAPTCHA puzzle for your end users. For more information
* about the CAPTCHA JavaScript integration, see WAF client
* application integration in the WAF Developer Guide.
*
*
* You can use a single key for up to 5 domains. After you generate a key, you can copy it for use in your
* JavaScript integration.
*
*
* @param createApiKeyRequest
* @return A Java Future containing the result of the CreateAPIKey operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafInvalidOperationException The operation isn't valid.
* - WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource
* limit. For example, the maximum number of
WebACL
objects that you can create for an Amazon
* Web Services account. For more information, see WAF quotas in the WAF
* Developer Guide.
* - 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.CreateAPIKey
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture createAPIKey(CreateApiKeyRequest createApiKeyRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createApiKeyRequest, this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, createApiKeyRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateAPIKey");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
CreateApiKeyResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateAPIKey").withProtocolMetadata(protocolMetadata)
.withMarshaller(new CreateApiKeyRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(createApiKeyRequest));
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 IPSet, which you use to identify web requests that originate from specific IP addresses or
* ranges of IP addresses. For example, if you're receiving a lot of requests from a ranges of IP addresses, you can
* configure WAF to block them using an IPSet that lists those IP addresses.
*
*
* @param createIpSetRequest
* @return A Java Future containing the result of the CreateIPSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafDuplicateItemException WAF couldn’t perform the operation because the resource that you tried to
* save is a duplicate of an existing one.
* - WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a
* resource that has changed since you last retrieved it. Get the resource again, make any changes you need
* to make to the new copy, and retry your operation.
* - WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource
* limit. For example, the maximum number of
WebACL
objects that you can create for an Amazon
* Web Services account. For more information, see WAF quotas in the WAF
* Developer Guide.
* - WafTagOperationException An error occurred during the tagging operation. Retry your request.
* - WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an
* internal error. Retry your request.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.CreateIPSet
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture createIPSet(CreateIpSetRequest createIpSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createIpSetRequest, this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, createIpSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateIPSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
CreateIpSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateIPSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new CreateIpSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(createIpSetRequest));
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 RegexPatternSet, which you reference in a RegexPatternSetReferenceStatement, to have WAF
* inspect a web request component for the specified patterns.
*
*
* @param createRegexPatternSetRequest
* @return A Java Future containing the result of the CreateRegexPatternSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafDuplicateItemException WAF couldn’t perform the operation because the resource that you tried to
* save is a duplicate of an existing one.
* - WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a
* resource that has changed since you last retrieved it. Get the resource again, make any changes you need
* to make to the new copy, and retry your operation.
* - WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource
* limit. For example, the maximum number of
WebACL
objects that you can create for an Amazon
* Web Services account. For more information, see WAF quotas in the WAF
* Developer Guide.
* - WafTagOperationException An error occurred during the tagging operation. Retry your request.
* - WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an
* internal error. Retry your request.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.CreateRegexPatternSet
* @see AWS
* API Documentation
*/
@Override
public CompletableFuture createRegexPatternSet(
CreateRegexPatternSetRequest createRegexPatternSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createRegexPatternSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, createRegexPatternSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateRegexPatternSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, CreateRegexPatternSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateRegexPatternSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new CreateRegexPatternSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(createRegexPatternSetRequest));
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 RuleGroup per the specifications provided.
*
*
* A rule group defines a collection of rules to inspect and control web requests that you can use in a
* WebACL. When you create a rule group, you define an immutable capacity limit. If you update a rule group,
* you must stay within the capacity. This allows others to reuse the rule group with confidence in its capacity
* requirements.
*
*
* @param createRuleGroupRequest
* @return A Java Future containing the result of the CreateRuleGroup operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafDuplicateItemException WAF couldn’t perform the operation because the resource that you tried to
* save is a duplicate of an existing one.
* - WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a
* resource that has changed since you last retrieved it. Get the resource again, make any changes you need
* to make to the new copy, and retry your operation.
* - WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource
* limit. For example, the maximum number of
WebACL
objects that you can create for an Amazon
* Web Services account. For more information, see WAF quotas in the WAF
* Developer Guide.
* - WafUnavailableEntityException WAF couldn’t retrieve a resource that you specified for this operation.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate. Verify the
* resources that you are specifying in your request parameters and then retry the operation.
* - WafTagOperationException An error occurred during the tagging operation. Retry your request.
* - WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an
* internal error. Retry your request.
* - WafSubscriptionNotFoundException You tried to use a managed rule group that's available by
* subscription, but you aren't subscribed to it yet.
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.CreateRuleGroup
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture createRuleGroup(CreateRuleGroupRequest createRuleGroupRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createRuleGroupRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, createRuleGroupRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateRuleGroup");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, CreateRuleGroupResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateRuleGroup").withProtocolMetadata(protocolMetadata)
.withMarshaller(new CreateRuleGroupRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(createRuleGroupRequest));
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 WebACL per the specifications provided.
*
*
* A web ACL defines a collection of rules to use to inspect and control web requests. Each rule has a statement
* that defines what to look for in web requests and an action that WAF applies to requests that match the
* statement. In the web ACL, you assign a default action to take (allow, block) for any request that does not match
* any of the rules. The rules in a web ACL can be a combination of the types Rule, RuleGroup, and
* managed rule group. You can associate a web ACL with one or more Amazon Web Services resources to protect. The
* resources can be an Amazon CloudFront distribution, an Amazon API Gateway REST API, an Application Load Balancer,
* an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon Web Services Verified
* Access instance.
*
*
* @param createWebAclRequest
* @return A Java Future containing the result of the CreateWebACL operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafDuplicateItemException WAF couldn’t perform the operation because the resource that you tried to
* save is a duplicate of an existing one.
* - WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a
* resource that has changed since you last retrieved it. Get the resource again, make any changes you need
* to make to the new copy, and retry your operation.
* - WafLimitsExceededException WAF couldn’t perform the operation because you exceeded your resource
* limit. For example, the maximum number of
WebACL
objects that you can create for an Amazon
* Web Services account. For more information, see WAF quotas in the WAF
* Developer Guide.
* - WafInvalidResourceException WAF couldn’t perform the operation because the resource that you
* requested isn’t valid. Check the resource, and try again.
* - WafUnavailableEntityException WAF couldn’t retrieve a resource that you specified for this operation.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate. Verify the
* resources that you are specifying in your request parameters and then retry the operation.
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafTagOperationException An error occurred during the tagging operation. Retry your request.
* - WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an
* internal error. Retry your request.
* - WafSubscriptionNotFoundException You tried to use a managed rule group that's available by
* subscription, but you aren't subscribed to it yet.
* - WafInvalidOperationException The operation isn't valid.
* - WafConfigurationWarningException The operation failed because you are inspecting the web request
* body, headers, or cookies without specifying how to handle oversize components. Rules that inspect the
* body must either provide an
OversizeHandling
configuration or they must be preceded by a
* SizeConstraintStatement
that blocks the body content from being too large. Rules that
* inspect the headers or cookies must provide an OversizeHandling
configuration.
*
* Provide the handling configuration and retry your operation.
*
*
* Alternately, you can suppress this warning by adding the following tag to the resource that you provide
* to this operation: Tag
(key:WAF:OversizeFieldsHandlingConstraintOptOut
, value:
* true
).
* - WafExpiredManagedRuleGroupVersionException The operation failed because the specified version for the
* managed rule group has expired. You can retrieve the available versions for the managed rule group by
* calling ListAvailableManagedRuleGroupVersions.
* - 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.CreateWebACL
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture createWebACL(CreateWebAclRequest createWebAclRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createWebAclRequest, this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, createWebAclRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateWebACL");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
CreateWebAclResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateWebACL").withProtocolMetadata(protocolMetadata)
.withMarshaller(new CreateWebAclRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(createWebAclRequest));
CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
});
executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture);
return executeFuture;
} catch (Throwable t) {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
return CompletableFutureUtils.failedFuture(t);
}
}
/**
*
* Deletes the specified API key.
*
*
* After you delete a key, it can take up to 24 hours for WAF to disallow use of the key in all regions.
*
*
* @param deleteApiKeyRequest
* @return A Java Future containing the result of the DeleteAPIKey operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a
* resource that has changed since you last retrieved it. Get the resource again, make any changes you need
* to make to the new copy, and retry your operation.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.DeleteAPIKey
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture deleteAPIKey(DeleteApiKeyRequest deleteApiKeyRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteApiKeyRequest, this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteApiKeyRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteAPIKey");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
DeleteApiKeyResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteAPIKey").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeleteApiKeyRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deleteApiKeyRequest));
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 all rule groups that are managed by Firewall Manager for the specified web ACL.
*
*
* You can only use this if ManagedByFirewallManager
is false in the specified WebACL.
*
*
* @param deleteFirewallManagerRuleGroupsRequest
* @return A Java Future containing the result of the DeleteFirewallManagerRuleGroups operation returned by the
* service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a
* resource that has changed since you last retrieved it. Get the resource again, make any changes you need
* to make to the new copy, and retry your operation.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.DeleteFirewallManagerRuleGroups
* @see AWS API Documentation
*/
@Override
public CompletableFuture deleteFirewallManagerRuleGroups(
DeleteFirewallManagerRuleGroupsRequest deleteFirewallManagerRuleGroupsRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteFirewallManagerRuleGroupsRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration,
deleteFirewallManagerRuleGroupsRequest.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteFirewallManagerRuleGroups");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeleteFirewallManagerRuleGroupsResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteFirewallManagerRuleGroups").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeleteFirewallManagerRuleGroupsRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deleteFirewallManagerRuleGroupsRequest));
CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
});
executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture);
return executeFuture;
} catch (Throwable t) {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
return CompletableFutureUtils.failedFuture(t);
}
}
/**
*
* Deletes the specified IPSet.
*
*
* @param deleteIpSetRequest
* @return A Java Future containing the result of the DeleteIPSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a
* resource that has changed since you last retrieved it. Get the resource again, make any changes you need
* to make to the new copy, and retry your operation.
* - WafAssociatedItemException WAF couldn’t perform the operation because your resource is being used by
* another resource or it’s associated with another resource.
* - WafTagOperationException An error occurred during the tagging operation. Retry your request.
* - WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an
* internal error. Retry your request.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.DeleteIPSet
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture deleteIPSet(DeleteIpSetRequest deleteIpSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteIpSetRequest, this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteIpSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteIPSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
DeleteIpSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteIPSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeleteIpSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deleteIpSetRequest));
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 LoggingConfiguration from the specified web ACL.
*
*
* @param deleteLoggingConfigurationRequest
* @return A Java Future containing the result of the DeleteLoggingConfiguration operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a
* resource that has changed since you last retrieved it. Get the resource again, make any changes you need
* to make to the new copy, and retry your operation.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.DeleteLoggingConfiguration
* @see AWS API Documentation
*/
@Override
public CompletableFuture deleteLoggingConfiguration(
DeleteLoggingConfigurationRequest deleteLoggingConfigurationRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteLoggingConfigurationRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteLoggingConfigurationRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteLoggingConfiguration");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeleteLoggingConfigurationResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteLoggingConfiguration").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeleteLoggingConfigurationRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deleteLoggingConfigurationRequest));
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);
}
}
/**
*
* Permanently deletes an IAM policy from the specified rule group.
*
*
* You must be the owner of the rule group to perform this operation.
*
*
* @param deletePermissionPolicyRequest
* @return A Java Future containing the result of the DeletePermissionPolicy operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.DeletePermissionPolicy
* @see AWS
* API Documentation
*/
@Override
public CompletableFuture deletePermissionPolicy(
DeletePermissionPolicyRequest deletePermissionPolicyRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deletePermissionPolicyRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, deletePermissionPolicyRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeletePermissionPolicy");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeletePermissionPolicyResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeletePermissionPolicy").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeletePermissionPolicyRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deletePermissionPolicyRequest));
CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
});
executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture);
return executeFuture;
} catch (Throwable t) {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
return CompletableFutureUtils.failedFuture(t);
}
}
/**
*
* Deletes the specified RegexPatternSet.
*
*
* @param deleteRegexPatternSetRequest
* @return A Java Future containing the result of the DeleteRegexPatternSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a
* resource that has changed since you last retrieved it. Get the resource again, make any changes you need
* to make to the new copy, and retry your operation.
* - WafAssociatedItemException WAF couldn’t perform the operation because your resource is being used by
* another resource or it’s associated with another resource.
* - WafTagOperationException An error occurred during the tagging operation. Retry your request.
* - WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an
* internal error. Retry your request.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.DeleteRegexPatternSet
* @see AWS
* API Documentation
*/
@Override
public CompletableFuture deleteRegexPatternSet(
DeleteRegexPatternSetRequest deleteRegexPatternSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteRegexPatternSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteRegexPatternSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteRegexPatternSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeleteRegexPatternSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteRegexPatternSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeleteRegexPatternSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deleteRegexPatternSetRequest));
CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
});
executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture);
return executeFuture;
} catch (Throwable t) {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
return CompletableFutureUtils.failedFuture(t);
}
}
/**
*
* Deletes the specified RuleGroup.
*
*
* @param deleteRuleGroupRequest
* @return A Java Future containing the result of the DeleteRuleGroup operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a
* resource that has changed since you last retrieved it. Get the resource again, make any changes you need
* to make to the new copy, and retry your operation.
* - WafAssociatedItemException WAF couldn’t perform the operation because your resource is being used by
* another resource or it’s associated with another resource.
* - WafTagOperationException An error occurred during the tagging operation. Retry your request.
* - WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an
* internal error. Retry your request.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.DeleteRuleGroup
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture deleteRuleGroup(DeleteRuleGroupRequest deleteRuleGroupRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteRuleGroupRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteRuleGroupRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteRuleGroup");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeleteRuleGroupResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteRuleGroup").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeleteRuleGroupRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deleteRuleGroupRequest));
CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
});
executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture);
return executeFuture;
} catch (Throwable t) {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
return CompletableFutureUtils.failedFuture(t);
}
}
/**
*
* Deletes the specified WebACL.
*
*
* You can only use this if ManagedByFirewallManager
is false in the specified WebACL.
*
*
*
* Before deleting any web ACL, first disassociate it from all resources.
*
*
* -
*
* To retrieve a list of the resources that are associated with a web ACL, use the following calls:
*
*
* -
*
* For regional resources, call ListResourcesForWebACL.
*
*
* -
*
* For Amazon CloudFront distributions, use the CloudFront call ListDistributionsByWebACLId
. For
* information, see ListDistributionsByWebACLId in the Amazon CloudFront API Reference.
*
*
*
*
* -
*
* To disassociate a resource from a web ACL, use the following calls:
*
*
* -
*
* For regional resources, call DisassociateWebACL.
*
*
* -
*
* For Amazon CloudFront distributions, provide an empty web ACL ID in the CloudFront call
* UpdateDistribution
. For information, see UpdateDistribution in the Amazon CloudFront API Reference.
*
*
*
*
*
*
*
* @param deleteWebAclRequest
* @return A Java Future containing the result of the DeleteWebACL operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafOptimisticLockException WAF couldn’t save your changes because you tried to update or delete a
* resource that has changed since you last retrieved it. Get the resource again, make any changes you need
* to make to the new copy, and retry your operation.
* - WafAssociatedItemException WAF couldn’t perform the operation because your resource is being used by
* another resource or it’s associated with another resource.
* - WafTagOperationException An error occurred during the tagging operation. Retry your request.
* - WafTagOperationInternalErrorException WAF couldn’t perform your tagging operation because of an
* internal error. Retry your request.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.DeleteWebACL
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture deleteWebACL(DeleteWebAclRequest deleteWebAclRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteWebAclRequest, this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteWebAclRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteWebACL");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
DeleteWebAclResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteWebACL").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeleteWebAclRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deleteWebAclRequest));
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);
}
}
/**
*
* Provides high-level information for the Amazon Web Services Managed Rules rule groups and Amazon Web Services
* Marketplace managed rule groups.
*
*
* @param describeAllManagedProductsRequest
* @return A Java Future containing the result of the DescribeAllManagedProducts operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInvalidOperationException The operation isn't valid.
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.DescribeAllManagedProducts
* @see AWS API Documentation
*/
@Override
public CompletableFuture describeAllManagedProducts(
DescribeAllManagedProductsRequest describeAllManagedProductsRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeAllManagedProductsRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, describeAllManagedProductsRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeAllManagedProducts");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DescribeAllManagedProductsResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DescribeAllManagedProducts").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DescribeAllManagedProductsRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(describeAllManagedProductsRequest));
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);
}
}
/**
*
* Provides high-level information for the managed rule groups owned by a specific vendor.
*
*
* @param describeManagedProductsByVendorRequest
* @return A Java Future containing the result of the DescribeManagedProductsByVendor operation returned by the
* service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInvalidOperationException The operation isn't valid.
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.DescribeManagedProductsByVendor
* @see AWS API Documentation
*/
@Override
public CompletableFuture describeManagedProductsByVendor(
DescribeManagedProductsByVendorRequest describeManagedProductsByVendorRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeManagedProductsByVendorRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration,
describeManagedProductsByVendorRequest.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeManagedProductsByVendor");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DescribeManagedProductsByVendorResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DescribeManagedProductsByVendor").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DescribeManagedProductsByVendorRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(describeManagedProductsByVendorRequest));
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);
}
}
/**
*
* Provides high-level information for a managed rule group, including descriptions of the rules.
*
*
* @param describeManagedRuleGroupRequest
* @return A Java Future containing the result of the DescribeManagedRuleGroup operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafInvalidResourceException WAF couldn’t perform the operation because the resource that you
* requested isn’t valid. Check the resource, and try again.
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInvalidOperationException The operation isn't valid.
* - WafExpiredManagedRuleGroupVersionException The operation failed because the specified version for the
* managed rule group has expired. You can retrieve the available versions for the managed rule group by
* calling ListAvailableManagedRuleGroupVersions.
* - 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.DescribeManagedRuleGroup
* @see AWS API Documentation
*/
@Override
public CompletableFuture describeManagedRuleGroup(
DescribeManagedRuleGroupRequest describeManagedRuleGroupRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeManagedRuleGroupRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, describeManagedRuleGroupRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeManagedRuleGroup");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DescribeManagedRuleGroupResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DescribeManagedRuleGroup").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DescribeManagedRuleGroupRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(describeManagedRuleGroupRequest));
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);
}
}
/**
*
* Disassociates the specified regional application resource from any existing web ACL association. A resource can
* have at most one web ACL association. A regional application can be an Application Load Balancer (ALB), an Amazon
* API Gateway REST API, an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon
* Web Services Verified Access instance.
*
*
* For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To
* disassociate a web ACL, provide an empty web ACL ID in the CloudFront call UpdateDistribution
. For
* information, see
* UpdateDistribution in the Amazon CloudFront API Reference.
*
*
* Required permissions for customer-managed IAM policies
*
*
* This call requires permissions that are specific to the protected resource type. For details, see Permissions for DisassociateWebACL in the WAF Developer Guide.
*
*
* @param disassociateWebAclRequest
* @return A Java Future containing the result of the DisassociateWebACL operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.DisassociateWebACL
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture disassociateWebACL(DisassociateWebAclRequest disassociateWebAclRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(disassociateWebAclRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, disassociateWebAclRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DisassociateWebACL");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DisassociateWebAclResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DisassociateWebACL").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DisassociateWebAclRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(disassociateWebAclRequest));
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);
}
}
/**
*
* Generates a presigned download URL for the specified release of the mobile SDK.
*
*
* The mobile SDK is not generally available. Customers who have access to the mobile SDK can use it to establish
* and manage WAF tokens for use in HTTP(S) requests from a mobile device to WAF. For more information, see WAF client
* application integration in the WAF Developer Guide.
*
*
* @param generateMobileSdkReleaseUrlRequest
* @return A Java Future containing the result of the GenerateMobileSdkReleaseUrl operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.GenerateMobileSdkReleaseUrl
* @see AWS API Documentation
*/
@Override
public CompletableFuture generateMobileSdkReleaseUrl(
GenerateMobileSdkReleaseUrlRequest generateMobileSdkReleaseUrlRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(generateMobileSdkReleaseUrlRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, generateMobileSdkReleaseUrlRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GenerateMobileSdkReleaseUrl");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GenerateMobileSdkReleaseUrlResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GenerateMobileSdkReleaseUrl").withProtocolMetadata(protocolMetadata)
.withMarshaller(new GenerateMobileSdkReleaseUrlRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(generateMobileSdkReleaseUrlRequest));
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 API key in decrypted form. Use this to check the token domains that you have defined for the key.
*
*
* API keys are required for the integration of the CAPTCHA API in your JavaScript client applications. The API lets
* you customize the placement and characteristics of the CAPTCHA puzzle for your end users. For more information
* about the CAPTCHA JavaScript integration, see WAF client
* application integration in the WAF Developer Guide.
*
*
* @param getDecryptedApiKeyRequest
* @return A Java Future containing the result of the GetDecryptedAPIKey operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafInvalidOperationException The operation isn't valid.
* - WafInvalidResourceException WAF couldn’t perform the operation because the resource that you
* requested isn’t valid. Check the resource, and try again.
* - 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.GetDecryptedAPIKey
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture getDecryptedAPIKey(GetDecryptedApiKeyRequest getDecryptedApiKeyRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getDecryptedApiKeyRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, getDecryptedApiKeyRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetDecryptedAPIKey");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetDecryptedApiKeyResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetDecryptedAPIKey").withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetDecryptedApiKeyRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(getDecryptedApiKeyRequest));
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 specified IPSet.
*
*
* @param getIpSetRequest
* @return A Java Future containing the result of the GetIPSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.GetIPSet
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture getIPSet(GetIpSetRequest getIpSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getIpSetRequest, this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, getIpSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetIPSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
GetIpSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams().withOperationName("GetIPSet")
.withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetIpSetRequestMarshaller(protocolFactory)).withResponseHandler(responseHandler)
.withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration)
.withMetricCollector(apiCallMetricCollector).withInput(getIpSetRequest));
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 LoggingConfiguration for the specified web ACL.
*
*
* @param getLoggingConfigurationRequest
* @return A Java Future containing the result of the GetLoggingConfiguration operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.GetLoggingConfiguration
* @see AWS
* API Documentation
*/
@Override
public CompletableFuture getLoggingConfiguration(
GetLoggingConfigurationRequest getLoggingConfigurationRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getLoggingConfigurationRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, getLoggingConfigurationRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetLoggingConfiguration");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetLoggingConfigurationResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetLoggingConfiguration").withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetLoggingConfigurationRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(getLoggingConfigurationRequest));
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 specified managed rule set.
*
*
*
* This is intended for use only by vendors of managed rule sets. Vendors are Amazon Web Services and Amazon Web
* Services Marketplace sellers.
*
*
* Vendors, you can use the managed rule set APIs to provide controlled rollout of your versioned managed rule group
* offerings for your customers. The APIs are ListManagedRuleSets
, GetManagedRuleSet
,
* PutManagedRuleSetVersions
, and UpdateManagedRuleSetVersionExpiryDate
.
*
*
*
* @param getManagedRuleSetRequest
* @return A Java Future containing the result of the GetManagedRuleSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.GetManagedRuleSet
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture getManagedRuleSet(GetManagedRuleSetRequest getManagedRuleSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getManagedRuleSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, getManagedRuleSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetManagedRuleSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetManagedRuleSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetManagedRuleSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetManagedRuleSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(getManagedRuleSetRequest));
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 information for the specified mobile SDK release, including release notes and tags.
*
*
* The mobile SDK is not generally available. Customers who have access to the mobile SDK can use it to establish
* and manage WAF tokens for use in HTTP(S) requests from a mobile device to WAF. For more information, see WAF client
* application integration in the WAF Developer Guide.
*
*
* @param getMobileSdkReleaseRequest
* @return A Java Future containing the result of the GetMobileSdkRelease operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.GetMobileSdkRelease
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture getMobileSdkRelease(
GetMobileSdkReleaseRequest getMobileSdkReleaseRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getMobileSdkReleaseRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, getMobileSdkReleaseRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetMobileSdkRelease");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetMobileSdkReleaseResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetMobileSdkRelease").withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetMobileSdkReleaseRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(getMobileSdkReleaseRequest));
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 IAM policy that is attached to the specified rule group.
*
*
* You must be the owner of the rule group to perform this operation.
*
*
* @param getPermissionPolicyRequest
* @return A Java Future containing the result of the GetPermissionPolicy operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.GetPermissionPolicy
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture getPermissionPolicy(
GetPermissionPolicyRequest getPermissionPolicyRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getPermissionPolicyRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, getPermissionPolicyRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetPermissionPolicy");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetPermissionPolicyResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetPermissionPolicy").withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetPermissionPolicyRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(getPermissionPolicyRequest));
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 IP addresses that are currently blocked by a rate-based rule instance. This is only available for
* rate-based rules that aggregate solely on the IP address or on the forwarded IP address.
*
*
* The maximum number of addresses that can be blocked for a single rate-based rule instance is 10,000. If more than
* 10,000 addresses exceed the rate limit, those with the highest rates are blocked.
*
*
* For a rate-based rule that you've defined inside a rule group, provide the name of the rule group reference
* statement in your request, in addition to the rate-based rule name and the web ACL name.
*
*
* WAF monitors web requests and manages keys independently for each unique combination of web ACL, optional rule
* group, and rate-based rule. For example, if you define a rate-based rule inside a rule group, and then use the
* rule group in a web ACL, WAF monitors web requests and manages keys for that web ACL, rule group reference
* statement, and rate-based rule instance. If you use the same rule group in a second web ACL, WAF monitors web
* requests and manages keys for this second usage completely independent of your first.
*
*
* @param getRateBasedStatementManagedKeysRequest
* @return A Java Future containing the result of the GetRateBasedStatementManagedKeys operation returned by the
* service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInvalidOperationException The operation isn't valid.
* - WafUnsupportedAggregateKeyTypeException The rule that you've named doesn't aggregate solely on the IP
* address or solely on the forwarded IP address. This call is only available for rate-based rules with an
*
AggregateKeyType
setting of IP
or FORWARDED_IP
.
* - 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.GetRateBasedStatementManagedKeys
* @see AWS API Documentation
*/
@Override
public CompletableFuture getRateBasedStatementManagedKeys(
GetRateBasedStatementManagedKeysRequest getRateBasedStatementManagedKeysRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getRateBasedStatementManagedKeysRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration,
getRateBasedStatementManagedKeysRequest.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetRateBasedStatementManagedKeys");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory
.createResponseHandler(operationMetadata, GetRateBasedStatementManagedKeysResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetRateBasedStatementManagedKeys").withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetRateBasedStatementManagedKeysRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(getRateBasedStatementManagedKeysRequest));
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 specified RegexPatternSet.
*
*
* @param getRegexPatternSetRequest
* @return A Java Future containing the result of the GetRegexPatternSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.GetRegexPatternSet
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture getRegexPatternSet(GetRegexPatternSetRequest getRegexPatternSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getRegexPatternSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, getRegexPatternSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetRegexPatternSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetRegexPatternSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetRegexPatternSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetRegexPatternSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(getRegexPatternSetRequest));
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 specified RuleGroup.
*
*
* @param getRuleGroupRequest
* @return A Java Future containing the result of the GetRuleGroup operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.GetRuleGroup
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture getRuleGroup(GetRuleGroupRequest getRuleGroupRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getRuleGroupRequest, this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, getRuleGroupRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetRuleGroup");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
GetRuleGroupResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetRuleGroup").withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetRuleGroupRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(getRuleGroupRequest));
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);
}
}
/**
*
* Gets detailed information about a specified number of requests--a sample--that WAF randomly selects from among
* the first 5,000 requests that your Amazon Web Services resource received during a time range that you choose. You
* can specify a sample size of up to 500 requests, and you can specify any time range in the previous three hours.
*
*
* GetSampledRequests
returns a time range, which is usually the time range that you specified.
* However, if your resource (such as a CloudFront distribution) received 5,000 requests before the specified time
* range elapsed, GetSampledRequests
returns an updated time range. This new time range indicates the
* actual period during which WAF selected the requests in the sample.
*
*
* @param getSampledRequestsRequest
* @return A Java Future containing the result of the GetSampledRequests operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.GetSampledRequests
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture getSampledRequests(GetSampledRequestsRequest getSampledRequestsRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getSampledRequestsRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, getSampledRequestsRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetSampledRequests");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetSampledRequestsResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetSampledRequests").withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetSampledRequestsRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(getSampledRequestsRequest));
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 specified WebACL.
*
*
* @param getWebAclRequest
* @return A Java Future containing the result of the GetWebACL operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.GetWebACL
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture getWebACL(GetWebAclRequest getWebAclRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getWebAclRequest, this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, getWebAclRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetWebACL");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
GetWebAclResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams().withOperationName("GetWebACL")
.withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetWebAclRequestMarshaller(protocolFactory)).withResponseHandler(responseHandler)
.withErrorResponseHandler(errorResponseHandler).withRequestConfiguration(clientConfiguration)
.withMetricCollector(apiCallMetricCollector).withInput(getWebAclRequest));
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 WebACL for the specified resource.
*
*
* This call uses GetWebACL
, to verify that your account has permission to access the retrieved web
* ACL. If you get an error that indicates that your account isn't authorized to perform
* wafv2:GetWebACL
on the resource, that error won't be included in your CloudTrail event history.
*
*
* For Amazon CloudFront, don't use this call. Instead, call the CloudFront action
* GetDistributionConfig
. For information, see GetDistributionConfig in the Amazon CloudFront API Reference.
*
*
* Required permissions for customer-managed IAM policies
*
*
* This call requires permissions that are specific to the protected resource type. For details, see Permissions for GetWebACLForResource in the WAF Developer Guide.
*
*
* @param getWebAclForResourceRequest
* @return A Java Future containing the result of the GetWebACLForResource operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafUnavailableEntityException WAF couldn’t retrieve a resource that you specified for this operation.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate. Verify the
* resources that you are specifying in your request parameters and then retry the operation.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.GetWebACLForResource
* @see AWS
* API Documentation
*/
@Override
public CompletableFuture getWebACLForResource(
GetWebAclForResourceRequest getWebAclForResourceRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getWebAclForResourceRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, getWebAclForResourceRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetWebACLForResource");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetWebAclForResourceResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetWebACLForResource").withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetWebAclForResourceRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(getWebAclForResourceRequest));
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 the API keys that you've defined for the specified scope.
*
*
* API keys are required for the integration of the CAPTCHA API in your JavaScript client applications. The API lets
* you customize the placement and characteristics of the CAPTCHA puzzle for your end users. For more information
* about the CAPTCHA JavaScript integration, see WAF client
* application integration in the WAF Developer Guide.
*
*
* @param listApiKeysRequest
* @return A Java Future containing the result of the ListAPIKeys operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafInvalidOperationException The operation isn't valid.
* - WafInvalidResourceException WAF couldn’t perform the operation because the resource that you
* requested isn’t valid. Check the resource, and try again.
* - 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.ListAPIKeys
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture listAPIKeys(ListApiKeysRequest listApiKeysRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listApiKeysRequest, this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, listApiKeysRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListAPIKeys");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
ListApiKeysResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("ListAPIKeys").withProtocolMetadata(protocolMetadata)
.withMarshaller(new ListApiKeysRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(listApiKeysRequest));
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 the available versions for the specified managed rule group.
*
*
* @param listAvailableManagedRuleGroupVersionsRequest
* @return A Java Future containing the result of the ListAvailableManagedRuleGroupVersions operation returned by
* the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafNonexistentItemException WAF couldn’t perform the operation because your resource doesn't exist.
* If you've just created a resource that you're using in this operation, you might just need to wait a few
* minutes. It can take from a few seconds to a number of minutes for changes to propagate.
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.ListAvailableManagedRuleGroupVersions
* @see AWS API Documentation
*/
@Override
public CompletableFuture listAvailableManagedRuleGroupVersions(
ListAvailableManagedRuleGroupVersionsRequest listAvailableManagedRuleGroupVersionsRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listAvailableManagedRuleGroupVersionsRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration,
listAvailableManagedRuleGroupVersionsRequest.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListAvailableManagedRuleGroupVersions");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory
.createResponseHandler(operationMetadata, ListAvailableManagedRuleGroupVersionsResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("ListAvailableManagedRuleGroupVersions").withProtocolMetadata(protocolMetadata)
.withMarshaller(new ListAvailableManagedRuleGroupVersionsRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(listAvailableManagedRuleGroupVersionsRequest));
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 an array of managed rule groups that are available for you to use. This list includes all Amazon Web
* Services Managed Rules rule groups and all of the Amazon Web Services Marketplace managed rule groups that you're
* subscribed to.
*
*
* @param listAvailableManagedRuleGroupsRequest
* @return A Java Future containing the result of the ListAvailableManagedRuleGroups operation returned by the
* service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a WebACL
with a DefaultAction
that isn't among the types
* available at DefaultAction.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't
* be associated.
*
*
* - WafInvalidOperationException The operation isn't 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.
* - Wafv2Exception Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample Wafv2AsyncClient.ListAvailableManagedRuleGroups
* @see AWS API Documentation
*/
@Override
public CompletableFuture listAvailableManagedRuleGroups(
ListAvailableManagedRuleGroupsRequest listAvailableManagedRuleGroupsRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listAvailableManagedRuleGroupsRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration,
listAvailableManagedRuleGroupsRequest.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAFV2");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListAvailableManagedRuleGroups");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, ListAvailableManagedRuleGroupsResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("ListAvailableManagedRuleGroups").withProtocolMetadata(protocolMetadata)
.withMarshaller(new ListAvailableManagedRuleGroupsRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(listAvailableManagedRuleGroupsRequest));
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 an array of IPSetSummary objects for the IP sets that you manage.
*
*
* @param listIpSetsRequest
* @return A Java Future containing the result of the ListIPSets operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - WafInternalErrorException Your request is valid, but WAF couldn’t perform the operation because of a
* system problem. Retry your request.
* - WafInvalidParameterException The operation failed because WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified a parameter name or value that isn't valid.
*
*
* -
*
* Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
*
*
* -
*
* You tried to update a