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

com.pulumi.aws.networkfirewall.kotlin.inputs.FirewallPolicyFirewallPolicyArgs.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.aws.networkfirewall.kotlin.inputs

import com.pulumi.aws.networkfirewall.inputs.FirewallPolicyFirewallPolicyArgs.builder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiNullFieldException
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 *
 * @property policyVariables . Contains variables that you can use to override default Suricata settings in your firewall policy. See Rule Variables for details.
 * @property statefulDefaultActions Set of actions to take on a packet if it does not match any stateful rules in the policy. This can only be specified if the policy has a `stateful_engine_options` block with a `rule_order` value of `STRICT_ORDER`. You can specify one of either or neither values of `aws:drop_strict` or `aws:drop_established`, as well as any combination of `aws:alert_strict` and `aws:alert_established`.
 * @property statefulEngineOptions A configuration block that defines options on how the policy handles stateful rules. See Stateful Engine Options below for details.
 * @property statefulRuleGroupReferences Set of configuration blocks containing references to the stateful rule groups that are used in the policy. See Stateful Rule Group Reference below for details.
 * @property statelessCustomActions Set of configuration blocks describing the custom action definitions that are available for use in the firewall policy's `stateless_default_actions`. See Stateless Custom Action below for details.
 * @property statelessDefaultActions Set of actions to take on a packet if it does not match any of the stateless rules in the policy. You must specify one of the standard actions including: `aws:drop`, `aws:pass`, or `aws:forward_to_sfe`.
 * In addition, you can specify custom actions that are compatible with your standard action choice. If you want non-matching packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe`.
 * @property statelessFragmentDefaultActions Set of actions to take on a fragmented packet if it does not match any of the stateless rules in the policy. You must specify one of the standard actions including: `aws:drop`, `aws:pass`, or `aws:forward_to_sfe`.
 * In addition, you can specify custom actions that are compatible with your standard action choice. If you want non-matching packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe`.
 * @property statelessRuleGroupReferences Set of configuration blocks containing references to the stateless rule groups that are used in the policy. See Stateless Rule Group Reference below for details.
 * @property tlsInspectionConfigurationArn The (ARN) of the TLS Inspection policy to attach to the FW Policy.  This must be added at creation of the resource per AWS documentation. "You can only add a TLS inspection configuration to a new policy, not to an existing policy."  This cannot be removed from a FW Policy.
 */
public data class FirewallPolicyFirewallPolicyArgs(
    public val policyVariables: Output? = null,
    public val statefulDefaultActions: Output>? = null,
    public val statefulEngineOptions: Output? =
        null,
    public val statefulRuleGroupReferences: Output>? = null,
    public val statelessCustomActions: Output>? = null,
    public val statelessDefaultActions: Output>,
    public val statelessFragmentDefaultActions: Output>,
    public val statelessRuleGroupReferences: Output>? = null,
    public val tlsInspectionConfigurationArn: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.aws.networkfirewall.inputs.FirewallPolicyFirewallPolicyArgs =
        com.pulumi.aws.networkfirewall.inputs.FirewallPolicyFirewallPolicyArgs.builder()
            .policyVariables(policyVariables?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .statefulDefaultActions(
                statefulDefaultActions?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0
                    })
                }),
            )
            .statefulEngineOptions(
                statefulEngineOptions?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .statefulRuleGroupReferences(
                statefulRuleGroupReferences?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .statelessCustomActions(
                statelessCustomActions?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .statelessDefaultActions(
                statelessDefaultActions.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0
                    })
                }),
            )
            .statelessFragmentDefaultActions(
                statelessFragmentDefaultActions.applyValue({ args0 ->
                    args0.map({ args0 -> args0 })
                }),
            )
            .statelessRuleGroupReferences(
                statelessRuleGroupReferences?.applyValue({ args0 ->
                    args0.map({ args0 -> args0.let({ args0 -> args0.toJava() }) })
                }),
            )
            .tlsInspectionConfigurationArn(
                tlsInspectionConfigurationArn?.applyValue({ args0 ->
                    args0
                }),
            ).build()
}

/**
 * Builder for [FirewallPolicyFirewallPolicyArgs].
 */
