
com.pulumi.awsnative.wafv2.kotlin.outputs.WebAclRateBasedStatementCustomKey.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pulumi-aws-native-kotlin Show documentation
Show all versions of pulumi-aws-native-kotlin Show documentation
Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.awsnative.wafv2.kotlin.outputs
import kotlin.Suppress
/**
* Specifies a single custom aggregate key for a rate-base rule.
* @property 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.
* @property 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.
* @property 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.
* @property 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.
* @property 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` .
* @property 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](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-label-requirements.html) in the *AWS WAF Developer Guide* .
* @property 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.
* @property 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.
* @property 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.
*/
public data class WebAclRateBasedStatementCustomKey(
public val cookie: WebAclRateLimitCookie? = null,
public val forwardedIp: WebAclRateLimitForwardedIp? = null,
public val `header`: WebAclRateLimitHeader? = null,
public val httpMethod: WebAclRateLimitHttpMethod? = null,
public val ip: WebAclRateLimitIp? = null,
public val labelNamespace: WebAclRateLimitLabelNamespace? = null,
public val queryArgument: WebAclRateLimitQueryArgument? = null,
public val queryString: WebAclRateLimitQueryString? = null,
public val uriPath: WebAclRateLimitUriPath? = null,
) {
public companion object {
public fun toKotlin(javaType: com.pulumi.awsnative.wafv2.outputs.WebAclRateBasedStatementCustomKey): WebAclRateBasedStatementCustomKey = WebAclRateBasedStatementCustomKey(
cookie = javaType.cookie().map({ args0 ->
args0.let({ args0 ->
com.pulumi.awsnative.wafv2.kotlin.outputs.WebAclRateLimitCookie.Companion.toKotlin(args0)
})
}).orElse(null),
forwardedIp = javaType.forwardedIp().map({ args0 ->
args0.let({ args0 ->
com.pulumi.awsnative.wafv2.kotlin.outputs.WebAclRateLimitForwardedIp.Companion.toKotlin(args0)
})
}).orElse(null),
`header` = javaType.`header`().map({ args0 ->
args0.let({ args0 ->
com.pulumi.awsnative.wafv2.kotlin.outputs.WebAclRateLimitHeader.Companion.toKotlin(args0)
})
}).orElse(null),
httpMethod = javaType.httpMethod().map({ args0 ->
args0.let({ args0 ->
com.pulumi.awsnative.wafv2.kotlin.outputs.WebAclRateLimitHttpMethod.Companion.toKotlin(args0)
})
}).orElse(null),
ip = javaType.ip().map({ args0 ->
args0.let({ args0 ->
com.pulumi.awsnative.wafv2.kotlin.outputs.WebAclRateLimitIp.Companion.toKotlin(args0)
})
}).orElse(null),
labelNamespace = javaType.labelNamespace().map({ args0 ->
args0.let({ args0 ->
com.pulumi.awsnative.wafv2.kotlin.outputs.WebAclRateLimitLabelNamespace.Companion.toKotlin(args0)
})
}).orElse(null),
queryArgument = javaType.queryArgument().map({ args0 ->
args0.let({ args0 ->
com.pulumi.awsnative.wafv2.kotlin.outputs.WebAclRateLimitQueryArgument.Companion.toKotlin(args0)
})
}).orElse(null),
queryString = javaType.queryString().map({ args0 ->
args0.let({ args0 ->
com.pulumi.awsnative.wafv2.kotlin.outputs.WebAclRateLimitQueryString.Companion.toKotlin(args0)
})
}).orElse(null),
uriPath = javaType.uriPath().map({ args0 ->
args0.let({ args0 ->
com.pulumi.awsnative.wafv2.kotlin.outputs.WebAclRateLimitUriPath.Companion.toKotlin(args0)
})
}).orElse(null),
)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy