![JAR search and dependency download from the Maven repository](/logo.png)
software.amazon.awssdk.services.waf.regional.DefaultWafRegionalAsyncClient Maven / Gradle / Ivy
Show all versions of waf Show documentation
/*
* 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.waf.regional;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.awscore.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.awscore.retry.AwsRetryStrategy;
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.ClientOverrideConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientOption;
import software.amazon.awssdk.core.client.handler.AsyncClientHandler;
import software.amazon.awssdk.core.client.handler.ClientExecutionParams;
import software.amazon.awssdk.core.http.HttpResponseHandler;
import software.amazon.awssdk.core.metrics.CoreMetric;
import software.amazon.awssdk.core.retry.RetryMode;
import software.amazon.awssdk.metrics.MetricCollector;
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.metrics.NoOpMetricCollector;
import software.amazon.awssdk.protocols.core.ExceptionMetadata;
import software.amazon.awssdk.protocols.json.AwsJsonProtocol;
import software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.BaseAwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.JsonOperationMetadata;
import software.amazon.awssdk.retries.api.RetryStrategy;
import software.amazon.awssdk.services.waf.model.AssociateWebAclRequest;
import software.amazon.awssdk.services.waf.model.AssociateWebAclResponse;
import software.amazon.awssdk.services.waf.model.CreateByteMatchSetRequest;
import software.amazon.awssdk.services.waf.model.CreateByteMatchSetResponse;
import software.amazon.awssdk.services.waf.model.CreateGeoMatchSetRequest;
import software.amazon.awssdk.services.waf.model.CreateGeoMatchSetResponse;
import software.amazon.awssdk.services.waf.model.CreateIpSetRequest;
import software.amazon.awssdk.services.waf.model.CreateIpSetResponse;
import software.amazon.awssdk.services.waf.model.CreateRateBasedRuleRequest;
import software.amazon.awssdk.services.waf.model.CreateRateBasedRuleResponse;
import software.amazon.awssdk.services.waf.model.CreateRegexMatchSetRequest;
import software.amazon.awssdk.services.waf.model.CreateRegexMatchSetResponse;
import software.amazon.awssdk.services.waf.model.CreateRegexPatternSetRequest;
import software.amazon.awssdk.services.waf.model.CreateRegexPatternSetResponse;
import software.amazon.awssdk.services.waf.model.CreateRuleGroupRequest;
import software.amazon.awssdk.services.waf.model.CreateRuleGroupResponse;
import software.amazon.awssdk.services.waf.model.CreateRuleRequest;
import software.amazon.awssdk.services.waf.model.CreateRuleResponse;
import software.amazon.awssdk.services.waf.model.CreateSizeConstraintSetRequest;
import software.amazon.awssdk.services.waf.model.CreateSizeConstraintSetResponse;
import software.amazon.awssdk.services.waf.model.CreateSqlInjectionMatchSetRequest;
import software.amazon.awssdk.services.waf.model.CreateSqlInjectionMatchSetResponse;
import software.amazon.awssdk.services.waf.model.CreateWebAclMigrationStackRequest;
import software.amazon.awssdk.services.waf.model.CreateWebAclMigrationStackResponse;
import software.amazon.awssdk.services.waf.model.CreateWebAclRequest;
import software.amazon.awssdk.services.waf.model.CreateWebAclResponse;
import software.amazon.awssdk.services.waf.model.CreateXssMatchSetRequest;
import software.amazon.awssdk.services.waf.model.CreateXssMatchSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteByteMatchSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteByteMatchSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteGeoMatchSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteGeoMatchSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteIpSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteIpSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteLoggingConfigurationRequest;
import software.amazon.awssdk.services.waf.model.DeleteLoggingConfigurationResponse;
import software.amazon.awssdk.services.waf.model.DeletePermissionPolicyRequest;
import software.amazon.awssdk.services.waf.model.DeletePermissionPolicyResponse;
import software.amazon.awssdk.services.waf.model.DeleteRateBasedRuleRequest;
import software.amazon.awssdk.services.waf.model.DeleteRateBasedRuleResponse;
import software.amazon.awssdk.services.waf.model.DeleteRegexMatchSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteRegexMatchSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteRegexPatternSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteRegexPatternSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteRuleGroupRequest;
import software.amazon.awssdk.services.waf.model.DeleteRuleGroupResponse;
import software.amazon.awssdk.services.waf.model.DeleteRuleRequest;
import software.amazon.awssdk.services.waf.model.DeleteRuleResponse;
import software.amazon.awssdk.services.waf.model.DeleteSizeConstraintSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteSizeConstraintSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteSqlInjectionMatchSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteSqlInjectionMatchSetResponse;
import software.amazon.awssdk.services.waf.model.DeleteWebAclRequest;
import software.amazon.awssdk.services.waf.model.DeleteWebAclResponse;
import software.amazon.awssdk.services.waf.model.DeleteXssMatchSetRequest;
import software.amazon.awssdk.services.waf.model.DeleteXssMatchSetResponse;
import software.amazon.awssdk.services.waf.model.DisassociateWebAclRequest;
import software.amazon.awssdk.services.waf.model.DisassociateWebAclResponse;
import software.amazon.awssdk.services.waf.model.GetByteMatchSetRequest;
import software.amazon.awssdk.services.waf.model.GetByteMatchSetResponse;
import software.amazon.awssdk.services.waf.model.GetChangeTokenRequest;
import software.amazon.awssdk.services.waf.model.GetChangeTokenResponse;
import software.amazon.awssdk.services.waf.model.GetChangeTokenStatusRequest;
import software.amazon.awssdk.services.waf.model.GetChangeTokenStatusResponse;
import software.amazon.awssdk.services.waf.model.GetGeoMatchSetRequest;
import software.amazon.awssdk.services.waf.model.GetGeoMatchSetResponse;
import software.amazon.awssdk.services.waf.model.GetIpSetRequest;
import software.amazon.awssdk.services.waf.model.GetIpSetResponse;
import software.amazon.awssdk.services.waf.model.GetLoggingConfigurationRequest;
import software.amazon.awssdk.services.waf.model.GetLoggingConfigurationResponse;
import software.amazon.awssdk.services.waf.model.GetPermissionPolicyRequest;
import software.amazon.awssdk.services.waf.model.GetPermissionPolicyResponse;
import software.amazon.awssdk.services.waf.model.GetRateBasedRuleManagedKeysRequest;
import software.amazon.awssdk.services.waf.model.GetRateBasedRuleManagedKeysResponse;
import software.amazon.awssdk.services.waf.model.GetRateBasedRuleRequest;
import software.amazon.awssdk.services.waf.model.GetRateBasedRuleResponse;
import software.amazon.awssdk.services.waf.model.GetRegexMatchSetRequest;
import software.amazon.awssdk.services.waf.model.GetRegexMatchSetResponse;
import software.amazon.awssdk.services.waf.model.GetRegexPatternSetRequest;
import software.amazon.awssdk.services.waf.model.GetRegexPatternSetResponse;
import software.amazon.awssdk.services.waf.model.GetRuleGroupRequest;
import software.amazon.awssdk.services.waf.model.GetRuleGroupResponse;
import software.amazon.awssdk.services.waf.model.GetRuleRequest;
import software.amazon.awssdk.services.waf.model.GetRuleResponse;
import software.amazon.awssdk.services.waf.model.GetSampledRequestsRequest;
import software.amazon.awssdk.services.waf.model.GetSampledRequestsResponse;
import software.amazon.awssdk.services.waf.model.GetSizeConstraintSetRequest;
import software.amazon.awssdk.services.waf.model.GetSizeConstraintSetResponse;
import software.amazon.awssdk.services.waf.model.GetSqlInjectionMatchSetRequest;
import software.amazon.awssdk.services.waf.model.GetSqlInjectionMatchSetResponse;
import software.amazon.awssdk.services.waf.model.GetWebAclForResourceRequest;
import software.amazon.awssdk.services.waf.model.GetWebAclForResourceResponse;
import software.amazon.awssdk.services.waf.model.GetWebAclRequest;
import software.amazon.awssdk.services.waf.model.GetWebAclResponse;
import software.amazon.awssdk.services.waf.model.GetXssMatchSetRequest;
import software.amazon.awssdk.services.waf.model.GetXssMatchSetResponse;
import software.amazon.awssdk.services.waf.model.ListActivatedRulesInRuleGroupRequest;
import software.amazon.awssdk.services.waf.model.ListActivatedRulesInRuleGroupResponse;
import software.amazon.awssdk.services.waf.model.ListByteMatchSetsRequest;
import software.amazon.awssdk.services.waf.model.ListByteMatchSetsResponse;
import software.amazon.awssdk.services.waf.model.ListGeoMatchSetsRequest;
import software.amazon.awssdk.services.waf.model.ListGeoMatchSetsResponse;
import software.amazon.awssdk.services.waf.model.ListIpSetsRequest;
import software.amazon.awssdk.services.waf.model.ListIpSetsResponse;
import software.amazon.awssdk.services.waf.model.ListLoggingConfigurationsRequest;
import software.amazon.awssdk.services.waf.model.ListLoggingConfigurationsResponse;
import software.amazon.awssdk.services.waf.model.ListRateBasedRulesRequest;
import software.amazon.awssdk.services.waf.model.ListRateBasedRulesResponse;
import software.amazon.awssdk.services.waf.model.ListRegexMatchSetsRequest;
import software.amazon.awssdk.services.waf.model.ListRegexMatchSetsResponse;
import software.amazon.awssdk.services.waf.model.ListRegexPatternSetsRequest;
import software.amazon.awssdk.services.waf.model.ListRegexPatternSetsResponse;
import software.amazon.awssdk.services.waf.model.ListResourcesForWebAclRequest;
import software.amazon.awssdk.services.waf.model.ListResourcesForWebAclResponse;
import software.amazon.awssdk.services.waf.model.ListRuleGroupsRequest;
import software.amazon.awssdk.services.waf.model.ListRuleGroupsResponse;
import software.amazon.awssdk.services.waf.model.ListRulesRequest;
import software.amazon.awssdk.services.waf.model.ListRulesResponse;
import software.amazon.awssdk.services.waf.model.ListSizeConstraintSetsRequest;
import software.amazon.awssdk.services.waf.model.ListSizeConstraintSetsResponse;
import software.amazon.awssdk.services.waf.model.ListSqlInjectionMatchSetsRequest;
import software.amazon.awssdk.services.waf.model.ListSqlInjectionMatchSetsResponse;
import software.amazon.awssdk.services.waf.model.ListSubscribedRuleGroupsRequest;
import software.amazon.awssdk.services.waf.model.ListSubscribedRuleGroupsResponse;
import software.amazon.awssdk.services.waf.model.ListTagsForResourceRequest;
import software.amazon.awssdk.services.waf.model.ListTagsForResourceResponse;
import software.amazon.awssdk.services.waf.model.ListWebAcLsRequest;
import software.amazon.awssdk.services.waf.model.ListWebAcLsResponse;
import software.amazon.awssdk.services.waf.model.ListXssMatchSetsRequest;
import software.amazon.awssdk.services.waf.model.ListXssMatchSetsResponse;
import software.amazon.awssdk.services.waf.model.PutLoggingConfigurationRequest;
import software.amazon.awssdk.services.waf.model.PutLoggingConfigurationResponse;
import software.amazon.awssdk.services.waf.model.PutPermissionPolicyRequest;
import software.amazon.awssdk.services.waf.model.PutPermissionPolicyResponse;
import software.amazon.awssdk.services.waf.model.TagResourceRequest;
import software.amazon.awssdk.services.waf.model.TagResourceResponse;
import software.amazon.awssdk.services.waf.model.UntagResourceRequest;
import software.amazon.awssdk.services.waf.model.UntagResourceResponse;
import software.amazon.awssdk.services.waf.model.UpdateByteMatchSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateByteMatchSetResponse;
import software.amazon.awssdk.services.waf.model.UpdateGeoMatchSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateGeoMatchSetResponse;
import software.amazon.awssdk.services.waf.model.UpdateIpSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateIpSetResponse;
import software.amazon.awssdk.services.waf.model.UpdateRateBasedRuleRequest;
import software.amazon.awssdk.services.waf.model.UpdateRateBasedRuleResponse;
import software.amazon.awssdk.services.waf.model.UpdateRegexMatchSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateRegexMatchSetResponse;
import software.amazon.awssdk.services.waf.model.UpdateRegexPatternSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateRegexPatternSetResponse;
import software.amazon.awssdk.services.waf.model.UpdateRuleGroupRequest;
import software.amazon.awssdk.services.waf.model.UpdateRuleGroupResponse;
import software.amazon.awssdk.services.waf.model.UpdateRuleRequest;
import software.amazon.awssdk.services.waf.model.UpdateRuleResponse;
import software.amazon.awssdk.services.waf.model.UpdateSizeConstraintSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateSizeConstraintSetResponse;
import software.amazon.awssdk.services.waf.model.UpdateSqlInjectionMatchSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateSqlInjectionMatchSetResponse;
import software.amazon.awssdk.services.waf.model.UpdateWebAclRequest;
import software.amazon.awssdk.services.waf.model.UpdateWebAclResponse;
import software.amazon.awssdk.services.waf.model.UpdateXssMatchSetRequest;
import software.amazon.awssdk.services.waf.model.UpdateXssMatchSetResponse;
import software.amazon.awssdk.services.waf.model.WafBadRequestException;
import software.amazon.awssdk.services.waf.model.WafDisallowedNameException;
import software.amazon.awssdk.services.waf.model.WafEntityMigrationException;
import software.amazon.awssdk.services.waf.model.WafException;
import software.amazon.awssdk.services.waf.model.WafInternalErrorException;
import software.amazon.awssdk.services.waf.model.WafInvalidAccountException;
import software.amazon.awssdk.services.waf.model.WafInvalidOperationException;
import software.amazon.awssdk.services.waf.model.WafInvalidParameterException;
import software.amazon.awssdk.services.waf.model.WafInvalidPermissionPolicyException;
import software.amazon.awssdk.services.waf.model.WafInvalidRegexPatternException;
import software.amazon.awssdk.services.waf.model.WafLimitsExceededException;
import software.amazon.awssdk.services.waf.model.WafNonEmptyEntityException;
import software.amazon.awssdk.services.waf.model.WafNonexistentContainerException;
import software.amazon.awssdk.services.waf.model.WafNonexistentItemException;
import software.amazon.awssdk.services.waf.model.WafReferencedItemException;
import software.amazon.awssdk.services.waf.model.WafServiceLinkedRoleErrorException;
import software.amazon.awssdk.services.waf.model.WafStaleDataException;
import software.amazon.awssdk.services.waf.model.WafSubscriptionNotFoundException;
import software.amazon.awssdk.services.waf.model.WafTagOperationException;
import software.amazon.awssdk.services.waf.model.WafTagOperationInternalErrorException;
import software.amazon.awssdk.services.waf.model.WafUnavailableEntityException;
import software.amazon.awssdk.services.waf.regional.internal.WafRegionalServiceClientConfigurationBuilder;
import software.amazon.awssdk.services.waf.regional.transform.AssociateWebAclRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateByteMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateGeoMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateIpSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateRateBasedRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateRegexMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateSizeConstraintSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateSqlInjectionMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateWebAclMigrationStackRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateWebAclRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.CreateXssMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteByteMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteGeoMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteIpSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteLoggingConfigurationRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeletePermissionPolicyRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteRateBasedRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteRegexMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteSizeConstraintSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteSqlInjectionMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteWebAclRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DeleteXssMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.DisassociateWebAclRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetByteMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetChangeTokenRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetChangeTokenStatusRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetGeoMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetIpSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetLoggingConfigurationRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetPermissionPolicyRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetRateBasedRuleManagedKeysRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetRateBasedRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetRegexMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetSampledRequestsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetSizeConstraintSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetSqlInjectionMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetWebAclForResourceRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetWebAclRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.GetXssMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListActivatedRulesInRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListByteMatchSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListGeoMatchSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListIpSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListLoggingConfigurationsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListRateBasedRulesRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListRegexMatchSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListRegexPatternSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListResourcesForWebAclRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListRuleGroupsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListRulesRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListSizeConstraintSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListSqlInjectionMatchSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListSubscribedRuleGroupsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListTagsForResourceRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListWebAcLsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.ListXssMatchSetsRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.PutLoggingConfigurationRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.PutPermissionPolicyRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.TagResourceRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UntagResourceRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateByteMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateGeoMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateIpSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateRateBasedRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateRegexMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateRegexPatternSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateRuleGroupRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateRuleRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateSizeConstraintSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateSqlInjectionMatchSetRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateWebAclRequestMarshaller;
import software.amazon.awssdk.services.waf.regional.transform.UpdateXssMatchSetRequestMarshaller;
import software.amazon.awssdk.utils.CompletableFutureUtils;
/**
* Internal implementation of {@link WafRegionalAsyncClient}.
*
* @see WafRegionalAsyncClient#builder()
*/
@Generated("software.amazon.awssdk:codegen")
@SdkInternalApi
final class DefaultWafRegionalAsyncClient implements WafRegionalAsyncClient {
private static final Logger log = LoggerFactory.getLogger(DefaultWafRegionalAsyncClient.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 DefaultWafRegionalAsyncClient(SdkClientConfiguration clientConfiguration) {
this.clientHandler = new AwsAsyncClientHandler(clientConfiguration);
this.clientConfiguration = clientConfiguration.toBuilder().option(SdkClientOption.SDK_CLIENT, this).build();
this.protocolFactory = init(AwsJsonProtocolFactory.builder()).build();
}
/**
*
*
* This is AWS WAF Classic Regional documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Associates a web ACL with a resource, either an application load balancer or Amazon API Gateway stage.
*
*
* @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. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified an invalid parameter name.
*
*
* -
*
* You specified an invalid value.
*
*
* -
*
* You tried to update an object (ByteMatchSet
, IPSet
, Rule
, or
* WebACL
) using an action other than INSERT
or DELETE
.
*
*
* -
*
* You tried to create a WebACL
with a DefaultAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to create a RateBasedRule
with a RateKey
value other than
* IP
.
*
*
* -
*
* You tried to update a WebACL
with a WafAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to update a ByteMatchSet
with a FieldToMatch
Type
other
* than HEADER, METHOD, QUERY_STRING, URI, or BODY.
*
*
* -
*
* You tried to update a ByteMatchSet
with a Field
of HEADER
but no
* value for Data
.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL
* cannot be associated.
*
*
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafUnavailableEntityException The operation failed because the entity referenced is temporarily
* unavailable. 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.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, "WAF Regional");
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Creates a ByteMatchSet
. You then use UpdateByteMatchSet to identify the part of a web request
* that you want AWS WAF to inspect, such as the values of the User-Agent
header or the query string.
* For example, you can create a ByteMatchSet
that matches any requests with User-Agent
* headers that contain the string BadBot
. You can then configure AWS WAF to reject those requests.
*
*
* To create and configure a ByteMatchSet
, perform the following steps:
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* CreateByteMatchSet
request.
*
*
* -
*
* Submit a CreateByteMatchSet
request.
*
*
* -
*
* Use GetChangeToken
to get the change token that you provide in the ChangeToken
* parameter of an UpdateByteMatchSet
request.
*
*
* -
*
* Submit an UpdateByteMatchSet request to specify the part of the request that you want AWS WAF to inspect
* (for example, the header or the URI) and the value that you want AWS WAF to watch for.
*
*
*
*
* For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide.
*
*
* @param createByteMatchSetRequest
* @return A Java Future containing the result of the CreateByteMatchSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafDisallowedNameException The name specified is invalid.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified an invalid parameter name.
*
*
* -
*
* You specified an invalid value.
*
*
* -
*
* You tried to update an object (ByteMatchSet
, IPSet
, Rule
, or
* WebACL
) using an action other than INSERT
or DELETE
.
*
*
* -
*
* You tried to create a WebACL
with a DefaultAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to create a RateBasedRule
with a RateKey
value other than
* IP
.
*
*
* -
*
* You tried to update a WebACL
with a WafAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to update a ByteMatchSet
with a FieldToMatch
Type
other
* than HEADER, METHOD, QUERY_STRING, URI, or BODY.
*
*
* -
*
* You tried to update a ByteMatchSet
with a Field
of HEADER
but no
* value for Data
.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL
* cannot be associated.
*
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of
*
WebACL
objects that you can create for an AWS account. For more information, see Limits in the AWS 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.CreateByteMatchSet
* @see AWS API Documentation
*/
@Override
public CompletableFuture createByteMatchSet(CreateByteMatchSetRequest createByteMatchSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createByteMatchSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, createByteMatchSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateByteMatchSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, CreateByteMatchSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateByteMatchSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new CreateByteMatchSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(createByteMatchSetRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Creates an GeoMatchSet, which you use to specify which web requests you want to allow or block based on
* the country that the requests originate from. For example, if you're receiving a lot of requests from one or more
* countries and you want to block the requests, you can create an GeoMatchSet
that contains those
* countries and then configure AWS WAF to block the requests.
*
*
* To create and configure a GeoMatchSet
, perform the following steps:
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* CreateGeoMatchSet
request.
*
*
* -
*
* Submit a CreateGeoMatchSet
request.
*
*
* -
*
* Use GetChangeToken
to get the change token that you provide in the ChangeToken
* parameter of an UpdateGeoMatchSet request.
*
*
* -
*
* Submit an UpdateGeoMatchSetSet
request to specify the countries that you want AWS WAF to watch for.
*
*
*
*
* For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide.
*
*
* @param createGeoMatchSetRequest
* @return A Java Future containing the result of the CreateGeoMatchSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafDisallowedNameException The name specified is invalid.
* - WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified an invalid parameter name.
*
*
* -
*
* You specified an invalid value.
*
*
* -
*
* You tried to update an object (ByteMatchSet
, IPSet
, Rule
, or
* WebACL
) using an action other than INSERT
or DELETE
.
*
*
* -
*
* You tried to create a WebACL
with a DefaultAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to create a RateBasedRule
with a RateKey
value other than
* IP
.
*
*
* -
*
* You tried to update a WebACL
with a WafAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to update a ByteMatchSet
with a FieldToMatch
Type
other
* than HEADER, METHOD, QUERY_STRING, URI, or BODY.
*
*
* -
*
* You tried to update a ByteMatchSet
with a Field
of HEADER
but no
* value for Data
.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL
* cannot be associated.
*
*
* - WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of
*
WebACL
objects that you can create for an AWS account. For more information, see Limits in the AWS 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.CreateGeoMatchSet
* @see AWS API Documentation
*/
@Override
public CompletableFuture createGeoMatchSet(CreateGeoMatchSetRequest createGeoMatchSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createGeoMatchSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, createGeoMatchSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateGeoMatchSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, CreateGeoMatchSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateGeoMatchSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new CreateGeoMatchSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(createGeoMatchSetRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Creates an IPSet, which you use to specify which web requests that you want to allow or block based on the
* IP addresses that the requests originate from. For example, if you're receiving a lot of requests from one or
* more individual IP addresses or one or more ranges of IP addresses and you want to block the requests, you can
* create an IPSet
that contains those IP addresses and then configure AWS WAF to block the requests.
*
*
* To create and configure an IPSet
, perform the following steps:
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* CreateIPSet
request.
*
*
* -
*
* Submit a CreateIPSet
request.
*
*
* -
*
* Use GetChangeToken
to get the change token that you provide in the ChangeToken
* parameter of an UpdateIPSet request.
*
*
* -
*
* Submit an UpdateIPSet
request to specify the IP addresses that you want AWS WAF to watch for.
*
*
*
*
* For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide.
*
*
* @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. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafDisallowedNameException The name specified is invalid.
* - WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified an invalid parameter name.
*
*
* -
*
* You specified an invalid value.
*
*
* -
*
* You tried to update an object (ByteMatchSet
, IPSet
, Rule
, or
* WebACL
) using an action other than INSERT
or DELETE
.
*
*
* -
*
* You tried to create a WebACL
with a DefaultAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to create a RateBasedRule
with a RateKey
value other than
* IP
.
*
*
* -
*
* You tried to update a WebACL
with a WafAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to update a ByteMatchSet
with a FieldToMatch
Type
other
* than HEADER, METHOD, QUERY_STRING, URI, or BODY.
*
*
* -
*
* You tried to update a ByteMatchSet
with a Field
of HEADER
but no
* value for Data
.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL
* cannot be associated.
*
*
* - WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of
*
WebACL
objects that you can create for an AWS account. For more information, see Limits in the AWS 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.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, "WAF Regional");
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Creates a RateBasedRule. The RateBasedRule
contains a RateLimit
, which specifies
* the maximum number of requests that AWS WAF allows from a specified IP address in a five-minute period. The
* RateBasedRule
also contains the IPSet
objects, ByteMatchSet
objects, and
* other predicates that identify the requests that you want to count or block if these requests exceed the
* RateLimit
.
*
*
* If you add more than one predicate to a RateBasedRule
, a request not only must exceed the
* RateLimit
, but it also must match all the conditions to be counted or blocked. For example, suppose
* you add the following to a RateBasedRule
:
*
*
* -
*
* An IPSet
that matches the IP address 192.0.2.44/32
*
*
* -
*
* A ByteMatchSet
that matches BadBot
in the User-Agent
header
*
*
*
*
* Further, you specify a RateLimit
of 1,000.
*
*
* You then add the RateBasedRule
to a WebACL
and specify that you want to block requests
* that meet the conditions in the rule. For a request to be blocked, it must come from the IP address 192.0.2.44
* and the User-Agent
header in the request must contain the value BadBot
. Further,
* requests that match these two conditions must be received at a rate of more than 1,000 requests every five
* minutes. If both conditions are met and the rate is exceeded, AWS WAF blocks the requests. If the rate drops
* below 1,000 for a five-minute period, AWS WAF no longer blocks the requests.
*
*
* As a second example, suppose you want to limit requests to a particular page on your site. To do this, you could
* add the following to a RateBasedRule
:
*
*
* -
*
* A ByteMatchSet
with FieldToMatch
of URI
*
*
* -
*
* A PositionalConstraint
of STARTS_WITH
*
*
* -
*
* A TargetString
of login
*
*
*
*
* Further, you specify a RateLimit
of 1,000.
*
*
* By adding this RateBasedRule
to a WebACL
, you could limit requests to your login page
* without affecting the rest of your site.
*
*
* To create and configure a RateBasedRule
, perform the following steps:
*
*
* -
*
* Create and update the predicates that you want to include in the rule. For more information, see
* CreateByteMatchSet, CreateIPSet, and CreateSqlInjectionMatchSet.
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* CreateRule
request.
*
*
* -
*
* Submit a CreateRateBasedRule
request.
*
*
* -
*
* Use GetChangeToken
to get the change token that you provide in the ChangeToken
* parameter of an UpdateRule request.
*
*
* -
*
* Submit an UpdateRateBasedRule
request to specify the predicates that you want to include in the
* rule.
*
*
* -
*
* Create and update a WebACL
that contains the RateBasedRule
. For more information, see
* CreateWebACL.
*
*
*
*
* For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide.
*
*
* @param createRateBasedRuleRequest
* @return A Java Future containing the result of the CreateRateBasedRule operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafDisallowedNameException The name specified is invalid.
* - WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified an invalid parameter name.
*
*
* -
*
* You specified an invalid value.
*
*
* -
*
* You tried to update an object (ByteMatchSet
, IPSet
, Rule
, or
* WebACL
) using an action other than INSERT
or DELETE
.
*
*
* -
*
* You tried to create a WebACL
with a DefaultAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to create a RateBasedRule
with a RateKey
value other than
* IP
.
*
*
* -
*
* You tried to update a WebACL
with a WafAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to update a ByteMatchSet
with a FieldToMatch
Type
other
* than HEADER, METHOD, QUERY_STRING, URI, or BODY.
*
*
* -
*
* You tried to update a ByteMatchSet
with a Field
of HEADER
but no
* value for Data
.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL
* cannot be associated.
*
*
* - WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of
*
WebACL
objects that you can create for an AWS account. For more information, see Limits in the AWS WAF
* Developer Guide.
* - WafTagOperationException
* - WafTagOperationInternalErrorException
* - WafBadRequestException
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.CreateRateBasedRule
* @see AWS API Documentation
*/
@Override
public CompletableFuture createRateBasedRule(
CreateRateBasedRuleRequest createRateBasedRuleRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createRateBasedRuleRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, createRateBasedRuleRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateRateBasedRule");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, CreateRateBasedRuleResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateRateBasedRule").withProtocolMetadata(protocolMetadata)
.withMarshaller(new CreateRateBasedRuleRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(createRateBasedRuleRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Creates a RegexMatchSet. You then use UpdateRegexMatchSet to identify the part of a web request
* that you want AWS WAF to inspect, such as the values of the User-Agent
header or the query string.
* For example, you can create a RegexMatchSet
that contains a RegexMatchTuple
that looks
* for any requests with User-Agent
headers that match a RegexPatternSet
with pattern
* B[a@]dB[o0]t
. You can then configure AWS WAF to reject those requests.
*
*
* To create and configure a RegexMatchSet
, perform the following steps:
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* CreateRegexMatchSet
request.
*
*
* -
*
* Submit a CreateRegexMatchSet
request.
*
*
* -
*
* Use GetChangeToken
to get the change token that you provide in the ChangeToken
* parameter of an UpdateRegexMatchSet
request.
*
*
* -
*
* Submit an UpdateRegexMatchSet request to specify the part of the request that you want AWS WAF to inspect
* (for example, the header or the URI) and the value, using a RegexPatternSet
, that you want AWS WAF
* to watch for.
*
*
*
*
* For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide.
*
*
* @param createRegexMatchSetRequest
* @return A Java Future containing the result of the CreateRegexMatchSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafDisallowedNameException The name specified is invalid.
* - WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of
*
WebACL
objects that you can create for an AWS account. For more information, see Limits in the AWS 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.CreateRegexMatchSet
* @see AWS API Documentation
*/
@Override
public CompletableFuture createRegexMatchSet(
CreateRegexMatchSetRequest createRegexMatchSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createRegexMatchSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, createRegexMatchSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateRegexMatchSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, CreateRegexMatchSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateRegexMatchSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new CreateRegexMatchSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(createRegexMatchSetRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Creates a RegexPatternSet
. You then use UpdateRegexPatternSet to specify the regular
* expression (regex) pattern that you want AWS WAF to search for, such as B[a@]dB[o0]t
. You can then
* configure AWS WAF to reject those requests.
*
*
* To create and configure a RegexPatternSet
, perform the following steps:
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* CreateRegexPatternSet
request.
*
*
* -
*
* Submit a CreateRegexPatternSet
request.
*
*
* -
*
* Use GetChangeToken
to get the change token that you provide in the ChangeToken
* parameter of an UpdateRegexPatternSet
request.
*
*
* -
*
* Submit an UpdateRegexPatternSet request to specify the string that you want AWS WAF to watch for.
*
*
*
*
* For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide.
*
*
* @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. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafDisallowedNameException The name specified is invalid.
* - WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of
*
WebACL
objects that you can create for an AWS account. For more information, see Limits in the AWS 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.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, "WAF Regional");
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Creates a Rule
, which contains the IPSet
objects, ByteMatchSet
objects,
* and other predicates that identify the requests that you want to block. If you add more than one predicate to a
* Rule
, a request must match all of the specifications to be allowed or blocked. For example, suppose
* that you add the following to a Rule
:
*
*
* -
*
* An IPSet
that matches the IP address 192.0.2.44/32
*
*
* -
*
* A ByteMatchSet
that matches BadBot
in the User-Agent
header
*
*
*
*
* You then add the Rule
to a WebACL
and specify that you want to blocks requests that
* satisfy the Rule
. For a request to be blocked, it must come from the IP address 192.0.2.44
* and the User-Agent
header in the request must contain the value BadBot
.
*
*
* To create and configure a Rule
, perform the following steps:
*
*
* -
*
* Create and update the predicates that you want to include in the Rule
. For more information, see
* CreateByteMatchSet, CreateIPSet, and CreateSqlInjectionMatchSet.
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* CreateRule
request.
*
*
* -
*
* Submit a CreateRule
request.
*
*
* -
*
* Use GetChangeToken
to get the change token that you provide in the ChangeToken
* parameter of an UpdateRule request.
*
*
* -
*
* Submit an UpdateRule
request to specify the predicates that you want to include in the
* Rule
.
*
*
* -
*
* Create and update a WebACL
that contains the Rule
. For more information, see
* CreateWebACL.
*
*
*
*
* For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide.
*
*
* @param createRuleRequest
* @return A Java Future containing the result of the CreateRule operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafDisallowedNameException The name specified is invalid.
* - WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified an invalid parameter name.
*
*
* -
*
* You specified an invalid value.
*
*
* -
*
* You tried to update an object (ByteMatchSet
, IPSet
, Rule
, or
* WebACL
) using an action other than INSERT
or DELETE
.
*
*
* -
*
* You tried to create a WebACL
with a DefaultAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to create a RateBasedRule
with a RateKey
value other than
* IP
.
*
*
* -
*
* You tried to update a WebACL
with a WafAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to update a ByteMatchSet
with a FieldToMatch
Type
other
* than HEADER, METHOD, QUERY_STRING, URI, or BODY.
*
*
* -
*
* You tried to update a ByteMatchSet
with a Field
of HEADER
but no
* value for Data
.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL
* cannot be associated.
*
*
* - WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of
*
WebACL
objects that you can create for an AWS account. For more information, see Limits in the AWS WAF
* Developer Guide.
* - WafTagOperationException
* - WafTagOperationInternalErrorException
* - WafBadRequestException
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.CreateRule
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture createRule(CreateRuleRequest createRuleRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createRuleRequest, this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, createRuleRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateRule");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
CreateRuleResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams().withOperationName("CreateRule")
.withProtocolMetadata(protocolMetadata)
.withMarshaller(new CreateRuleRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(createRuleRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Creates a RuleGroup
. A rule group is a collection of predefined rules that you add to a web ACL. You
* use UpdateRuleGroup to add rules to the rule group.
*
*
* Rule groups are subject to the following limits:
*
*
* -
*
* Three rule groups per account. You can request an increase to this limit by contacting customer support.
*
*
* -
*
* One rule group per web ACL.
*
*
* -
*
* Ten rules per rule group.
*
*
*
*
* For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide.
*
*
* @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. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafDisallowedNameException The name specified is invalid.
* - WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of
*
WebACL
objects that you can create for an AWS account. For more information, see Limits in the AWS WAF
* Developer Guide.
* - WafTagOperationException
* - WafTagOperationInternalErrorException
* - WafBadRequestException
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.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, "WAF Regional");
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Creates a SizeConstraintSet
. You then use UpdateSizeConstraintSet to identify the part of a
* web request that you want AWS WAF to check for length, such as the length of the User-Agent
header
* or the length of the query string. For example, you can create a SizeConstraintSet
that matches any
* requests that have a query string that is longer than 100 bytes. You can then configure AWS WAF to reject those
* requests.
*
*
* To create and configure a SizeConstraintSet
, perform the following steps:
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* CreateSizeConstraintSet
request.
*
*
* -
*
* Submit a CreateSizeConstraintSet
request.
*
*
* -
*
* Use GetChangeToken
to get the change token that you provide in the ChangeToken
* parameter of an UpdateSizeConstraintSet
request.
*
*
* -
*
* Submit an UpdateSizeConstraintSet request to specify the part of the request that you want AWS WAF to
* inspect (for example, the header or the URI) and the value that you want AWS WAF to watch for.
*
*
*
*
* For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide.
*
*
* @param createSizeConstraintSetRequest
* @return A Java Future containing the result of the CreateSizeConstraintSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafDisallowedNameException The name specified is invalid.
* - WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified an invalid parameter name.
*
*
* -
*
* You specified an invalid value.
*
*
* -
*
* You tried to update an object (ByteMatchSet
, IPSet
, Rule
, or
* WebACL
) using an action other than INSERT
or DELETE
.
*
*
* -
*
* You tried to create a WebACL
with a DefaultAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to create a RateBasedRule
with a RateKey
value other than
* IP
.
*
*
* -
*
* You tried to update a WebACL
with a WafAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to update a ByteMatchSet
with a FieldToMatch
Type
other
* than HEADER, METHOD, QUERY_STRING, URI, or BODY.
*
*
* -
*
* You tried to update a ByteMatchSet
with a Field
of HEADER
but no
* value for Data
.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL
* cannot be associated.
*
*
* - WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of
*
WebACL
objects that you can create for an AWS account. For more information, see Limits in the AWS 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.CreateSizeConstraintSet
* @see AWS API Documentation
*/
@Override
public CompletableFuture createSizeConstraintSet(
CreateSizeConstraintSetRequest createSizeConstraintSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createSizeConstraintSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, createSizeConstraintSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateSizeConstraintSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, CreateSizeConstraintSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateSizeConstraintSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new CreateSizeConstraintSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(createSizeConstraintSetRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Creates a SqlInjectionMatchSet, which you use to allow, block, or count requests that contain snippets of
* SQL code in a specified part of web requests. AWS WAF searches for character sequences that are likely to be
* malicious strings.
*
*
* To create and configure a SqlInjectionMatchSet
, perform the following steps:
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* CreateSqlInjectionMatchSet
request.
*
*
* -
*
* Submit a CreateSqlInjectionMatchSet
request.
*
*
* -
*
* Use GetChangeToken
to get the change token that you provide in the ChangeToken
* parameter of an UpdateSqlInjectionMatchSet request.
*
*
* -
*
* Submit an UpdateSqlInjectionMatchSet request to specify the parts of web requests in which you want to
* allow, block, or count malicious SQL code.
*
*
*
*
* For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide.
*
*
* @param createSqlInjectionMatchSetRequest
* A request to create a SqlInjectionMatchSet.
* @return A Java Future containing the result of the CreateSqlInjectionMatchSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafDisallowedNameException The name specified is invalid.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified an invalid parameter name.
*
*
* -
*
* You specified an invalid value.
*
*
* -
*
* You tried to update an object (ByteMatchSet
, IPSet
, Rule
, or
* WebACL
) using an action other than INSERT
or DELETE
.
*
*
* -
*
* You tried to create a WebACL
with a DefaultAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to create a RateBasedRule
with a RateKey
value other than
* IP
.
*
*
* -
*
* You tried to update a WebACL
with a WafAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to update a ByteMatchSet
with a FieldToMatch
Type
other
* than HEADER, METHOD, QUERY_STRING, URI, or BODY.
*
*
* -
*
* You tried to update a ByteMatchSet
with a Field
of HEADER
but no
* value for Data
.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL
* cannot be associated.
*
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of
*
WebACL
objects that you can create for an AWS account. For more information, see Limits in the AWS 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.CreateSqlInjectionMatchSet
* @see AWS API Documentation
*/
@Override
public CompletableFuture createSqlInjectionMatchSet(
CreateSqlInjectionMatchSetRequest createSqlInjectionMatchSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createSqlInjectionMatchSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, createSqlInjectionMatchSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateSqlInjectionMatchSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, CreateSqlInjectionMatchSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateSqlInjectionMatchSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new CreateSqlInjectionMatchSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(createSqlInjectionMatchSetRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Creates a WebACL
, which contains the Rules
that identify the CloudFront web requests
* that you want to allow, block, or count. AWS WAF evaluates Rules
in order based on the value of
* Priority
for each Rule
.
*
*
* You also specify a default action, either ALLOW
or BLOCK
. If a web request doesn't
* match any of the Rules
in a WebACL
, AWS WAF responds to the request with the default
* action.
*
*
* To create and configure a WebACL
, perform the following steps:
*
*
* -
*
* Create and update the ByteMatchSet
objects and other predicates that you want to include in
* Rules
. For more information, see CreateByteMatchSet, UpdateByteMatchSet,
* CreateIPSet, UpdateIPSet, CreateSqlInjectionMatchSet, and UpdateSqlInjectionMatchSet.
*
*
* -
*
* Create and update the Rules
that you want to include in the WebACL
. For more
* information, see CreateRule and UpdateRule.
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* CreateWebACL
request.
*
*
* -
*
* Submit a CreateWebACL
request.
*
*
* -
*
* Use GetChangeToken
to get the change token that you provide in the ChangeToken
* parameter of an UpdateWebACL request.
*
*
* -
*
* Submit an UpdateWebACL request to specify the Rules
that you want to include in the
* WebACL
, to specify the default action, and to associate the WebACL
with a CloudFront
* distribution.
*
*
*
*
* For more information about how to use the AWS WAF API, see the AWS WAF Developer Guide.
*
*
* @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. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafDisallowedNameException The name specified is invalid.
* - WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified an invalid parameter name.
*
*
* -
*
* You specified an invalid value.
*
*
* -
*
* You tried to update an object (ByteMatchSet
, IPSet
, Rule
, or
* WebACL
) using an action other than INSERT
or DELETE
.
*
*
* -
*
* You tried to create a WebACL
with a DefaultAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to create a RateBasedRule
with a RateKey
value other than
* IP
.
*
*
* -
*
* You tried to update a WebACL
with a WafAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to update a ByteMatchSet
with a FieldToMatch
Type
other
* than HEADER, METHOD, QUERY_STRING, URI, or BODY.
*
*
* -
*
* You tried to update a ByteMatchSet
with a Field
of HEADER
but no
* value for Data
.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL
* cannot be associated.
*
*
* - WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of
*
WebACL
objects that you can create for an AWS account. For more information, see Limits in the AWS WAF
* Developer Guide.
* - WafTagOperationException
* - WafTagOperationInternalErrorException
* - WafBadRequestException
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.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, "WAF Regional");
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);
}
}
/**
*
* Creates an AWS CloudFormation WAFV2 template for the specified web ACL in the specified Amazon S3 bucket. Then,
* in CloudFormation, you create a stack from the template, to create the web ACL and its resources in AWS WAFV2.
* Use this to migrate your AWS WAF Classic web ACL to the latest version of AWS WAF.
*
*
* This is part of a larger migration procedure for web ACLs from AWS WAF Classic to the latest version of AWS WAF.
* For the full procedure, including caveats and manual steps to complete the migration and switch over to the new
* web ACL, see Migrating your AWS
* WAF Classic resources to AWS WAF in the AWS WAF Developer Guide.
*
*
* @param createWebAclMigrationStackRequest
* @return A Java Future containing the result of the CreateWebACLMigrationStack operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified an invalid parameter name.
*
*
* -
*
* You specified an invalid value.
*
*
* -
*
* You tried to update an object (ByteMatchSet
, IPSet
, Rule
, or
* WebACL
) using an action other than INSERT
or DELETE
.
*
*
* -
*
* You tried to create a WebACL
with a DefaultAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to create a RateBasedRule
with a RateKey
value other than
* IP
.
*
*
* -
*
* You tried to update a WebACL
with a WafAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to update a ByteMatchSet
with a FieldToMatch
Type
other
* than HEADER, METHOD, QUERY_STRING, URI, or BODY.
*
*
* -
*
* You tried to update a ByteMatchSet
with a Field
of HEADER
but no
* value for Data
.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL
* cannot be associated.
*
*
* - WafInvalidOperationException The operation failed because there was nothing to do. For example:
*
* -
*
* You tried to remove a Rule
from a WebACL
, but the Rule
isn't in
* the specified WebACL
.
*
*
* -
*
* You tried to remove an IP address from an IPSet
, but the IP address isn't in the specified
* IPSet
.
*
*
* -
*
* You tried to remove a ByteMatchTuple
from a ByteMatchSet
, but the
* ByteMatchTuple
isn't in the specified WebACL
.
*
*
* -
*
* You tried to add a Rule
to a WebACL
, but the Rule
already exists
* in the specified WebACL
.
*
*
* -
*
* You tried to add a ByteMatchTuple
to a ByteMatchSet
, but the
* ByteMatchTuple
already exists in the specified WebACL
.
*
*
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafEntityMigrationException The operation failed due to a problem with the migration. The failure
* cause is provided in the exception, in the
MigrationErrorType
:
*
* -
*
* ENTITY_NOT_SUPPORTED
- The web ACL has an unsupported entity but the
* IgnoreUnsupportedType
is not set to true.
*
*
* -
*
* ENTITY_NOT_FOUND
- The web ACL doesn't exist.
*
*
* -
*
* S3_BUCKET_NO_PERMISSION
- You don't have permission to perform the PutObject
* action to the specified Amazon S3 bucket.
*
*
* -
*
* S3_BUCKET_NOT_ACCESSIBLE
- The bucket policy doesn't allow AWS WAF to perform the
* PutObject
action in the bucket.
*
*
* -
*
* S3_BUCKET_NOT_FOUND
- The S3 bucket doesn't exist.
*
*
* -
*
* S3_BUCKET_INVALID_REGION
- The S3 bucket is not in the same Region as the web ACL.
*
*
* -
*
* S3_INTERNAL_ERROR
- AWS WAF failed to create the template in the S3 bucket for another
* reason.
*
*
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.CreateWebACLMigrationStack
* @see AWS API Documentation
*/
@Override
public CompletableFuture createWebACLMigrationStack(
CreateWebAclMigrationStackRequest createWebAclMigrationStackRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createWebAclMigrationStackRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, createWebAclMigrationStackRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateWebACLMigrationStack");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, CreateWebAclMigrationStackResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateWebACLMigrationStack").withProtocolMetadata(protocolMetadata)
.withMarshaller(new CreateWebAclMigrationStackRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(createWebAclMigrationStackRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Creates an XssMatchSet, which you use to allow, block, or count requests that contain cross-site scripting
* attacks in the specified part of web requests. AWS WAF searches for character sequences that are likely to be
* malicious strings.
*
*
* To create and configure an XssMatchSet
, perform the following steps:
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* CreateXssMatchSet
request.
*
*
* -
*
* Submit a CreateXssMatchSet
request.
*
*
* -
*
* Use GetChangeToken
to get the change token that you provide in the ChangeToken
* parameter of an UpdateXssMatchSet request.
*
*
* -
*
* Submit an UpdateXssMatchSet request to specify the parts of web requests in which you want to allow,
* block, or count cross-site scripting attacks.
*
*
*
*
* For more information about how to use the AWS WAF API to allow or block HTTP requests, see the AWS WAF Developer Guide.
*
*
* @param createXssMatchSetRequest
* A request to create an XssMatchSet.
* @return A Java Future containing the result of the CreateXssMatchSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafDisallowedNameException The name specified is invalid.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified an invalid parameter name.
*
*
* -
*
* You specified an invalid value.
*
*
* -
*
* You tried to update an object (ByteMatchSet
, IPSet
, Rule
, or
* WebACL
) using an action other than INSERT
or DELETE
.
*
*
* -
*
* You tried to create a WebACL
with a DefaultAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to create a RateBasedRule
with a RateKey
value other than
* IP
.
*
*
* -
*
* You tried to update a WebACL
with a WafAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to update a ByteMatchSet
with a FieldToMatch
Type
other
* than HEADER, METHOD, QUERY_STRING, URI, or BODY.
*
*
* -
*
* You tried to update a ByteMatchSet
with a Field
of HEADER
but no
* value for Data
.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL
* cannot be associated.
*
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafLimitsExceededException The operation exceeds a resource limit, for example, the maximum number of
*
WebACL
objects that you can create for an AWS account. For more information, see Limits in the AWS 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.CreateXssMatchSet
* @see AWS API Documentation
*/
@Override
public CompletableFuture createXssMatchSet(CreateXssMatchSetRequest createXssMatchSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(createXssMatchSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, createXssMatchSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateXssMatchSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, CreateXssMatchSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateXssMatchSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new CreateXssMatchSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(createXssMatchSetRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Permanently deletes a ByteMatchSet. You can't delete a ByteMatchSet
if it's still used in any
* Rules
or if it still includes any ByteMatchTuple objects (any filters).
*
*
* If you just want to remove a ByteMatchSet
from a Rule
, use UpdateRule.
*
*
* To permanently delete a ByteMatchSet
, perform the following steps:
*
*
* -
*
* Update the ByteMatchSet
to remove filters, if any. For more information, see
* UpdateByteMatchSet.
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* DeleteByteMatchSet
request.
*
*
* -
*
* Submit a DeleteByteMatchSet
request.
*
*
*
*
* @param deleteByteMatchSetRequest
* @return A Java Future containing the result of the DeleteByteMatchSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafReferencedItemException The operation failed because you tried to delete an object that is still
* in use. For example:
*
* -
*
* You tried to delete a ByteMatchSet
that is still referenced by a Rule
.
*
*
* -
*
* You tried to delete a Rule
that is still referenced by a WebACL
.
*
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't
* empty. For example:
*
* -
*
* You tried to delete a WebACL
that still contains one or more Rule
objects.
*
*
* -
*
* You tried to delete a Rule
that still contains one or more ByteMatchSet
objects
* or other predicates.
*
*
* -
*
* You tried to delete a ByteMatchSet
that contains one or more ByteMatchTuple
* objects.
*
*
* -
*
* You tried to delete an IPSet
that references one or more IP addresses.
*
*
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.DeleteByteMatchSet
* @see AWS API Documentation
*/
@Override
public CompletableFuture deleteByteMatchSet(DeleteByteMatchSetRequest deleteByteMatchSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteByteMatchSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteByteMatchSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteByteMatchSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeleteByteMatchSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteByteMatchSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeleteByteMatchSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deleteByteMatchSetRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Permanently deletes a GeoMatchSet. You can't delete a GeoMatchSet
if it's still used in any
* Rules
or if it still includes any countries.
*
*
* If you just want to remove a GeoMatchSet
from a Rule
, use UpdateRule.
*
*
* To permanently delete a GeoMatchSet
from AWS WAF, perform the following steps:
*
*
* -
*
* Update the GeoMatchSet
to remove any countries. For more information, see UpdateGeoMatchSet.
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* DeleteGeoMatchSet
request.
*
*
* -
*
* Submit a DeleteGeoMatchSet
request.
*
*
*
*
* @param deleteGeoMatchSetRequest
* @return A Java Future containing the result of the DeleteGeoMatchSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafReferencedItemException The operation failed because you tried to delete an object that is still
* in use. For example:
*
* -
*
* You tried to delete a ByteMatchSet
that is still referenced by a Rule
.
*
*
* -
*
* You tried to delete a Rule
that is still referenced by a WebACL
.
*
*
* - WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't
* empty. For example:
*
* -
*
* You tried to delete a WebACL
that still contains one or more Rule
objects.
*
*
* -
*
* You tried to delete a Rule
that still contains one or more ByteMatchSet
objects
* or other predicates.
*
*
* -
*
* You tried to delete a ByteMatchSet
that contains one or more ByteMatchTuple
* objects.
*
*
* -
*
* You tried to delete an IPSet
that references one or more IP addresses.
*
*
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.DeleteGeoMatchSet
* @see AWS API Documentation
*/
@Override
public CompletableFuture deleteGeoMatchSet(DeleteGeoMatchSetRequest deleteGeoMatchSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteGeoMatchSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteGeoMatchSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteGeoMatchSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeleteGeoMatchSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteGeoMatchSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeleteGeoMatchSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deleteGeoMatchSetRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Permanently deletes an IPSet. You can't delete an IPSet
if it's still used in any
* Rules
or if it still includes any IP addresses.
*
*
* If you just want to remove an IPSet
from a Rule
, use UpdateRule.
*
*
* To permanently delete an IPSet
from AWS WAF, perform the following steps:
*
*
* -
*
* Update the IPSet
to remove IP address ranges, if any. For more information, see UpdateIPSet.
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* DeleteIPSet
request.
*
*
* -
*
* Submit a DeleteIPSet
request.
*
*
*
*
* @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. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafReferencedItemException The operation failed because you tried to delete an object that is still
* in use. For example:
*
* -
*
* You tried to delete a ByteMatchSet
that is still referenced by a Rule
.
*
*
* -
*
* You tried to delete a Rule
that is still referenced by a WebACL
.
*
*
* - WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't
* empty. For example:
*
* -
*
* You tried to delete a WebACL
that still contains one or more Rule
objects.
*
*
* -
*
* You tried to delete a Rule
that still contains one or more ByteMatchSet
objects
* or other predicates.
*
*
* -
*
* You tried to delete a ByteMatchSet
that contains one or more ByteMatchTuple
* objects.
*
*
* -
*
* You tried to delete an IPSet
that references one or more IP addresses.
*
*
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.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, "WAF Regional");
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Permanently 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. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.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, "WAF Regional");
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Permanently deletes an IAM policy from the specified RuleGroup.
*
*
* The user making the request must be the owner of the RuleGroup.
*
*
* @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. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.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, "WAF Regional");
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Permanently deletes a RateBasedRule. You can't delete a rule if it's still used in any WebACL
* objects or if it still includes any predicates, such as ByteMatchSet
objects.
*
*
* If you just want to remove a rule from a WebACL
, use UpdateWebACL.
*
*
* To permanently delete a RateBasedRule
from AWS WAF, perform the following steps:
*
*
* -
*
* Update the RateBasedRule
to remove predicates, if any. For more information, see
* UpdateRateBasedRule.
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* DeleteRateBasedRule
request.
*
*
* -
*
* Submit a DeleteRateBasedRule
request.
*
*
*
*
* @param deleteRateBasedRuleRequest
* @return A Java Future containing the result of the DeleteRateBasedRule operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafReferencedItemException The operation failed because you tried to delete an object that is still
* in use. For example:
*
* -
*
* You tried to delete a ByteMatchSet
that is still referenced by a Rule
.
*
*
* -
*
* You tried to delete a Rule
that is still referenced by a WebACL
.
*
*
* - WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't
* empty. For example:
*
* -
*
* You tried to delete a WebACL
that still contains one or more Rule
objects.
*
*
* -
*
* You tried to delete a Rule
that still contains one or more ByteMatchSet
objects
* or other predicates.
*
*
* -
*
* You tried to delete a ByteMatchSet
that contains one or more ByteMatchTuple
* objects.
*
*
* -
*
* You tried to delete an IPSet
that references one or more IP addresses.
*
*
* - WafTagOperationException
* - WafTagOperationInternalErrorException
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.DeleteRateBasedRule
* @see AWS API Documentation
*/
@Override
public CompletableFuture deleteRateBasedRule(
DeleteRateBasedRuleRequest deleteRateBasedRuleRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteRateBasedRuleRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteRateBasedRuleRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteRateBasedRule");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeleteRateBasedRuleResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteRateBasedRule").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeleteRateBasedRuleRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deleteRateBasedRuleRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Permanently deletes a RegexMatchSet. You can't delete a RegexMatchSet
if it's still used in
* any Rules
or if it still includes any RegexMatchTuples
objects (any filters).
*
*
* If you just want to remove a RegexMatchSet
from a Rule
, use UpdateRule.
*
*
* To permanently delete a RegexMatchSet
, perform the following steps:
*
*
* -
*
* Update the RegexMatchSet
to remove filters, if any. For more information, see
* UpdateRegexMatchSet.
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* DeleteRegexMatchSet
request.
*
*
* -
*
* Submit a DeleteRegexMatchSet
request.
*
*
*
*
* @param deleteRegexMatchSetRequest
* @return A Java Future containing the result of the DeleteRegexMatchSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafReferencedItemException The operation failed because you tried to delete an object that is still
* in use. For example:
*
* -
*
* You tried to delete a ByteMatchSet
that is still referenced by a Rule
.
*
*
* -
*
* You tried to delete a Rule
that is still referenced by a WebACL
.
*
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't
* empty. For example:
*
* -
*
* You tried to delete a WebACL
that still contains one or more Rule
objects.
*
*
* -
*
* You tried to delete a Rule
that still contains one or more ByteMatchSet
objects
* or other predicates.
*
*
* -
*
* You tried to delete a ByteMatchSet
that contains one or more ByteMatchTuple
* objects.
*
*
* -
*
* You tried to delete an IPSet
that references one or more IP addresses.
*
*
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.DeleteRegexMatchSet
* @see AWS API Documentation
*/
@Override
public CompletableFuture deleteRegexMatchSet(
DeleteRegexMatchSetRequest deleteRegexMatchSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteRegexMatchSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteRegexMatchSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteRegexMatchSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeleteRegexMatchSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteRegexMatchSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeleteRegexMatchSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deleteRegexMatchSetRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Permanently deletes a RegexPatternSet. You can't delete a RegexPatternSet
if it's still used
* in any RegexMatchSet
or if the RegexPatternSet
is not empty.
*
*
* @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. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafReferencedItemException The operation failed because you tried to delete an object that is still
* in use. For example:
*
* -
*
* You tried to delete a ByteMatchSet
that is still referenced by a Rule
.
*
*
* -
*
* You tried to delete a Rule
that is still referenced by a WebACL
.
*
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't
* empty. For example:
*
* -
*
* You tried to delete a WebACL
that still contains one or more Rule
objects.
*
*
* -
*
* You tried to delete a Rule
that still contains one or more ByteMatchSet
objects
* or other predicates.
*
*
* -
*
* You tried to delete a ByteMatchSet
that contains one or more ByteMatchTuple
* objects.
*
*
* -
*
* You tried to delete an IPSet
that references one or more IP addresses.
*
*
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.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, "WAF Regional");
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Permanently deletes a Rule. You can't delete a Rule
if it's still used in any
* WebACL
objects or if it still includes any predicates, such as ByteMatchSet
objects.
*
*
* If you just want to remove a Rule
from a WebACL
, use UpdateWebACL.
*
*
* To permanently delete a Rule
from AWS WAF, perform the following steps:
*
*
* -
*
* Update the Rule
to remove predicates, if any. For more information, see UpdateRule.
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* DeleteRule
request.
*
*
* -
*
* Submit a DeleteRule
request.
*
*
*
*
* @param deleteRuleRequest
* @return A Java Future containing the result of the DeleteRule operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafReferencedItemException The operation failed because you tried to delete an object that is still
* in use. For example:
*
* -
*
* You tried to delete a ByteMatchSet
that is still referenced by a Rule
.
*
*
* -
*
* You tried to delete a Rule
that is still referenced by a WebACL
.
*
*
* - WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't
* empty. For example:
*
* -
*
* You tried to delete a WebACL
that still contains one or more Rule
objects.
*
*
* -
*
* You tried to delete a Rule
that still contains one or more ByteMatchSet
objects
* or other predicates.
*
*
* -
*
* You tried to delete a ByteMatchSet
that contains one or more ByteMatchTuple
* objects.
*
*
* -
*
* You tried to delete an IPSet
that references one or more IP addresses.
*
*
* - WafTagOperationException
* - WafTagOperationInternalErrorException
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.DeleteRule
* @see AWS API
* Documentation
*/
@Override
public CompletableFuture deleteRule(DeleteRuleRequest deleteRuleRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteRuleRequest, this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteRuleRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteRule");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
DeleteRuleResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams().withOperationName("DeleteRule")
.withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeleteRuleRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deleteRuleRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Permanently deletes a RuleGroup. You can't delete a RuleGroup
if it's still used in any
* WebACL
objects or if it still includes any rules.
*
*
* If you just want to remove a RuleGroup
from a WebACL
, use UpdateWebACL.
*
*
* To permanently delete a RuleGroup
from AWS WAF, perform the following steps:
*
*
* -
*
* Update the RuleGroup
to remove rules, if any. For more information, see UpdateRuleGroup.
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* DeleteRuleGroup
request.
*
*
* -
*
* Submit a DeleteRuleGroup
request.
*
*
*
*
* @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. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafReferencedItemException The operation failed because you tried to delete an object that is still
* in use. For example:
*
* -
*
* You tried to delete a ByteMatchSet
that is still referenced by a Rule
.
*
*
* -
*
* You tried to delete a Rule
that is still referenced by a WebACL
.
*
*
* - WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't
* empty. For example:
*
* -
*
* You tried to delete a WebACL
that still contains one or more Rule
objects.
*
*
* -
*
* You tried to delete a Rule
that still contains one or more ByteMatchSet
objects
* or other predicates.
*
*
* -
*
* You tried to delete a ByteMatchSet
that contains one or more ByteMatchTuple
* objects.
*
*
* -
*
* You tried to delete an IPSet
that references one or more IP addresses.
*
*
* - WafInvalidOperationException The operation failed because there was nothing to do. For example:
*
* -
*
* You tried to remove a Rule
from a WebACL
, but the Rule
isn't in
* the specified WebACL
.
*
*
* -
*
* You tried to remove an IP address from an IPSet
, but the IP address isn't in the specified
* IPSet
.
*
*
* -
*
* You tried to remove a ByteMatchTuple
from a ByteMatchSet
, but the
* ByteMatchTuple
isn't in the specified WebACL
.
*
*
* -
*
* You tried to add a Rule
to a WebACL
, but the Rule
already exists
* in the specified WebACL
.
*
*
* -
*
* You tried to add a ByteMatchTuple
to a ByteMatchSet
, but the
* ByteMatchTuple
already exists in the specified WebACL
.
*
*
* - WafTagOperationException
* - WafTagOperationInternalErrorException
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.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, "WAF Regional");
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Permanently deletes a SizeConstraintSet. You can't delete a SizeConstraintSet
if it's still
* used in any Rules
or if it still includes any SizeConstraint objects (any filters).
*
*
* If you just want to remove a SizeConstraintSet
from a Rule
, use UpdateRule.
*
*
* To permanently delete a SizeConstraintSet
, perform the following steps:
*
*
* -
*
* Update the SizeConstraintSet
to remove filters, if any. For more information, see
* UpdateSizeConstraintSet.
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* DeleteSizeConstraintSet
request.
*
*
* -
*
* Submit a DeleteSizeConstraintSet
request.
*
*
*
*
* @param deleteSizeConstraintSetRequest
* @return A Java Future containing the result of the DeleteSizeConstraintSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafReferencedItemException The operation failed because you tried to delete an object that is still
* in use. For example:
*
* -
*
* You tried to delete a ByteMatchSet
that is still referenced by a Rule
.
*
*
* -
*
* You tried to delete a Rule
that is still referenced by a WebACL
.
*
*
* - WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't
* empty. For example:
*
* -
*
* You tried to delete a WebACL
that still contains one or more Rule
objects.
*
*
* -
*
* You tried to delete a Rule
that still contains one or more ByteMatchSet
objects
* or other predicates.
*
*
* -
*
* You tried to delete a ByteMatchSet
that contains one or more ByteMatchTuple
* objects.
*
*
* -
*
* You tried to delete an IPSet
that references one or more IP addresses.
*
*
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.DeleteSizeConstraintSet
* @see AWS API Documentation
*/
@Override
public CompletableFuture deleteSizeConstraintSet(
DeleteSizeConstraintSetRequest deleteSizeConstraintSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteSizeConstraintSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteSizeConstraintSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteSizeConstraintSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeleteSizeConstraintSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteSizeConstraintSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeleteSizeConstraintSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deleteSizeConstraintSetRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Permanently deletes a SqlInjectionMatchSet. You can't delete a SqlInjectionMatchSet
if it's
* still used in any Rules
or if it still contains any SqlInjectionMatchTuple objects.
*
*
* If you just want to remove a SqlInjectionMatchSet
from a Rule
, use UpdateRule.
*
*
* To permanently delete a SqlInjectionMatchSet
from AWS WAF, perform the following steps:
*
*
* -
*
* Update the SqlInjectionMatchSet
to remove filters, if any. For more information, see
* UpdateSqlInjectionMatchSet.
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* DeleteSqlInjectionMatchSet
request.
*
*
* -
*
* Submit a DeleteSqlInjectionMatchSet
request.
*
*
*
*
* @param deleteSqlInjectionMatchSetRequest
* A request to delete a SqlInjectionMatchSet from AWS WAF.
* @return A Java Future containing the result of the DeleteSqlInjectionMatchSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafReferencedItemException The operation failed because you tried to delete an object that is still
* in use. For example:
*
* -
*
* You tried to delete a ByteMatchSet
that is still referenced by a Rule
.
*
*
* -
*
* You tried to delete a Rule
that is still referenced by a WebACL
.
*
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't
* empty. For example:
*
* -
*
* You tried to delete a WebACL
that still contains one or more Rule
objects.
*
*
* -
*
* You tried to delete a Rule
that still contains one or more ByteMatchSet
objects
* or other predicates.
*
*
* -
*
* You tried to delete a ByteMatchSet
that contains one or more ByteMatchTuple
* objects.
*
*
* -
*
* You tried to delete an IPSet
that references one or more IP addresses.
*
*
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.DeleteSqlInjectionMatchSet
* @see AWS API Documentation
*/
@Override
public CompletableFuture deleteSqlInjectionMatchSet(
DeleteSqlInjectionMatchSetRequest deleteSqlInjectionMatchSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteSqlInjectionMatchSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteSqlInjectionMatchSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteSqlInjectionMatchSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeleteSqlInjectionMatchSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteSqlInjectionMatchSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeleteSqlInjectionMatchSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deleteSqlInjectionMatchSetRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Permanently deletes a WebACL. You can't delete a WebACL
if it still contains any
* Rules
.
*
*
* To delete a WebACL
, perform the following steps:
*
*
* -
*
* Update the WebACL
to remove Rules
, if any. For more information, see
* UpdateWebACL.
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* DeleteWebACL
request.
*
*
* -
*
* Submit a DeleteWebACL
request.
*
*
*
*
* @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. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafReferencedItemException The operation failed because you tried to delete an object that is still
* in use. For example:
*
* -
*
* You tried to delete a ByteMatchSet
that is still referenced by a Rule
.
*
*
* -
*
* You tried to delete a Rule
that is still referenced by a WebACL
.
*
*
* - WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't
* empty. For example:
*
* -
*
* You tried to delete a WebACL
that still contains one or more Rule
objects.
*
*
* -
*
* You tried to delete a Rule
that still contains one or more ByteMatchSet
objects
* or other predicates.
*
*
* -
*
* You tried to delete a ByteMatchSet
that contains one or more ByteMatchTuple
* objects.
*
*
* -
*
* You tried to delete an IPSet
that references one or more IP addresses.
*
*
* - WafTagOperationException
* - WafTagOperationInternalErrorException
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.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, "WAF Regional");
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Permanently deletes an XssMatchSet. You can't delete an XssMatchSet
if it's still used in any
* Rules
or if it still contains any XssMatchTuple objects.
*
*
* If you just want to remove an XssMatchSet
from a Rule
, use UpdateRule.
*
*
* To permanently delete an XssMatchSet
from AWS WAF, perform the following steps:
*
*
* -
*
* Update the XssMatchSet
to remove filters, if any. For more information, see
* UpdateXssMatchSet.
*
*
* -
*
* Use GetChangeToken to get the change token that you provide in the ChangeToken
parameter of a
* DeleteXssMatchSet
request.
*
*
* -
*
* Submit a DeleteXssMatchSet
request.
*
*
*
*
* @param deleteXssMatchSetRequest
* A request to delete an XssMatchSet from AWS WAF.
* @return A Java Future containing the result of the DeleteXssMatchSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafReferencedItemException The operation failed because you tried to delete an object that is still
* in use. For example:
*
* -
*
* You tried to delete a ByteMatchSet
that is still referenced by a Rule
.
*
*
* -
*
* You tried to delete a Rule
that is still referenced by a WebACL
.
*
*
* - WafStaleDataException The operation failed because you tried to create, update, or delete an object
* by using a change token that has already been used.
* - WafNonEmptyEntityException The operation failed because you tried to delete an object that isn't
* empty. For example:
*
* -
*
* You tried to delete a WebACL
that still contains one or more Rule
objects.
*
*
* -
*
* You tried to delete a Rule
that still contains one or more ByteMatchSet
objects
* or other predicates.
*
*
* -
*
* You tried to delete a ByteMatchSet
that contains one or more ByteMatchTuple
* objects.
*
*
* -
*
* You tried to delete an IPSet
that references one or more IP addresses.
*
*
* - 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.DeleteXssMatchSet
* @see AWS API Documentation
*/
@Override
public CompletableFuture deleteXssMatchSet(DeleteXssMatchSetRequest deleteXssMatchSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteXssMatchSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteXssMatchSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteXssMatchSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeleteXssMatchSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteXssMatchSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new DeleteXssMatchSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(deleteXssMatchSetRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic Regional documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Removes a web ACL from the specified resource, either an application load balancer or Amazon API Gateway stage.
*
*
* @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. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafInvalidParameterException The operation failed because AWS WAF didn't recognize a parameter in the
* request. For example:
*
* -
*
* You specified an invalid parameter name.
*
*
* -
*
* You specified an invalid value.
*
*
* -
*
* You tried to update an object (ByteMatchSet
, IPSet
, Rule
, or
* WebACL
) using an action other than INSERT
or DELETE
.
*
*
* -
*
* You tried to create a WebACL
with a DefaultAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to create a RateBasedRule
with a RateKey
value other than
* IP
.
*
*
* -
*
* You tried to update a WebACL
with a WafAction
Type
other than
* ALLOW
, BLOCK
, or COUNT
.
*
*
* -
*
* You tried to update a ByteMatchSet
with a FieldToMatch
Type
other
* than HEADER, METHOD, QUERY_STRING, URI, or BODY.
*
*
* -
*
* You tried to update a ByteMatchSet
with a Field
of HEADER
but no
* value for Data
.
*
*
* -
*
* Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL
* cannot be associated.
*
*
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.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, "WAF Regional");
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Returns the ByteMatchSet specified by ByteMatchSetId
.
*
*
* @param getByteMatchSetRequest
* @return A Java Future containing the result of the GetByteMatchSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.GetByteMatchSet
* @see AWS
* API Documentation
*/
@Override
public CompletableFuture getByteMatchSet(GetByteMatchSetRequest getByteMatchSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getByteMatchSetRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, getByteMatchSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetByteMatchSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetByteMatchSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetByteMatchSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetByteMatchSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(getByteMatchSetRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* When you want to create, update, or delete AWS WAF objects, get a change token and include the change token in
* the create, update, or delete request. Change tokens ensure that your application doesn't submit conflicting
* requests to AWS WAF.
*
*
* Each create, update, or delete request must use a unique change token. If your application submits a
* GetChangeToken
request and then submits a second GetChangeToken
request before
* submitting a create, update, or delete request, the second GetChangeToken
request returns the same
* value as the first GetChangeToken
request.
*
*
* When you use a change token in a create, update, or delete request, the status of the change token changes to
* PENDING
, which indicates that AWS WAF is propagating the change to all AWS WAF servers. Use
* GetChangeTokenStatus
to determine the status of your change token.
*
*
* @param getChangeTokenRequest
* @return A Java Future containing the result of the GetChangeToken operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.GetChangeToken
* @see AWS
* API Documentation
*/
@Override
public CompletableFuture getChangeToken(GetChangeTokenRequest getChangeTokenRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getChangeTokenRequest, this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, getChangeTokenRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetChangeToken");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetChangeTokenResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetChangeToken").withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetChangeTokenRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(getChangeTokenRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Returns the status of a ChangeToken
that you got by calling GetChangeToken.
* ChangeTokenStatus
is one of the following values:
*
*
* -
*
* PROVISIONED
: You requested the change token by calling GetChangeToken
, but you haven't
* used it yet in a call to create, update, or delete an AWS WAF object.
*
*
* -
*
* PENDING
: AWS WAF is propagating the create, update, or delete request to all AWS WAF servers.
*
*
* -
*
* INSYNC
: Propagation is complete.
*
*
*
*
* @param getChangeTokenStatusRequest
* @return A Java Future containing the result of the GetChangeTokenStatus operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. 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.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.GetChangeTokenStatus
* @see AWS API Documentation
*/
@Override
public CompletableFuture getChangeTokenStatus(
GetChangeTokenStatusRequest getChangeTokenStatusRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getChangeTokenStatusRequest,
this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, getChangeTokenStatusRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetChangeTokenStatus");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetChangeTokenStatusResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetChangeTokenStatus").withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetChangeTokenStatusRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(getChangeTokenStatusRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Returns the GeoMatchSet that is specified by GeoMatchSetId
.
*
*
* @param getGeoMatchSetRequest
* @return A Java Future containing the result of the GetGeoMatchSet operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.GetGeoMatchSet
* @see AWS
* API Documentation
*/
@Override
public CompletableFuture getGeoMatchSet(GetGeoMatchSetRequest getGeoMatchSetRequest) {
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getGeoMatchSetRequest, this.clientConfiguration);
List metricPublishers = resolveMetricPublishers(clientConfiguration, getGeoMatchSetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "WAF Regional");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetGeoMatchSet");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetGeoMatchSetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetGeoMatchSet").withProtocolMetadata(protocolMetadata)
.withMarshaller(new GetGeoMatchSetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector)
.withInput(getGeoMatchSetRequest));
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Returns the IPSet that is specified by IPSetId
.
*
*
* @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. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafInvalidAccountException The operation failed because you tried to create, update, or delete an
* object by using an invalid account identifier.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.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, "WAF Regional");
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* 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. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.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, "WAF Regional");
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);
}
}
/**
*
*
* This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the
* developer guide.
*
*
* For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS WAF Developer Guide. With
* the latest version, AWS WAF has a single set of endpoints for regional and global use.
*
*
*
* Returns the IAM policy attached to the RuleGroup.
*
*
* @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. The exception returned is wrapped with CompletionException, so you need to invoke
* {@link Throwable#getCause} to retrieve the underlying exception.
*
* - WafInternalErrorException The operation failed because of a system problem, even though the request
* was valid. Retry your request.
* - WafNonexistentItemException The operation failed because the referenced object doesn't exist.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - WafRegionalException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample WafRegionalAsyncClient.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, "WAF Regional");
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