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

com.pulumi.awsnative.networkfirewall.kotlin.inputs.FirewallPolicyArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.awsnative.networkfirewall.kotlin.inputs

import com.pulumi.awsnative.networkfirewall.inputs.FirewallPolicyArgs.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.
 * @property statefulDefaultActions The default actions to take on a packet that doesn't match any stateful rules. The stateful default action is optional, and is only valid when using the strict rule order.
 * Valid values of the stateful default action:
 * - aws:drop_strict
 * - aws:drop_established
 * - aws:alert_strict
 * - aws:alert_established
 * For more information, see [Strict evaluation order](https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-rule-evaluation-order.html#suricata-strict-rule-evaluation-order.html) in the *AWS Network Firewall Developer Guide* .
 * @property statefulEngineOptions Additional options governing how Network Firewall handles stateful rules. The stateful rule groups that you use in your policy must have stateful rule options settings that are compatible with these settings.
 * @property statefulRuleGroupReferences References to the stateful rule groups that are used in the policy. These define the inspection criteria in stateful rules.
 * @property statelessCustomActions The custom action definitions that are available for use in the firewall policy's `StatelessDefaultActions` setting. You name each custom action that you define, and then you can use it by name in your default actions specifications.
 * @property statelessDefaultActions The actions to take on a packet if it doesn't match any of the stateless rules in the policy. If you want non-matching packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe` .
 * You must specify one of the standard actions: `aws:pass` , `aws:drop` , or `aws:forward_to_sfe` . In addition, you can specify custom actions that are compatible with your standard section choice.
 * For example, you could specify `["aws:pass"]` or you could specify `["aws:pass", "customActionName"]` . For information about compatibility, see the custom action descriptions.
 * @property statelessFragmentDefaultActions The actions to take on a fragmented packet if it doesn't match any of the stateless rules in the policy. If you want non-matching fragmented packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe` .
 * You must specify one of the standard actions: `aws:pass` , `aws:drop` , or `aws:forward_to_sfe` . In addition, you can specify custom actions that are compatible with your standard section choice.
 * For example, you could specify `["aws:pass"]` or you could specify `["aws:pass", "customActionName"]` . For information about compatibility, see the custom action descriptions.
 * @property statelessRuleGroupReferences References to the stateless rule groups that are used in the policy. These define the matching criteria in stateless rules.
 * @property tlsInspectionConfigurationArn The Amazon Resource Name (ARN) of the TLS inspection configuration.
 */
public data class FirewallPolicyArgs(
    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.awsnative.networkfirewall.inputs.FirewallPolicyArgs =
        com.pulumi.awsnative.networkfirewall.inputs.FirewallPolicyArgs.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 [FirewallPolicyArgs].
 */
@PulumiTagMarker
public class FirewallPolicyArgsBuilder 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.
     */
    @JvmName("hgbufcaswrrhrvre")
    public suspend fun policyVariables(`value`: Output) {
        this.policyVariables = value
    }

    /**
     * @param value The default actions to take on a packet that doesn't match any stateful rules. The stateful default action is optional, and is only valid when using the strict rule order.
     * Valid values of the stateful default action:
     * - aws:drop_strict
     * - aws:drop_established
     * - aws:alert_strict
     * - aws:alert_established
     * For more information, see [Strict evaluation order](https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-rule-evaluation-order.html#suricata-strict-rule-evaluation-order.html) in the *AWS Network Firewall Developer Guide* .
     */
    @JvmName("xtxmsmxnjruuhbpd")
    public suspend fun statefulDefaultActions(`value`: Output>) {
        this.statefulDefaultActions = value
    }

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

    /**
     * @param values The default actions to take on a packet that doesn't match any stateful rules. The stateful default action is optional, and is only valid when using the strict rule order.
     * Valid values of the stateful default action:
     * - aws:drop_strict
     * - aws:drop_established
     * - aws:alert_strict
     * - aws:alert_established
     * For more information, see [Strict evaluation order](https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-rule-evaluation-order.html#suricata-strict-rule-evaluation-order.html) in the *AWS Network Firewall Developer Guide* .
     */
    @JvmName("sxltmcvfhvwqacfq")
    public suspend fun statefulDefaultActions(values: List>) {
        this.statefulDefaultActions = Output.all(values)
    }

    /**
     * @param value Additional options governing how Network Firewall handles stateful rules. The stateful rule groups that you use in your policy must have stateful rule options settings that are compatible with these settings.
     */
    @JvmName("dtpyfucnarugaoye")
    public suspend fun statefulEngineOptions(`value`: Output) {
        this.statefulEngineOptions = value
    }

    /**
     * @param value References to the stateful rule groups that are used in the policy. These define the inspection criteria in stateful rules.
     */
    @JvmName("bvqasfxngvbssbgb")
    public suspend fun statefulRuleGroupReferences(`value`: Output>) {
        this.statefulRuleGroupReferences = value
    }

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

    /**
     * @param values References to the stateful rule groups that are used in the policy. These define the inspection criteria in stateful rules.
     */
    @JvmName("ajeqeqhqkagmkfal")
    public suspend fun statefulRuleGroupReferences(values: List>) {
        this.statefulRuleGroupReferences = Output.all(values)
    }

    /**
     * @param value The custom action definitions that are available for use in the firewall policy's `StatelessDefaultActions` setting. You name each custom action that you define, and then you can use it by name in your default actions specifications.
     */
    @JvmName("ebilpuldgjhjaltl")
    public suspend fun statelessCustomActions(`value`: Output>) {
        this.statelessCustomActions = value
    }

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

    /**
     * @param values The custom action definitions that are available for use in the firewall policy's `StatelessDefaultActions` setting. You name each custom action that you define, and then you can use it by name in your default actions specifications.
     */
    @JvmName("vlslpgposrkyfmmg")
    public suspend fun statelessCustomActions(values: List>) {
        this.statelessCustomActions = Output.all(values)
    }

    /**
     * @param value The actions to take on a packet if it doesn't match any of the stateless rules in the policy. If you want non-matching packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe` .
     * You must specify one of the standard actions: `aws:pass` , `aws:drop` , or `aws:forward_to_sfe` . In addition, you can specify custom actions that are compatible with your standard section choice.
     * For example, you could specify `["aws:pass"]` or you could specify `["aws:pass", "customActionName"]` . For information about compatibility, see the custom action descriptions.
     */
    @JvmName("wqcbrohsokjwawno")
    public suspend fun statelessDefaultActions(`value`: Output>) {
        this.statelessDefaultActions = value
    }

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

    /**
     * @param values The actions to take on a packet if it doesn't match any of the stateless rules in the policy. If you want non-matching packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe` .
     * You must specify one of the standard actions: `aws:pass` , `aws:drop` , or `aws:forward_to_sfe` . In addition, you can specify custom actions that are compatible with your standard section choice.
     * For example, you could specify `["aws:pass"]` or you could specify `["aws:pass", "customActionName"]` . For information about compatibility, see the custom action descriptions.
     */
    @JvmName("fnjmtrhjdpaxpesu")
    public suspend fun statelessDefaultActions(values: List>) {
        this.statelessDefaultActions = Output.all(values)
    }

    /**
     * @param value The actions to take on a fragmented packet if it doesn't match any of the stateless rules in the policy. If you want non-matching fragmented packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe` .
     * You must specify one of the standard actions: `aws:pass` , `aws:drop` , or `aws:forward_to_sfe` . In addition, you can specify custom actions that are compatible with your standard section choice.
     * For example, you could specify `["aws:pass"]` or you could specify `["aws:pass", "customActionName"]` . For information about compatibility, see the custom action descriptions.
     */
    @JvmName("pxvrlylqkeypfixj")
    public suspend fun statelessFragmentDefaultActions(`value`: Output>) {
        this.statelessFragmentDefaultActions = value
    }

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

    /**
     * @param values The actions to take on a fragmented packet if it doesn't match any of the stateless rules in the policy. If you want non-matching fragmented packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe` .
     * You must specify one of the standard actions: `aws:pass` , `aws:drop` , or `aws:forward_to_sfe` . In addition, you can specify custom actions that are compatible with your standard section choice.
     * For example, you could specify `["aws:pass"]` or you could specify `["aws:pass", "customActionName"]` . For information about compatibility, see the custom action descriptions.
     */
    @JvmName("xpulwxntctmrnlyc")
    public suspend fun statelessFragmentDefaultActions(values: List>) {
        this.statelessFragmentDefaultActions = Output.all(values)
    }

    /**
     * @param value References to the stateless rule groups that are used in the policy. These define the matching criteria in stateless rules.
     */
    @JvmName("wckvbppvlfjubbck")
    public suspend fun statelessRuleGroupReferences(`value`: Output>) {
        this.statelessRuleGroupReferences = value
    }

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

    /**
     * @param values References to the stateless rule groups that are used in the policy. These define the matching criteria in stateless rules.
     */
    @JvmName("jacquypjhmsvuagd")
    public suspend fun statelessRuleGroupReferences(values: List>) {
        this.statelessRuleGroupReferences = Output.all(values)
    }

    /**
     * @param value The Amazon Resource Name (ARN) of the TLS inspection configuration.
     */
    @JvmName("kkfnhftvkmqtmxcs")
    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.
     */
    @JvmName("dqabaioblplkrpal")
    public suspend fun policyVariables(`value`: FirewallPolicyPolicyVariablesPropertiesArgs?) {
        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.
     */
    @JvmName("oinboeolfqviwxlb")
    public suspend fun policyVariables(argument: suspend FirewallPolicyPolicyVariablesPropertiesArgsBuilder.() -> Unit) {
        val toBeMapped = FirewallPolicyPolicyVariablesPropertiesArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.policyVariables = mapped
    }

    /**
     * @param value The default actions to take on a packet that doesn't match any stateful rules. The stateful default action is optional, and is only valid when using the strict rule order.
     * Valid values of the stateful default action:
     * - aws:drop_strict
     * - aws:drop_established
     * - aws:alert_strict
     * - aws:alert_established
     * For more information, see [Strict evaluation order](https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-rule-evaluation-order.html#suricata-strict-rule-evaluation-order.html) in the *AWS Network Firewall Developer Guide* .
     */
    @JvmName("dvtbsuylvmovssfv")
    public suspend fun statefulDefaultActions(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.statefulDefaultActions = mapped
    }

    /**
     * @param values The default actions to take on a packet that doesn't match any stateful rules. The stateful default action is optional, and is only valid when using the strict rule order.
     * Valid values of the stateful default action:
     * - aws:drop_strict
     * - aws:drop_established
     * - aws:alert_strict
     * - aws:alert_established
     * For more information, see [Strict evaluation order](https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-rule-evaluation-order.html#suricata-strict-rule-evaluation-order.html) in the *AWS Network Firewall Developer Guide* .
     */
    @JvmName("xqidlkuaxhgebfnh")
    public suspend fun statefulDefaultActions(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statefulDefaultActions = mapped
    }

    /**
     * @param value Additional options governing how Network Firewall handles stateful rules. The stateful rule groups that you use in your policy must have stateful rule options settings that are compatible with these settings.
     */
    @JvmName("smrsmtdfiiqruuhn")
    public suspend fun statefulEngineOptions(`value`: FirewallPolicyStatefulEngineOptionsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.statefulEngineOptions = mapped
    }

    /**
     * @param argument Additional options governing how Network Firewall handles stateful rules. The stateful rule groups that you use in your policy must have stateful rule options settings that are compatible with these settings.
     */
    @JvmName("ohparwigprwagkre")
    public suspend fun statefulEngineOptions(argument: suspend FirewallPolicyStatefulEngineOptionsArgsBuilder.() -> Unit) {
        val toBeMapped = FirewallPolicyStatefulEngineOptionsArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.statefulEngineOptions = mapped
    }

    /**
     * @param value References to the stateful rule groups that are used in the policy. These define the inspection criteria in stateful rules.
     */
    @JvmName("fqcbodkgfyfftqbc")
    public suspend fun statefulRuleGroupReferences(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.statefulRuleGroupReferences = mapped
    }

    /**
     * @param argument References to the stateful rule groups that are used in the policy. These define the inspection criteria in stateful rules.
     */
    @JvmName("ndyvlgtakwagqvbm")
    public suspend fun statefulRuleGroupReferences(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            FirewallPolicyStatefulRuleGroupReferenceArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.statefulRuleGroupReferences = mapped
    }

    /**
     * @param argument References to the stateful rule groups that are used in the policy. These define the inspection criteria in stateful rules.
     */
    @JvmName("umxvtjgdfecjhyyb")
    public suspend fun statefulRuleGroupReferences(vararg argument: suspend FirewallPolicyStatefulRuleGroupReferenceArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            FirewallPolicyStatefulRuleGroupReferenceArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.statefulRuleGroupReferences = mapped
    }

    /**
     * @param argument References to the stateful rule groups that are used in the policy. These define the inspection criteria in stateful rules.
     */
    @JvmName("dhrmdxcpvgvuuxho")
    public suspend fun statefulRuleGroupReferences(argument: suspend FirewallPolicyStatefulRuleGroupReferenceArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            FirewallPolicyStatefulRuleGroupReferenceArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.statefulRuleGroupReferences = mapped
    }

    /**
     * @param values References to the stateful rule groups that are used in the policy. These define the inspection criteria in stateful rules.
     */
    @JvmName("ejevftcakgigtipg")
    public suspend fun statefulRuleGroupReferences(vararg values: FirewallPolicyStatefulRuleGroupReferenceArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statefulRuleGroupReferences = mapped
    }

    /**
     * @param value The custom action definitions that are available for use in the firewall policy's `StatelessDefaultActions` setting. You name each custom action that you define, and then you can use it by name in your default actions specifications.
     */
    @JvmName("loretmbtkqwyabhx")
    public suspend fun statelessCustomActions(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.statelessCustomActions = mapped
    }

    /**
     * @param argument The custom action definitions that are available for use in the firewall policy's `StatelessDefaultActions` setting. You name each custom action that you define, and then you can use it by name in your default actions specifications.
     */
    @JvmName("ifidugahntowbpcl")
    public suspend fun statelessCustomActions(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            FirewallPolicyCustomActionArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.statelessCustomActions = mapped
    }

    /**
     * @param argument The custom action definitions that are available for use in the firewall policy's `StatelessDefaultActions` setting. You name each custom action that you define, and then you can use it by name in your default actions specifications.
     */
    @JvmName("qsxsrbaxslygauhi")
    public suspend fun statelessCustomActions(vararg argument: suspend FirewallPolicyCustomActionArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            FirewallPolicyCustomActionArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.statelessCustomActions = mapped
    }

    /**
     * @param argument The custom action definitions that are available for use in the firewall policy's `StatelessDefaultActions` setting. You name each custom action that you define, and then you can use it by name in your default actions specifications.
     */
    @JvmName("bpbeovieqjvklilt")
    public suspend fun statelessCustomActions(argument: suspend FirewallPolicyCustomActionArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            FirewallPolicyCustomActionArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.statelessCustomActions = mapped
    }

    /**
     * @param values The custom action definitions that are available for use in the firewall policy's `StatelessDefaultActions` setting. You name each custom action that you define, and then you can use it by name in your default actions specifications.
     */
    @JvmName("amfiylucdilforsc")
    public suspend fun statelessCustomActions(vararg values: FirewallPolicyCustomActionArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statelessCustomActions = mapped
    }

    /**
     * @param value The actions to take on a packet if it doesn't match any of the stateless rules in the policy. If you want non-matching packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe` .
     * You must specify one of the standard actions: `aws:pass` , `aws:drop` , or `aws:forward_to_sfe` . In addition, you can specify custom actions that are compatible with your standard section choice.
     * For example, you could specify `["aws:pass"]` or you could specify `["aws:pass", "customActionName"]` . For information about compatibility, see the custom action descriptions.
     */
    @JvmName("spskbicrabakkfyi")
    public suspend fun statelessDefaultActions(`value`: List) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statelessDefaultActions = mapped
    }

    /**
     * @param values The actions to take on a packet if it doesn't match any of the stateless rules in the policy. If you want non-matching packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe` .
     * You must specify one of the standard actions: `aws:pass` , `aws:drop` , or `aws:forward_to_sfe` . In addition, you can specify custom actions that are compatible with your standard section choice.
     * For example, you could specify `["aws:pass"]` or you could specify `["aws:pass", "customActionName"]` . For information about compatibility, see the custom action descriptions.
     */
    @JvmName("hxvyugqaplvqmcqp")
    public suspend fun statelessDefaultActions(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statelessDefaultActions = mapped
    }

    /**
     * @param value The actions to take on a fragmented packet if it doesn't match any of the stateless rules in the policy. If you want non-matching fragmented packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe` .
     * You must specify one of the standard actions: `aws:pass` , `aws:drop` , or `aws:forward_to_sfe` . In addition, you can specify custom actions that are compatible with your standard section choice.
     * For example, you could specify `["aws:pass"]` or you could specify `["aws:pass", "customActionName"]` . For information about compatibility, see the custom action descriptions.
     */
    @JvmName("bfialpcsmmidvqun")
    public suspend fun statelessFragmentDefaultActions(`value`: List) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statelessFragmentDefaultActions = mapped
    }

    /**
     * @param values The actions to take on a fragmented packet if it doesn't match any of the stateless rules in the policy. If you want non-matching fragmented packets to be forwarded for stateful inspection, specify `aws:forward_to_sfe` .
     * You must specify one of the standard actions: `aws:pass` , `aws:drop` , or `aws:forward_to_sfe` . In addition, you can specify custom actions that are compatible with your standard section choice.
     * For example, you could specify `["aws:pass"]` or you could specify `["aws:pass", "customActionName"]` . For information about compatibility, see the custom action descriptions.
     */
    @JvmName("avflwpcvabyeebae")
    public suspend fun statelessFragmentDefaultActions(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statelessFragmentDefaultActions = mapped
    }

    /**
     * @param value References to the stateless rule groups that are used in the policy. These define the matching criteria in stateless rules.
     */
    @JvmName("xvgqorcltjdecglw")
    public suspend fun statelessRuleGroupReferences(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.statelessRuleGroupReferences = mapped
    }

    /**
     * @param argument References to the stateless rule groups that are used in the policy. These define the matching criteria in stateless rules.
     */
    @JvmName("ndfecmvjqnfvlmcq")
    public suspend fun statelessRuleGroupReferences(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            FirewallPolicyStatelessRuleGroupReferenceArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.statelessRuleGroupReferences = mapped
    }

    /**
     * @param argument References to the stateless rule groups that are used in the policy. These define the matching criteria in stateless rules.
     */
    @JvmName("mtsrkojdluuxepmd")
    public suspend fun statelessRuleGroupReferences(vararg argument: suspend FirewallPolicyStatelessRuleGroupReferenceArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            FirewallPolicyStatelessRuleGroupReferenceArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.statelessRuleGroupReferences = mapped
    }

    /**
     * @param argument References to the stateless rule groups that are used in the policy. These define the matching criteria in stateless rules.
     */
    @JvmName("rrlmvcvfckawxgmy")
    public suspend fun statelessRuleGroupReferences(argument: suspend FirewallPolicyStatelessRuleGroupReferenceArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            FirewallPolicyStatelessRuleGroupReferenceArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.statelessRuleGroupReferences = mapped
    }

    /**
     * @param values References to the stateless rule groups that are used in the policy. These define the matching criteria in stateless rules.
     */
    @JvmName("rbfseawhxmdstasv")
    public suspend fun statelessRuleGroupReferences(vararg values: FirewallPolicyStatelessRuleGroupReferenceArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.statelessRuleGroupReferences = mapped
    }

    /**
     * @param value The Amazon Resource Name (ARN) of the TLS inspection configuration.
     */
    @JvmName("gsqkvghbiupyowwx")
    public suspend fun tlsInspectionConfigurationArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tlsInspectionConfigurationArn = mapped
    }

    internal fun build(): FirewallPolicyArgs = FirewallPolicyArgs(
        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