@PulumiTagMarker
public class FirewallPolicyFirewallPolicyArgsBuilder internal constructor() {
    private var policyVariables: Output? = null

    private var statefulDefaultActions: Output>? = null

    private var statefulEngineOptions: Output? =
        null

    private var statefulRuleGroupReferences:
        Output>? = null

    private var statelessCustomActions:
        Output>? = null

    private var statelessDefaultActions: Output>? = null

    private var statelessFragmentDefaultActions: Output>? = null

    private var statelessRuleGroupReferences:
        Output>? = null

    private var tlsInspectionConfigurationArn: Output? = null

    /**
     * @param value . Contains variables that you can use to override default Suricata settings in your firewall policy. See Rule Variables for details.
     */
    @JvmName("frypifskpitlyyom")
    public suspend fun policyVariables(`value`: Output) {
        this.policyVariables = value
    }

    /**
     * @param value Set of actions to take on a packet if it does not match any stateful rules in the policy. This can only be specified if the policy has a `stateful_engine_options` block with a `rule_order` value of `STRICT_ORDER`. You can specify one of either or neither values of `aws:drop_strict` or `aws:drop_established`, as well as any combination of `aws:alert_strict` and `aws:alert_established`.
     */
    @JvmName("eengaugxtoeuwysg")
    public suspend fun statefulDefaultActions(`value`: Output>) {
        this.statefulDefaultActions = value
    }

    @JvmName("uwfhgsjughoqdsyf")
    public suspend fun statefulDefaultActions(vararg values: Output) {
        this.statefulDefaultActions = Output.all(values.asList())
    }

    /**
     * @param values Set of actions to take on a packet if it does not match any stateful rules in the policy. This can only be specified if the policy has a `stateful_engine_options` block with a `rule_order` value of `STRICT_ORDER`. You can specify one of either or neither values of `aws:drop_strict` or `aws:drop_established`, as well as any combination of `aws:alert_strict` and `aws:alert_established`.
     */
    @JvmName("ellrcapwycenlvtw")
    public suspend fun statefulDefaultActions(values: List>) {
        this.statefulDefaultActions = Output.all(values)
    }

    /**
     * @param value A configuration block that defines options on how the policy handles stateful rules. See Stateful Engine Options below for details.
     */
    @JvmName("xmsdteeeafvvbnru")
    public suspend fun statefulEngineOptions(`value`: Output) {
        this.statefulEngineOptions = value
    }

    /**
     * @param value Set of configuration blocks containing references to the stateful rule groups that are used in the policy. See Stateful Rule Group Reference below for details.
     */
    @JvmName("ldtmtgmkngkwtewl")
    public suspend fun statefulRuleGroupReferences(`value`: Output>) {
        this.statefulRuleGroupReferences = value
    }

    @JvmName("tmablrhxqpvdcgab")
    public suspend fun statefulRuleGroupReferences(vararg values: Output) {
        this.statefulRuleGroupReferences = Output.all(values.asList())
    }

    /**
     * @param values Set of configuration blocks containing references to the stateful rule groups that are used in the policy. See Stateful Rule Group Reference below for details.
     */
    @JvmName("utwvuotvbdmivywk")
    public suspend fun statefulRuleGroupReferences(values: List>) {
        this.statefulRuleGroupReferences = Output.all(values)
    }

    /**
     * @param value Set of configuration blocks describing the custom action definitions that are available for use in the firewall policy's `stateless_default_actions`. See Stateless Custom Action below for details.
     */
    @JvmName("yqcwjdncitvforhv")
    public suspend fun statelessCustomActions(`value`: Output>) {
        this.statelessCustomActions = value
    }

    @JvmName("tghjpubclrwflvod")
    public suspend fun statelessCustomActions(vararg values: Output) {
        this.statelessCustomActions = Output.all(values.asList())
    }

    /**
     * @param values Set of configuration blocks describing the custom action definitions that are available for use in the firewall policy's `stateless_default_actions`. See Stateless Custom Action below for details.
     */
    @JvmName("kxnlwxlxerhqpuvl")
    public suspend fun statelessCustomActions(values: List>) {
        this.statelessCustomActions = Output.all(values)
    }

