Class RateBasedStatementCustomKey

java.lang.Object
software.amazon.awssdk.services.wafv2.model.RateBasedStatementCustomKey
All Implemented Interfaces:
Serializable, SdkPojo, ToCopyableBuilder<RateBasedStatementCustomKey.Builder,RateBasedStatementCustomKey>

@Generated("software.amazon.awssdk:codegen") public final class RateBasedStatementCustomKey extends Object implements SdkPojo, Serializable, ToCopyableBuilder<RateBasedStatementCustomKey.Builder,RateBasedStatementCustomKey>

Specifies a single custom aggregate key for a rate-base rule.

Web requests that are missing any of the components specified in the aggregation keys are omitted from the rate-based rule evaluation and handling.

See Also:
  • Method Details

    • header

      public final RateLimitHeader header()

      Use the value of a header in the request as an aggregate key. Each distinct value in the header contributes to the aggregation instance. If you use a single header as your custom key, then each value fully defines an aggregation instance.

      Returns:
      Use the value of a header in the request as an aggregate key. Each distinct value in the header contributes to the aggregation instance. If you use a single header as your custom key, then each value fully defines an aggregation instance.
    • cookie

      public final RateLimitCookie cookie()

      Use the value of a cookie in the request as an aggregate key. Each distinct value in the cookie contributes to the aggregation instance. If you use a single cookie as your custom key, then each value fully defines an aggregation instance.

      Returns:
      Use the value of a cookie in the request as an aggregate key. Each distinct value in the cookie contributes to the aggregation instance. If you use a single cookie as your custom key, then each value fully defines an aggregation instance.
    • queryArgument

      public final RateLimitQueryArgument queryArgument()

      Use the specified query argument as an aggregate key. Each distinct value for the named query argument contributes to the aggregation instance. If you use a single query argument as your custom key, then each value fully defines an aggregation instance.

      Returns:
      Use the specified query argument as an aggregate key. Each distinct value for the named query argument contributes to the aggregation instance. If you use a single query argument as your custom key, then each value fully defines an aggregation instance.
    • queryString

      public final RateLimitQueryString queryString()

      Use the request's query string as an aggregate key. Each distinct string contributes to the aggregation instance. If you use just the query string as your custom key, then each string fully defines an aggregation instance.

      Returns:
      Use the request's query string as an aggregate key. Each distinct string contributes to the aggregation instance. If you use just the query string as your custom key, then each string fully defines an aggregation instance.
    • httpMethod

      public final RateLimitHTTPMethod httpMethod()

      Use the request's HTTP method as an aggregate key. Each distinct HTTP method contributes to the aggregation instance. If you use just the HTTP method as your custom key, then each method fully defines an aggregation instance.

      Returns:
      Use the request's HTTP method as an aggregate key. Each distinct HTTP method contributes to the aggregation instance. If you use just the HTTP method as your custom key, then each method fully defines an aggregation instance.
    • forwardedIP

      public final RateLimitForwardedIP forwardedIP()

      Use the first IP address in an HTTP header as an aggregate key. Each distinct forwarded IP address contributes to the aggregation instance.

      When you specify an IP or forwarded IP in the custom key settings, you must also specify at least one other key to use. You can aggregate on only the forwarded IP address by specifying FORWARDED_IP in your rate-based statement's AggregateKeyType.

      With this option, you must specify the header to use in the rate-based rule's ForwardedIPConfig property.

      Returns:
      Use the first IP address in an HTTP header as an aggregate key. Each distinct forwarded IP address contributes to the aggregation instance.

      When you specify an IP or forwarded IP in the custom key settings, you must also specify at least one other key to use. You can aggregate on only the forwarded IP address by specifying FORWARDED_IP in your rate-based statement's AggregateKeyType.

      With this option, you must specify the header to use in the rate-based rule's ForwardedIPConfig property.

    • ip

      public final RateLimitIP ip()

      Use the request's originating IP address as an aggregate key. Each distinct IP address contributes to the aggregation instance.

      When you specify an IP or forwarded IP in the custom key settings, you must also specify at least one other key to use. You can aggregate on only the IP address by specifying IP in your rate-based statement's AggregateKeyType.

      Returns:
      Use the request's originating IP address as an aggregate key. Each distinct IP address contributes to the aggregation instance.

      When you specify an IP or forwarded IP in the custom key settings, you must also specify at least one other key to use. You can aggregate on only the IP address by specifying IP in your rate-based statement's AggregateKeyType.

    • labelNamespace

      public final RateLimitLabelNamespace labelNamespace()

      Use the specified label namespace as an aggregate key. Each distinct fully qualified label name that has the specified label namespace contributes to the aggregation instance. If you use just one label namespace as your custom key, then each label name fully defines an aggregation instance.

      This uses only labels that have been added to the request by rules that are evaluated before this rate-based rule in the web ACL.

      For information about label namespaces and names, see Label syntax and naming requirements in the WAF Developer Guide.

      Returns:
      Use the specified label namespace as an aggregate key. Each distinct fully qualified label name that has the specified label namespace contributes to the aggregation instance. If you use just one label namespace as your custom key, then each label name fully defines an aggregation instance.

      This uses only labels that have been added to the request by rules that are evaluated before this rate-based rule in the web ACL.

      For information about label namespaces and names, see Label syntax and naming requirements in the WAF Developer Guide.

    • uriPath

      public final RateLimitUriPath uriPath()

      Use the request's URI path as an aggregate key. Each distinct URI path contributes to the aggregation instance. If you use just the URI path as your custom key, then each URI path fully defines an aggregation instance.

      Returns:
      Use the request's URI path as an aggregate key. Each distinct URI path contributes to the aggregation instance. If you use just the URI path as your custom key, then each URI path fully defines an aggregation instance.
    • toBuilder

      Description copied from interface: ToCopyableBuilder
      Take this object and create a builder that contains all of the current property values of this object.
      Specified by:
      toBuilder in interface ToCopyableBuilder<RateBasedStatementCustomKey.Builder,RateBasedStatementCustomKey>
      Returns:
      a builder for type T
    • builder

      public static RateBasedStatementCustomKey.Builder builder()
    • serializableBuilderClass

      public static Class<? extends RateBasedStatementCustomKey.Builder> serializableBuilderClass()
    • hashCode

      public final int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public final boolean equals(Object obj)
      Overrides:
      equals in class Object
    • equalsBySdkFields

      public final boolean equalsBySdkFields(Object obj)
      Description copied from interface: SdkPojo
      Indicates whether some other object is "equal to" this one by SDK fields. An SDK field is a modeled, non-inherited field in an SdkPojo class, and is generated based on a service model.

      If an SdkPojo class does not have any inherited fields, equalsBySdkFields and equals are essentially the same.

      Specified by:
      equalsBySdkFields in interface SdkPojo
      Parameters:
      obj - the object to be compared with
      Returns:
      true if the other object equals to this object by sdk fields, false otherwise.
    • toString

      public final String toString()
      Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be redacted from this string using a placeholder value.
      Overrides:
      toString in class Object
    • getValueForField

      public final <T> Optional<T> getValueForField(String fieldName, Class<T> clazz)
    • sdkFields

      public final List<SdkField<?>> sdkFields()
      Specified by:
      sdkFields in interface SdkPojo
      Returns:
      List of SdkField in this POJO. May be empty list but should never be null.