    /**
     * @param value Set of actions to take on a packet if it does not match any of the stateless rules in the policy. You must specify one of the standard actions including: `aws:drop`, `aws:pass`, or `aws:forward_to_sfe`.
     * In addition, you can specify custom actions that are compatible with your standard action choice. If you want non-matching packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe`.
     */
    @JvmName("ifssmiracqvjkafj")
    public suspend fun statelessDefaultActions(`value`: Output>) {
        this.statelessDefaultActions = value
    }

    @JvmName("crnnlrqyimajqdqu")
    public suspend fun statelessDefaultActions(vararg values: Output) {
        this.statelessDefaultActions = Output.all(values.asList())
    }

    /**
     * @param values Set of actions to take on a packet if it does not match any of the stateless rules in the policy. You must specify one of the standard actions including: `aws:drop`, `aws:pass`, or `aws:forward_to_sfe`.
     * In addition, you can specify custom actions that are compatible with your standard action choice. If you want non-matching packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe`.
     */
    @JvmName("cqqrvouhnqgxflkn")
    public suspend fun statelessDefaultActions(values: List>) {
        this.statelessDefaultActions = Output.all(values)
    }

    /**
     * @param value Set of actions to take on a fragmented packet if it does not match any of the stateless rules in the policy. You must specify one of the standard actions including: `aws:drop`, `aws:pass`, or `aws:forward_to_sfe`.
     * In addition, you can specify custom actions that are compatible with your standard action choice. If you want non-matching packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe`.
     */
    @JvmName("vtujlegviyfxctlx")
    public suspend fun statelessFragmentDefaultActions(`value`: Output>) {
        this.statelessFragmentDefaultActions = value
    }

    @JvmName("upceesowmrttyxmx")
    public suspend fun statelessFragmentDefaultActions(vararg values: Output) {
        this.statelessFragmentDefaultActions = Output.all(values.asList())
    }

    /**
     * @param values Set of actions to take on a fragmented packet if it does not match any of the stateless rules in the policy. You must specify one of the standard actions including: `aws:drop`, `aws:pass`, or `aws:forward_to_sfe`.
     * In addition, you can specify custom actions that are compatible with your standard action choice. If you want non-matching packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe`.
     */
    @JvmName("cvytvghjllwgsvgm")
    public suspend fun statelessFragmentDefaultActions(values: List>) {
        this.statelessFragmentDefaultActions = Output.all(values)
    }

    /**
     * @param value Set of configuration blocks containing references to the stateless rule groups that are used in the policy. See Stateless Rule Group Reference below for details.
     */
    @JvmName("mkdijdbtydjswhth")
    public suspend fun statelessRuleGroupReferences(`value`: Output>) {
        this.statelessRuleGroupReferences = value
    }

    @JvmName("yhbvwsgadiakgrnj")
    public suspend fun statelessRuleGroupReferences(vararg values: Output) {
        this.statelessRuleGroupReferences = Output.all(values.asList())
    }

    /**
     * @param values Set of configuration blocks containing references to the stateless rule groups that are used in the policy. See Stateless Rule Group Reference below for details.
     */
    @JvmName("vwufydjwpyyofqvp")
    public suspend fun statelessRuleGroupReferences(values: List>) {
        this.statelessRuleGroupReferences = Output.all(values)
    }

    /**
     * @param value The (ARN) of the TLS Inspection policy to attach to the FW Policy.  This must be added at creation of the resource per AWS documentation. "You can only add a TLS inspection configuration to a new policy, not to an existing policy."  This cannot be removed from a FW Policy.
     */
    @JvmName("fydqhbkfwylrgwhm")
    public suspend fun tlsInspectionConfigurationArn(`value`: Output) {
        this.tlsInspectionConfigurationArn = value
    }

    /**
     * @param value . Contains variables that you can use to override default Suricata settings in your firewall policy. See Rule Variables for details.
     */
    @JvmName("tremohehejxcdqep")
    public suspend fun policyVariables(`value`: FirewallPolicyFirewallPolicyPolicyVariablesArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.policyVariables = mapped
    }

    /**
     * @param argument . Contains variables that you can use to override default Suricata settings in your firewall policy. See Rule Variables for details.
     */
    @JvmName("mjlhtmqhyqhigllc")
    public suspend fun policyVariables(argument: suspend FirewallPolicyFirewallPolicyPolicyVariablesArgsBuilder.() -> Unit) {
        val toBeMapped = FirewallPolicyFirewallPolicyPolicyVariablesArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.policyVariables = mapped
    }

    /**
     * @param value Set of actions to take on a packet if it does not match any stateful rules in the policy. This can only be specified if the policy has a `stateful_engine_options` block with a `rule_order` value of `STRICT_ORDER`. You can specify one of either or neither values of `aws:drop_strict` or `aws:drop_established`, as well as any combination of `aws:alert_strict` and `aws:alert_established`.
     */
    @JvmName("cnnhhnapnianprhx")
    public suspend fun statefulDefaultActions(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.statefulDefaultActions = mapped
    }

    /**
     * @param values Set of actions to take on a packet if it does not match any stateful rules in the policy. This can only be specified if the policy has a `stateful_engine_options` block with a `rule_order` value of `STRICT_ORDER`. You can specify one of either or neither values of `aws:drop_strict` or `aws:drop_established`, as well as any combination of `aws:alert_strict` and `aws:alert_established`.
     */
    @JvmName("tbnyedvdjnorbksn")
    public suspend fun statefulDefaultActions(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statefulDefaultActions = mapped
    }

    /**
     * @param value A configuration block that defines options on how the policy handles stateful rules. See Stateful Engine Options below for details.
     */
    @JvmName("okwgpfunhmjrtkjv")
    public suspend fun statefulEngineOptions(`value`: FirewallPolicyFirewallPolicyStatefulEngineOptionsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.statefulEngineOptions = mapped
    }

    /**
     * @param argument A configuration block that defines options on how the policy handles stateful rules. See Stateful Engine Options below for details.
     */
    @JvmName("cjghbdwicoiwjttd")
    public suspend fun statefulEngineOptions(argument: suspend FirewallPolicyFirewallPolicyStatefulEngineOptionsArgsBuilder.() -> Unit) {
        val toBeMapped = FirewallPolicyFirewallPolicyStatefulEngineOptionsArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.statefulEngineOptions = mapped
    }

    /**
     * @param value Set of configuration blocks containing references to the stateful rule groups that are used in the policy. See Stateful Rule Group Reference below for details.
     */
    @JvmName("pdwfycsakhrtcjsc")
    public suspend fun statefulRuleGroupReferences(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.statefulRuleGroupReferences = mapped
    }

    /**
     * @param argument Set of configuration blocks containing references to the stateful rule groups that are used in the policy. See Stateful Rule Group Reference below for details.
     */
    @JvmName("hyedvvtaivnfplec")
    public suspend fun statefulRuleGroupReferences(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            FirewallPolicyFirewallPolicyStatefulRuleGroupReferenceArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.statefulRuleGroupReferences = mapped
    }

    /**
     * @param argument Set of configuration blocks containing references to the stateful rule groups that are used in the policy. See Stateful Rule Group Reference below for details.
     */
    @JvmName("gkegaqycglafhbwn")
    public suspend fun statefulRuleGroupReferences(vararg argument: suspend FirewallPolicyFirewallPolicyStatefulRuleGroupReferenceArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            FirewallPolicyFirewallPolicyStatefulRuleGroupReferenceArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.statefulRuleGroupReferences = mapped
    }

    /**
     * @param argument Set of configuration blocks containing references to the stateful rule groups that are used in the policy. See Stateful Rule Group Reference below for details.
     */
    @JvmName("hfuwqimnsxrkjlpi")
    public suspend fun statefulRuleGroupReferences(argument: suspend FirewallPolicyFirewallPolicyStatefulRuleGroupReferenceArgsBuilder.() -> Unit) {
        val toBeMapped =
            listOf(
                FirewallPolicyFirewallPolicyStatefulRuleGroupReferenceArgsBuilder().applySuspend {
                    argument()
                }.build(),
            )
        val mapped = of(toBeMapped)
        this.statefulRuleGroupReferences = mapped
    }

    /**
     * @param values Set of configuration blocks containing references to the stateful rule groups that are used in the policy. See Stateful Rule Group Reference below for details.
     */
    @JvmName("wptvtrsfagmjhoch")
    public suspend fun statefulRuleGroupReferences(vararg values: FirewallPolicyFirewallPolicyStatefulRuleGroupReferenceArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statefulRuleGroupReferences = mapped
    }

    /**
     * @param value Set of configuration blocks describing the custom action definitions that are available for use in the firewall policy's `stateless_default_actions`. See Stateless Custom Action below for details.
     */
    @JvmName("uvmwqlcddkgxesop")
    public suspend fun statelessCustomActions(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.statelessCustomActions = mapped
    }

    /**
     * @param argument Set of configuration blocks describing the custom action definitions that are available for use in the firewall policy's `stateless_default_actions`. See Stateless Custom Action below for details.
     */
    @JvmName("jneulbcmbjcuokaf")
    public suspend fun statelessCustomActions(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            FirewallPolicyFirewallPolicyStatelessCustomActionArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.statelessCustomActions = mapped
    }

    /**
     * @param argument Set of configuration blocks describing the custom action definitions that are available for use in the firewall policy's `stateless_default_actions`. See Stateless Custom Action below for details.
     */
    @JvmName("gtqwbnhfkwohlkeo")
    public suspend fun statelessCustomActions(vararg argument: suspend FirewallPolicyFirewallPolicyStatelessCustomActionArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            FirewallPolicyFirewallPolicyStatelessCustomActionArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.statelessCustomActions = mapped
    }

    /**
     * @param argument Set of configuration blocks describing the custom action definitions that are available for use in the firewall policy's `stateless_default_actions`. See Stateless Custom Action below for details.
     */
    @JvmName("uplxgmugmojrocju")
    public suspend fun statelessCustomActions(argument: suspend FirewallPolicyFirewallPolicyStatelessCustomActionArgsBuilder.() -> Unit) {
        val toBeMapped =
            listOf(
                FirewallPolicyFirewallPolicyStatelessCustomActionArgsBuilder().applySuspend {
                    argument()
                }.build(),
            )
        val mapped = of(toBeMapped)
        this.statelessCustomActions = mapped
    }

    /**
     * @param values Set of configuration blocks describing the custom action definitions that are available for use in the firewall policy's `stateless_default_actions`. See Stateless Custom Action below for details.
     */
    @JvmName("mlaoajhuiesluyhm")
    public suspend fun statelessCustomActions(vararg values: FirewallPolicyFirewallPolicyStatelessCustomActionArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statelessCustomActions = mapped
    }

    /**
     * @param value Set of actions to take on a packet if it does not match any of the stateless rules in the policy. You must specify one of the standard actions including: `aws:drop`, `aws:pass`, or `aws:forward_to_sfe`.
     * In addition, you can specify custom actions that are compatible with your standard action choice. If you want non-matching packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe`.
     */
    @JvmName("niqgthvtlcbrmwtj")
    public suspend fun statelessDefaultActions(`value`: List) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statelessDefaultActions = mapped
    }

    /**
     * @param values Set of actions to take on a packet if it does not match any of the stateless rules in the policy. You must specify one of the standard actions including: `aws:drop`, `aws:pass`, or `aws:forward_to_sfe`.
     * In addition, you can specify custom actions that are compatible with your standard action choice. If you want non-matching packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe`.
     */
    @JvmName("qjbfuvyjdbkbnhgk")
    public suspend fun statelessDefaultActions(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statelessDefaultActions = mapped
    }

    /**
     * @param value Set of actions to take on a fragmented packet if it does not match any of the stateless rules in the policy. You must specify one of the standard actions including: `aws:drop`, `aws:pass`, or `aws:forward_to_sfe`.
     * In addition, you can specify custom actions that are compatible with your standard action choice. If you want non-matching packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe`.
     */
    @JvmName("hjlhjlpuxxuwqprl")
    public suspend fun statelessFragmentDefaultActions(`value`: List) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statelessFragmentDefaultActions = mapped
    }

    /**
     * @param values Set of actions to take on a fragmented packet if it does not match any of the stateless rules in the policy. You must specify one of the standard actions including: `aws:drop`, `aws:pass`, or `aws:forward_to_sfe`.
     * In addition, you can specify custom actions that are compatible with your standard action choice. If you want non-matching packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe`.
     */
    @JvmName("lkfskpyfpqeobfno")
    public suspend fun statelessFragmentDefaultActions(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statelessFragmentDefaultActions = mapped
    }

    /**
     * @param value Set of configuration blocks containing references to the stateless rule groups that are used in the policy. See Stateless Rule Group Reference below for details.
     */
    @JvmName("havqfprpxkcwaxdv")
    public suspend fun statelessRuleGroupReferences(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.statelessRuleGroupReferences = mapped
    }

    /**
     * @param argument Set of configuration blocks containing references to the stateless rule groups that are used in the policy. See Stateless Rule Group Reference below for details.
     */
    @JvmName("klsfulxfsfivyehh")
    public suspend fun statelessRuleGroupReferences(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            FirewallPolicyFirewallPolicyStatelessRuleGroupReferenceArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.statelessRuleGroupReferences = mapped
    }

    /**
     * @param argument Set of configuration blocks containing references to the stateless rule groups that are used in the policy. See Stateless Rule Group Reference below for details.
     */
    @JvmName("dmfeavkypruuwjhg")
    public suspend fun statelessRuleGroupReferences(vararg argument: suspend FirewallPolicyFirewallPolicyStatelessRuleGroupReferenceArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            FirewallPolicyFirewallPolicyStatelessRuleGroupReferenceArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.statelessRuleGroupReferences = mapped
    }

    /**
     * @param argument Set of configuration blocks containing references to the stateless rule groups that are used in the policy. See Stateless Rule Group Reference below for details.
     */
    @JvmName("hhncgigfdrimvvqk")
    public suspend fun statelessRuleGroupReferences(argument: suspend FirewallPolicyFirewallPolicyStatelessRuleGroupReferenceArgsBuilder.() -> Unit) {
        val toBeMapped =
            listOf(
                FirewallPolicyFirewallPolicyStatelessRuleGroupReferenceArgsBuilder().applySuspend {
                    argument()
                }.build(),
            )
        val mapped = of(toBeMapped)
        this.statelessRuleGroupReferences = mapped
    }

    /**
     * @param values Set of configuration blocks containing references to the stateless rule groups that are used in the policy. See Stateless Rule Group Reference below for details.
     */
    @JvmName("yyeyvtwjvikcqbrq")
    public suspend fun statelessRuleGroupReferences(vararg values: FirewallPolicyFirewallPolicyStatelessRuleGroupReferenceArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statelessRuleGroupReferences = mapped
    }

    /**
     * @param value The (ARN) of the TLS Inspection policy to attach to the FW Policy.  This must be added at creation of the resource per AWS documentation. "You can only add a TLS inspection configuration to a new policy, not to an existing policy."  This cannot be removed from a FW Policy.
     */
    @JvmName("wpegsimmvnerkvfs")
    public suspend fun tlsInspectionConfigurationArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tlsInspectionConfigurationArn = mapped
    }

    internal fun build(): FirewallPolicyFirewallPolicyArgs = FirewallPolicyFirewallPolicyArgs(
        policyVariables = policyVariables,
        statefulDefaultActions = statefulDefaultActions,
        statefulEngineOptions = statefulEngineOptions,
        statefulRuleGroupReferences = statefulRuleGroupReferences,
        statelessCustomActions = statelessCustomActions,
        statelessDefaultActions = statelessDefaultActions ?: throw
            PulumiNullFieldException("statelessDefaultActions"),
        statelessFragmentDefaultActions = statelessFragmentDefaultActions ?: throw
            PulumiNullFieldException("statelessFragmentDefaultActions"),
        statelessRuleGroupReferences = statelessRuleGroupReferences,
        tlsInspectionConfigurationArn = tlsInspectionConfigurationArn,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy