# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities

__all__ = [
    'DomainConfigFunctionArgArgs',
    'DomainConfigFunctionArgArgsDict',
    'DomainSourceArgs',
    'DomainSourceArgsDict',
    'ErEnvConfArgs',
    'ErEnvConfArgsDict',
    'ErEnvConfPresetCanaryAnhuiArgs',
    'ErEnvConfPresetCanaryAnhuiArgsDict',
    'ErEnvConfPresetCanaryBeijingArgs',
    'ErEnvConfPresetCanaryBeijingArgsDict',
    'ErEnvConfPresetCanaryChongqingArgs',
    'ErEnvConfPresetCanaryChongqingArgsDict',
    'ErEnvConfPresetCanaryFujianArgs',
    'ErEnvConfPresetCanaryFujianArgsDict',
    'ErEnvConfPresetCanaryGansuArgs',
    'ErEnvConfPresetCanaryGansuArgsDict',
    'ErEnvConfPresetCanaryGuangdongArgs',
    'ErEnvConfPresetCanaryGuangdongArgsDict',
    'ErEnvConfPresetCanaryGuangxiArgs',
    'ErEnvConfPresetCanaryGuangxiArgsDict',
    'ErEnvConfPresetCanaryGuizhouArgs',
    'ErEnvConfPresetCanaryGuizhouArgsDict',
    'ErEnvConfPresetCanaryHainanArgs',
    'ErEnvConfPresetCanaryHainanArgsDict',
    'ErEnvConfPresetCanaryHebeiArgs',
    'ErEnvConfPresetCanaryHebeiArgsDict',
    'ErEnvConfPresetCanaryHeilongjiangArgs',
    'ErEnvConfPresetCanaryHeilongjiangArgsDict',
    'ErEnvConfPresetCanaryHenanArgs',
    'ErEnvConfPresetCanaryHenanArgsDict',
    'ErEnvConfPresetCanaryHongKongArgs',
    'ErEnvConfPresetCanaryHongKongArgsDict',
    'ErEnvConfPresetCanaryHubeiArgs',
    'ErEnvConfPresetCanaryHubeiArgsDict',
    'ErEnvConfPresetCanaryHunanArgs',
    'ErEnvConfPresetCanaryHunanArgsDict',
    'ErEnvConfPresetCanaryJiangsuArgs',
    'ErEnvConfPresetCanaryJiangsuArgsDict',
    'ErEnvConfPresetCanaryJiangxiArgs',
    'ErEnvConfPresetCanaryJiangxiArgsDict',
    'ErEnvConfPresetCanaryJilinArgs',
    'ErEnvConfPresetCanaryJilinArgsDict',
    'ErEnvConfPresetCanaryLiaoningArgs',
    'ErEnvConfPresetCanaryLiaoningArgsDict',
    'ErEnvConfPresetCanaryMacauArgs',
    'ErEnvConfPresetCanaryMacauArgsDict',
    'ErEnvConfPresetCanaryNeimengguArgs',
    'ErEnvConfPresetCanaryNeimengguArgsDict',
    'ErEnvConfPresetCanaryNingxiaArgs',
    'ErEnvConfPresetCanaryNingxiaArgsDict',
    'ErEnvConfPresetCanaryOverseasArgs',
    'ErEnvConfPresetCanaryOverseasArgsDict',
    'ErEnvConfPresetCanaryQinghaiArgs',
    'ErEnvConfPresetCanaryQinghaiArgsDict',
    'ErEnvConfPresetCanaryShaanxiArgs',
    'ErEnvConfPresetCanaryShaanxiArgsDict',
    'ErEnvConfPresetCanaryShandongArgs',
    'ErEnvConfPresetCanaryShandongArgsDict',
    'ErEnvConfPresetCanaryShanghaiArgs',
    'ErEnvConfPresetCanaryShanghaiArgsDict',
    'ErEnvConfPresetCanaryShanxiArgs',
    'ErEnvConfPresetCanaryShanxiArgsDict',
    'ErEnvConfPresetCanarySichuanArgs',
    'ErEnvConfPresetCanarySichuanArgsDict',
    'ErEnvConfPresetCanaryTaiwanArgs',
    'ErEnvConfPresetCanaryTaiwanArgsDict',
    'ErEnvConfPresetCanaryTianjinArgs',
    'ErEnvConfPresetCanaryTianjinArgsDict',
    'ErEnvConfPresetCanaryXinjiangArgs',
    'ErEnvConfPresetCanaryXinjiangArgsDict',
    'ErEnvConfPresetCanaryXizangArgs',
    'ErEnvConfPresetCanaryXizangArgsDict',
    'ErEnvConfPresetCanaryYunnanArgs',
    'ErEnvConfPresetCanaryYunnanArgsDict',
    'ErEnvConfPresetCanaryZhejiangArgs',
    'ErEnvConfPresetCanaryZhejiangArgsDict',
    'ErEnvConfProductionArgs',
    'ErEnvConfProductionArgsDict',
    'ErEnvConfStagingArgs',
    'ErEnvConfStagingArgsDict',
    'IpaDomainSourceArgs',
    'IpaDomainSourceArgsDict',
    'WafRuleConditionArgs',
    'WafRuleConditionArgsDict',
    'WafRuleRateLimitArgs',
    'WafRuleRateLimitArgsDict',
    'WafRuleRateLimitStatusArgs',
    'WafRuleRateLimitStatusArgsDict',
]

MYPY = False

if not MYPY:
    class DomainConfigFunctionArgArgsDict(TypedDict):
        arg_name: pulumi.Input[_builtins.str]
        """
        The name of arg.
        """
        arg_value: pulumi.Input[_builtins.str]
        """
        The value of arg.
        """
elif False:
    DomainConfigFunctionArgArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class DomainConfigFunctionArgArgs:
    def __init__(__self__, *,
                 arg_name: pulumi.Input[_builtins.str],
                 arg_value: pulumi.Input[_builtins.str]):
        """
        :param pulumi.Input[_builtins.str] arg_name: The name of arg.
        :param pulumi.Input[_builtins.str] arg_value: The value of arg.
        """
        pulumi.set(__self__, "arg_name", arg_name)
        pulumi.set(__self__, "arg_value", arg_value)

    @_builtins.property
    @pulumi.getter(name="argName")
    def arg_name(self) -> pulumi.Input[_builtins.str]:
        """
        The name of arg.
        """
        return pulumi.get(self, "arg_name")

    @arg_name.setter
    def arg_name(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "arg_name", value)

    @_builtins.property
    @pulumi.getter(name="argValue")
    def arg_value(self) -> pulumi.Input[_builtins.str]:
        """
        The value of arg.
        """
        return pulumi.get(self, "arg_value")

    @arg_value.setter
    def arg_value(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "arg_value", value)


if not MYPY:
    class DomainSourceArgsDict(TypedDict):
        content: NotRequired[pulumi.Input[_builtins.str]]
        """
        The address of the source station.
        """
        port: NotRequired[pulumi.Input[_builtins.int]]
        """
        The port number. Valid values: `443` and `80`. Default to `80`.
        """
        priority: NotRequired[pulumi.Input[_builtins.str]]
        """
        The priority of the origin if multiple origins are specified. Default to `20`.
        """
        type: NotRequired[pulumi.Input[_builtins.str]]
        """
        The type of the origin. Valid values:
        """
        weight: NotRequired[pulumi.Input[_builtins.str]]
        """
        The weight of the origin if multiple origins are specified. Default to `10`.
        """
elif False:
    DomainSourceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class DomainSourceArgs:
    def __init__(__self__, *,
                 content: Optional[pulumi.Input[_builtins.str]] = None,
                 port: Optional[pulumi.Input[_builtins.int]] = None,
                 priority: Optional[pulumi.Input[_builtins.str]] = None,
                 type: Optional[pulumi.Input[_builtins.str]] = None,
                 weight: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] content: The address of the source station.
        :param pulumi.Input[_builtins.int] port: The port number. Valid values: `443` and `80`. Default to `80`.
        :param pulumi.Input[_builtins.str] priority: The priority of the origin if multiple origins are specified. Default to `20`.
        :param pulumi.Input[_builtins.str] type: The type of the origin. Valid values:
        :param pulumi.Input[_builtins.str] weight: The weight of the origin if multiple origins are specified. Default to `10`.
        """
        if content is not None:
            pulumi.set(__self__, "content", content)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if priority is not None:
            pulumi.set(__self__, "priority", priority)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if weight is not None:
            pulumi.set(__self__, "weight", weight)

    @_builtins.property
    @pulumi.getter
    def content(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The address of the source station.
        """
        return pulumi.get(self, "content")

    @content.setter
    def content(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "content", value)

    @_builtins.property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The port number. Valid values: `443` and `80`. Default to `80`.
        """
        return pulumi.get(self, "port")

    @port.setter
    def port(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "port", value)

    @_builtins.property
    @pulumi.getter
    def priority(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The priority of the origin if multiple origins are specified. Default to `20`.
        """
        return pulumi.get(self, "priority")

    @priority.setter
    def priority(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "priority", value)

    @_builtins.property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The type of the origin. Valid values:
        """
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "type", value)

    @_builtins.property
    @pulumi.getter
    def weight(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The weight of the origin if multiple origins are specified. Default to `10`.
        """
        return pulumi.get(self, "weight")

    @weight.setter
    def weight(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "weight", value)


if not MYPY:
    class ErEnvConfArgsDict(TypedDict):
        preset_canary_anhui: NotRequired[pulumi.Input['ErEnvConfPresetCanaryAnhuiArgsDict']]
        """
        The configuration of a presetCanaryAnhui environment. See `staging` below.
        """
        preset_canary_beijing: NotRequired[pulumi.Input['ErEnvConfPresetCanaryBeijingArgsDict']]
        """
        The configuration of a presetCanaryBeijing environment. See `staging` below.
        """
        preset_canary_chongqing: NotRequired[pulumi.Input['ErEnvConfPresetCanaryChongqingArgsDict']]
        """
        The configuration of a presetCanaryChongqing environment. See `staging` below.
        """
        preset_canary_fujian: NotRequired[pulumi.Input['ErEnvConfPresetCanaryFujianArgsDict']]
        """
        The configuration of a presetCanaryFujian environment. See `staging` below.
        """
        preset_canary_gansu: NotRequired[pulumi.Input['ErEnvConfPresetCanaryGansuArgsDict']]
        """
        The configuration of a presetCanaryGansu environment. See `staging` below.
        """
        preset_canary_guangdong: NotRequired[pulumi.Input['ErEnvConfPresetCanaryGuangdongArgsDict']]
        """
        The configuration of a presetCanaryGuangdong environment. See `staging` below.
        """
        preset_canary_guangxi: NotRequired[pulumi.Input['ErEnvConfPresetCanaryGuangxiArgsDict']]
        """
        The configuration of a presetCanaryGuangxi environment. See `staging` below.
        """
        preset_canary_guizhou: NotRequired[pulumi.Input['ErEnvConfPresetCanaryGuizhouArgsDict']]
        """
        The configuration of a presetCanaryGuizhou environment. See `staging` below.
        """
        preset_canary_hainan: NotRequired[pulumi.Input['ErEnvConfPresetCanaryHainanArgsDict']]
        """
        The configuration of a presetCanaryHainan environment. See `staging` below.
        """
        preset_canary_hebei: NotRequired[pulumi.Input['ErEnvConfPresetCanaryHebeiArgsDict']]
        """
        The configuration of a presetCanaryHebei environment. See `staging` below.
        """
        preset_canary_heilongjiang: NotRequired[pulumi.Input['ErEnvConfPresetCanaryHeilongjiangArgsDict']]
        """
        The configuration of a presetCanaryHeilongjiang environment. See `staging` below.
        """
        preset_canary_henan: NotRequired[pulumi.Input['ErEnvConfPresetCanaryHenanArgsDict']]
        """
        The configuration of a presetCanaryHenan environment. See `staging` below.
        """
        preset_canary_hong_kong: NotRequired[pulumi.Input['ErEnvConfPresetCanaryHongKongArgsDict']]
        """
        The configuration of a presetCanaryHongKong environment. See `staging` below.
        """
        preset_canary_hubei: NotRequired[pulumi.Input['ErEnvConfPresetCanaryHubeiArgsDict']]
        """
        The configuration of a presetCanaryHubei environment. See `staging` below.
        """
        preset_canary_hunan: NotRequired[pulumi.Input['ErEnvConfPresetCanaryHunanArgsDict']]
        """
        The configuration of a presetCanaryHunan environment. See `staging` below.
        """
        preset_canary_jiangsu: NotRequired[pulumi.Input['ErEnvConfPresetCanaryJiangsuArgsDict']]
        """
        The configuration of a presetCanaryJiangsu environment. See `staging` below.
        """
        preset_canary_jiangxi: NotRequired[pulumi.Input['ErEnvConfPresetCanaryJiangxiArgsDict']]
        """
        The configuration of a presetCanaryJiangxi environment. See `staging` below.
        """
        preset_canary_jilin: NotRequired[pulumi.Input['ErEnvConfPresetCanaryJilinArgsDict']]
        """
        The configuration of a presetCanaryJilin environment. See `staging` below.
        """
        preset_canary_liaoning: NotRequired[pulumi.Input['ErEnvConfPresetCanaryLiaoningArgsDict']]
        """
        The configuration of a presetCanaryLiaoning environment. See `staging` below.
        """
        preset_canary_macau: NotRequired[pulumi.Input['ErEnvConfPresetCanaryMacauArgsDict']]
        """
        The configuration of a presetCanaryMacau environment. See `staging` below.
        """
        preset_canary_neimenggu: NotRequired[pulumi.Input['ErEnvConfPresetCanaryNeimengguArgsDict']]
        """
        The configuration of a presetCanaryNeimenggu environment. See `staging` below.
        """
        preset_canary_ningxia: NotRequired[pulumi.Input['ErEnvConfPresetCanaryNingxiaArgsDict']]
        """
        The configuration of a presetCanaryNingxia environment. See `staging` below.
        """
        preset_canary_overseas: NotRequired[pulumi.Input['ErEnvConfPresetCanaryOverseasArgsDict']]
        """
        The configuration of a presetCanaryOverseas environment. See `staging` below.
        """
        preset_canary_qinghai: NotRequired[pulumi.Input['ErEnvConfPresetCanaryQinghaiArgsDict']]
        """
        The configuration of a presetCanaryQinghai environment. See `staging` below.
        """
        preset_canary_shaanxi: NotRequired[pulumi.Input['ErEnvConfPresetCanaryShaanxiArgsDict']]
        """
        The configuration of a presetCanaryShaanxi environment. See `staging` below.
        """
        preset_canary_shandong: NotRequired[pulumi.Input['ErEnvConfPresetCanaryShandongArgsDict']]
        """
        The configuration of a presetCanaryShandong environment. See `staging` below.
        """
        preset_canary_shanghai: NotRequired[pulumi.Input['ErEnvConfPresetCanaryShanghaiArgsDict']]
        """
        The configuration of a presetCanaryShanghai environment. See `staging` below.
        """
        preset_canary_shanxi: NotRequired[pulumi.Input['ErEnvConfPresetCanaryShanxiArgsDict']]
        """
        The configuration of a presetCanaryShanxi environment. See `staging` below.
        """
        preset_canary_sichuan: NotRequired[pulumi.Input['ErEnvConfPresetCanarySichuanArgsDict']]
        """
        The configuration of a presetCanarySichuan environment. See `staging` below.
        """
        preset_canary_taiwan: NotRequired[pulumi.Input['ErEnvConfPresetCanaryTaiwanArgsDict']]
        """
        The configuration of a presetCanaryTaiwan environment. See `staging` below.
        """
        preset_canary_tianjin: NotRequired[pulumi.Input['ErEnvConfPresetCanaryTianjinArgsDict']]
        """
        The configuration of a presetCanaryTianjin environment. See `staging` below.
        """
        preset_canary_xinjiang: NotRequired[pulumi.Input['ErEnvConfPresetCanaryXinjiangArgsDict']]
        """
        The configuration of a presetCanaryXinjiang environment. See `staging` below.
        """
        preset_canary_xizang: NotRequired[pulumi.Input['ErEnvConfPresetCanaryXizangArgsDict']]
        """
        The configuration of a presetCanaryXizang environment. See `staging` below.
        """
        preset_canary_yunnan: NotRequired[pulumi.Input['ErEnvConfPresetCanaryYunnanArgsDict']]
        """
        The configuration of a presetCanaryYunnan environment. See `staging` below.
        """
        preset_canary_zhejiang: NotRequired[pulumi.Input['ErEnvConfPresetCanaryZhejiangArgsDict']]
        """
        The configuration of a presetCanaryZhejiang environment. See `staging` below.
        """
        production: NotRequired[pulumi.Input['ErEnvConfProductionArgsDict']]
        """
        The configuration of a production environment. See `staging` below.
        """
        staging: NotRequired[pulumi.Input['ErEnvConfStagingArgsDict']]
        """
        The configuration of a staging environment. See `staging` below.
        """
elif False:
    ErEnvConfArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfArgs:
    def __init__(__self__, *,
                 preset_canary_anhui: Optional[pulumi.Input['ErEnvConfPresetCanaryAnhuiArgs']] = None,
                 preset_canary_beijing: Optional[pulumi.Input['ErEnvConfPresetCanaryBeijingArgs']] = None,
                 preset_canary_chongqing: Optional[pulumi.Input['ErEnvConfPresetCanaryChongqingArgs']] = None,
                 preset_canary_fujian: Optional[pulumi.Input['ErEnvConfPresetCanaryFujianArgs']] = None,
                 preset_canary_gansu: Optional[pulumi.Input['ErEnvConfPresetCanaryGansuArgs']] = None,
                 preset_canary_guangdong: Optional[pulumi.Input['ErEnvConfPresetCanaryGuangdongArgs']] = None,
                 preset_canary_guangxi: Optional[pulumi.Input['ErEnvConfPresetCanaryGuangxiArgs']] = None,
                 preset_canary_guizhou: Optional[pulumi.Input['ErEnvConfPresetCanaryGuizhouArgs']] = None,
                 preset_canary_hainan: Optional[pulumi.Input['ErEnvConfPresetCanaryHainanArgs']] = None,
                 preset_canary_hebei: Optional[pulumi.Input['ErEnvConfPresetCanaryHebeiArgs']] = None,
                 preset_canary_heilongjiang: Optional[pulumi.Input['ErEnvConfPresetCanaryHeilongjiangArgs']] = None,
                 preset_canary_henan: Optional[pulumi.Input['ErEnvConfPresetCanaryHenanArgs']] = None,
                 preset_canary_hong_kong: Optional[pulumi.Input['ErEnvConfPresetCanaryHongKongArgs']] = None,
                 preset_canary_hubei: Optional[pulumi.Input['ErEnvConfPresetCanaryHubeiArgs']] = None,
                 preset_canary_hunan: Optional[pulumi.Input['ErEnvConfPresetCanaryHunanArgs']] = None,
                 preset_canary_jiangsu: Optional[pulumi.Input['ErEnvConfPresetCanaryJiangsuArgs']] = None,
                 preset_canary_jiangxi: Optional[pulumi.Input['ErEnvConfPresetCanaryJiangxiArgs']] = None,
                 preset_canary_jilin: Optional[pulumi.Input['ErEnvConfPresetCanaryJilinArgs']] = None,
                 preset_canary_liaoning: Optional[pulumi.Input['ErEnvConfPresetCanaryLiaoningArgs']] = None,
                 preset_canary_macau: Optional[pulumi.Input['ErEnvConfPresetCanaryMacauArgs']] = None,
                 preset_canary_neimenggu: Optional[pulumi.Input['ErEnvConfPresetCanaryNeimengguArgs']] = None,
                 preset_canary_ningxia: Optional[pulumi.Input['ErEnvConfPresetCanaryNingxiaArgs']] = None,
                 preset_canary_overseas: Optional[pulumi.Input['ErEnvConfPresetCanaryOverseasArgs']] = None,
                 preset_canary_qinghai: Optional[pulumi.Input['ErEnvConfPresetCanaryQinghaiArgs']] = None,
                 preset_canary_shaanxi: Optional[pulumi.Input['ErEnvConfPresetCanaryShaanxiArgs']] = None,
                 preset_canary_shandong: Optional[pulumi.Input['ErEnvConfPresetCanaryShandongArgs']] = None,
                 preset_canary_shanghai: Optional[pulumi.Input['ErEnvConfPresetCanaryShanghaiArgs']] = None,
                 preset_canary_shanxi: Optional[pulumi.Input['ErEnvConfPresetCanaryShanxiArgs']] = None,
                 preset_canary_sichuan: Optional[pulumi.Input['ErEnvConfPresetCanarySichuanArgs']] = None,
                 preset_canary_taiwan: Optional[pulumi.Input['ErEnvConfPresetCanaryTaiwanArgs']] = None,
                 preset_canary_tianjin: Optional[pulumi.Input['ErEnvConfPresetCanaryTianjinArgs']] = None,
                 preset_canary_xinjiang: Optional[pulumi.Input['ErEnvConfPresetCanaryXinjiangArgs']] = None,
                 preset_canary_xizang: Optional[pulumi.Input['ErEnvConfPresetCanaryXizangArgs']] = None,
                 preset_canary_yunnan: Optional[pulumi.Input['ErEnvConfPresetCanaryYunnanArgs']] = None,
                 preset_canary_zhejiang: Optional[pulumi.Input['ErEnvConfPresetCanaryZhejiangArgs']] = None,
                 production: Optional[pulumi.Input['ErEnvConfProductionArgs']] = None,
                 staging: Optional[pulumi.Input['ErEnvConfStagingArgs']] = None):
        """
        :param pulumi.Input['ErEnvConfPresetCanaryAnhuiArgs'] preset_canary_anhui: The configuration of a presetCanaryAnhui environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryBeijingArgs'] preset_canary_beijing: The configuration of a presetCanaryBeijing environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryChongqingArgs'] preset_canary_chongqing: The configuration of a presetCanaryChongqing environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryFujianArgs'] preset_canary_fujian: The configuration of a presetCanaryFujian environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryGansuArgs'] preset_canary_gansu: The configuration of a presetCanaryGansu environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryGuangdongArgs'] preset_canary_guangdong: The configuration of a presetCanaryGuangdong environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryGuangxiArgs'] preset_canary_guangxi: The configuration of a presetCanaryGuangxi environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryGuizhouArgs'] preset_canary_guizhou: The configuration of a presetCanaryGuizhou environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryHainanArgs'] preset_canary_hainan: The configuration of a presetCanaryHainan environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryHebeiArgs'] preset_canary_hebei: The configuration of a presetCanaryHebei environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryHeilongjiangArgs'] preset_canary_heilongjiang: The configuration of a presetCanaryHeilongjiang environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryHenanArgs'] preset_canary_henan: The configuration of a presetCanaryHenan environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryHongKongArgs'] preset_canary_hong_kong: The configuration of a presetCanaryHongKong environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryHubeiArgs'] preset_canary_hubei: The configuration of a presetCanaryHubei environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryHunanArgs'] preset_canary_hunan: The configuration of a presetCanaryHunan environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryJiangsuArgs'] preset_canary_jiangsu: The configuration of a presetCanaryJiangsu environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryJiangxiArgs'] preset_canary_jiangxi: The configuration of a presetCanaryJiangxi environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryJilinArgs'] preset_canary_jilin: The configuration of a presetCanaryJilin environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryLiaoningArgs'] preset_canary_liaoning: The configuration of a presetCanaryLiaoning environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryMacauArgs'] preset_canary_macau: The configuration of a presetCanaryMacau environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryNeimengguArgs'] preset_canary_neimenggu: The configuration of a presetCanaryNeimenggu environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryNingxiaArgs'] preset_canary_ningxia: The configuration of a presetCanaryNingxia environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryOverseasArgs'] preset_canary_overseas: The configuration of a presetCanaryOverseas environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryQinghaiArgs'] preset_canary_qinghai: The configuration of a presetCanaryQinghai environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryShaanxiArgs'] preset_canary_shaanxi: The configuration of a presetCanaryShaanxi environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryShandongArgs'] preset_canary_shandong: The configuration of a presetCanaryShandong environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryShanghaiArgs'] preset_canary_shanghai: The configuration of a presetCanaryShanghai environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryShanxiArgs'] preset_canary_shanxi: The configuration of a presetCanaryShanxi environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanarySichuanArgs'] preset_canary_sichuan: The configuration of a presetCanarySichuan environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryTaiwanArgs'] preset_canary_taiwan: The configuration of a presetCanaryTaiwan environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryTianjinArgs'] preset_canary_tianjin: The configuration of a presetCanaryTianjin environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryXinjiangArgs'] preset_canary_xinjiang: The configuration of a presetCanaryXinjiang environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryXizangArgs'] preset_canary_xizang: The configuration of a presetCanaryXizang environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryYunnanArgs'] preset_canary_yunnan: The configuration of a presetCanaryYunnan environment. See `staging` below.
        :param pulumi.Input['ErEnvConfPresetCanaryZhejiangArgs'] preset_canary_zhejiang: The configuration of a presetCanaryZhejiang environment. See `staging` below.
        :param pulumi.Input['ErEnvConfProductionArgs'] production: The configuration of a production environment. See `staging` below.
        :param pulumi.Input['ErEnvConfStagingArgs'] staging: The configuration of a staging environment. See `staging` below.
        """
        if preset_canary_anhui is not None:
            pulumi.set(__self__, "preset_canary_anhui", preset_canary_anhui)
        if preset_canary_beijing is not None:
            pulumi.set(__self__, "preset_canary_beijing", preset_canary_beijing)
        if preset_canary_chongqing is not None:
            pulumi.set(__self__, "preset_canary_chongqing", preset_canary_chongqing)
        if preset_canary_fujian is not None:
            pulumi.set(__self__, "preset_canary_fujian", preset_canary_fujian)
        if preset_canary_gansu is not None:
            pulumi.set(__self__, "preset_canary_gansu", preset_canary_gansu)
        if preset_canary_guangdong is not None:
            pulumi.set(__self__, "preset_canary_guangdong", preset_canary_guangdong)
        if preset_canary_guangxi is not None:
            pulumi.set(__self__, "preset_canary_guangxi", preset_canary_guangxi)
        if preset_canary_guizhou is not None:
            pulumi.set(__self__, "preset_canary_guizhou", preset_canary_guizhou)
        if preset_canary_hainan is not None:
            pulumi.set(__self__, "preset_canary_hainan", preset_canary_hainan)
        if preset_canary_hebei is not None:
            pulumi.set(__self__, "preset_canary_hebei", preset_canary_hebei)
        if preset_canary_heilongjiang is not None:
            pulumi.set(__self__, "preset_canary_heilongjiang", preset_canary_heilongjiang)
        if preset_canary_henan is not None:
            pulumi.set(__self__, "preset_canary_henan", preset_canary_henan)
        if preset_canary_hong_kong is not None:
            pulumi.set(__self__, "preset_canary_hong_kong", preset_canary_hong_kong)
        if preset_canary_hubei is not None:
            pulumi.set(__self__, "preset_canary_hubei", preset_canary_hubei)
        if preset_canary_hunan is not None:
            pulumi.set(__self__, "preset_canary_hunan", preset_canary_hunan)
        if preset_canary_jiangsu is not None:
            pulumi.set(__self__, "preset_canary_jiangsu", preset_canary_jiangsu)
        if preset_canary_jiangxi is not None:
            pulumi.set(__self__, "preset_canary_jiangxi", preset_canary_jiangxi)
        if preset_canary_jilin is not None:
            pulumi.set(__self__, "preset_canary_jilin", preset_canary_jilin)
        if preset_canary_liaoning is not None:
            pulumi.set(__self__, "preset_canary_liaoning", preset_canary_liaoning)
        if preset_canary_macau is not None:
            pulumi.set(__self__, "preset_canary_macau", preset_canary_macau)
        if preset_canary_neimenggu is not None:
            pulumi.set(__self__, "preset_canary_neimenggu", preset_canary_neimenggu)
        if preset_canary_ningxia is not None:
            pulumi.set(__self__, "preset_canary_ningxia", preset_canary_ningxia)
        if preset_canary_overseas is not None:
            pulumi.set(__self__, "preset_canary_overseas", preset_canary_overseas)
        if preset_canary_qinghai is not None:
            pulumi.set(__self__, "preset_canary_qinghai", preset_canary_qinghai)
        if preset_canary_shaanxi is not None:
            pulumi.set(__self__, "preset_canary_shaanxi", preset_canary_shaanxi)
        if preset_canary_shandong is not None:
            pulumi.set(__self__, "preset_canary_shandong", preset_canary_shandong)
        if preset_canary_shanghai is not None:
            pulumi.set(__self__, "preset_canary_shanghai", preset_canary_shanghai)
        if preset_canary_shanxi is not None:
            pulumi.set(__self__, "preset_canary_shanxi", preset_canary_shanxi)
        if preset_canary_sichuan is not None:
            pulumi.set(__self__, "preset_canary_sichuan", preset_canary_sichuan)
        if preset_canary_taiwan is not None:
            pulumi.set(__self__, "preset_canary_taiwan", preset_canary_taiwan)
        if preset_canary_tianjin is not None:
            pulumi.set(__self__, "preset_canary_tianjin", preset_canary_tianjin)
        if preset_canary_xinjiang is not None:
            pulumi.set(__self__, "preset_canary_xinjiang", preset_canary_xinjiang)
        if preset_canary_xizang is not None:
            pulumi.set(__self__, "preset_canary_xizang", preset_canary_xizang)
        if preset_canary_yunnan is not None:
            pulumi.set(__self__, "preset_canary_yunnan", preset_canary_yunnan)
        if preset_canary_zhejiang is not None:
            pulumi.set(__self__, "preset_canary_zhejiang", preset_canary_zhejiang)
        if production is not None:
            pulumi.set(__self__, "production", production)
        if staging is not None:
            pulumi.set(__self__, "staging", staging)

    @_builtins.property
    @pulumi.getter(name="presetCanaryAnhui")
    def preset_canary_anhui(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryAnhuiArgs']]:
        """
        The configuration of a presetCanaryAnhui environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_anhui")

    @preset_canary_anhui.setter
    def preset_canary_anhui(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryAnhuiArgs']]):
        pulumi.set(self, "preset_canary_anhui", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryBeijing")
    def preset_canary_beijing(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryBeijingArgs']]:
        """
        The configuration of a presetCanaryBeijing environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_beijing")

    @preset_canary_beijing.setter
    def preset_canary_beijing(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryBeijingArgs']]):
        pulumi.set(self, "preset_canary_beijing", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryChongqing")
    def preset_canary_chongqing(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryChongqingArgs']]:
        """
        The configuration of a presetCanaryChongqing environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_chongqing")

    @preset_canary_chongqing.setter
    def preset_canary_chongqing(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryChongqingArgs']]):
        pulumi.set(self, "preset_canary_chongqing", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryFujian")
    def preset_canary_fujian(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryFujianArgs']]:
        """
        The configuration of a presetCanaryFujian environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_fujian")

    @preset_canary_fujian.setter
    def preset_canary_fujian(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryFujianArgs']]):
        pulumi.set(self, "preset_canary_fujian", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryGansu")
    def preset_canary_gansu(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryGansuArgs']]:
        """
        The configuration of a presetCanaryGansu environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_gansu")

    @preset_canary_gansu.setter
    def preset_canary_gansu(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryGansuArgs']]):
        pulumi.set(self, "preset_canary_gansu", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryGuangdong")
    def preset_canary_guangdong(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryGuangdongArgs']]:
        """
        The configuration of a presetCanaryGuangdong environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_guangdong")

    @preset_canary_guangdong.setter
    def preset_canary_guangdong(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryGuangdongArgs']]):
        pulumi.set(self, "preset_canary_guangdong", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryGuangxi")
    def preset_canary_guangxi(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryGuangxiArgs']]:
        """
        The configuration of a presetCanaryGuangxi environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_guangxi")

    @preset_canary_guangxi.setter
    def preset_canary_guangxi(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryGuangxiArgs']]):
        pulumi.set(self, "preset_canary_guangxi", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryGuizhou")
    def preset_canary_guizhou(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryGuizhouArgs']]:
        """
        The configuration of a presetCanaryGuizhou environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_guizhou")

    @preset_canary_guizhou.setter
    def preset_canary_guizhou(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryGuizhouArgs']]):
        pulumi.set(self, "preset_canary_guizhou", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryHainan")
    def preset_canary_hainan(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryHainanArgs']]:
        """
        The configuration of a presetCanaryHainan environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_hainan")

    @preset_canary_hainan.setter
    def preset_canary_hainan(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryHainanArgs']]):
        pulumi.set(self, "preset_canary_hainan", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryHebei")
    def preset_canary_hebei(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryHebeiArgs']]:
        """
        The configuration of a presetCanaryHebei environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_hebei")

    @preset_canary_hebei.setter
    def preset_canary_hebei(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryHebeiArgs']]):
        pulumi.set(self, "preset_canary_hebei", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryHeilongjiang")
    def preset_canary_heilongjiang(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryHeilongjiangArgs']]:
        """
        The configuration of a presetCanaryHeilongjiang environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_heilongjiang")

    @preset_canary_heilongjiang.setter
    def preset_canary_heilongjiang(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryHeilongjiangArgs']]):
        pulumi.set(self, "preset_canary_heilongjiang", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryHenan")
    def preset_canary_henan(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryHenanArgs']]:
        """
        The configuration of a presetCanaryHenan environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_henan")

    @preset_canary_henan.setter
    def preset_canary_henan(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryHenanArgs']]):
        pulumi.set(self, "preset_canary_henan", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryHongKong")
    def preset_canary_hong_kong(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryHongKongArgs']]:
        """
        The configuration of a presetCanaryHongKong environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_hong_kong")

    @preset_canary_hong_kong.setter
    def preset_canary_hong_kong(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryHongKongArgs']]):
        pulumi.set(self, "preset_canary_hong_kong", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryHubei")
    def preset_canary_hubei(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryHubeiArgs']]:
        """
        The configuration of a presetCanaryHubei environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_hubei")

    @preset_canary_hubei.setter
    def preset_canary_hubei(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryHubeiArgs']]):
        pulumi.set(self, "preset_canary_hubei", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryHunan")
    def preset_canary_hunan(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryHunanArgs']]:
        """
        The configuration of a presetCanaryHunan environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_hunan")

    @preset_canary_hunan.setter
    def preset_canary_hunan(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryHunanArgs']]):
        pulumi.set(self, "preset_canary_hunan", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryJiangsu")
    def preset_canary_jiangsu(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryJiangsuArgs']]:
        """
        The configuration of a presetCanaryJiangsu environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_jiangsu")

    @preset_canary_jiangsu.setter
    def preset_canary_jiangsu(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryJiangsuArgs']]):
        pulumi.set(self, "preset_canary_jiangsu", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryJiangxi")
    def preset_canary_jiangxi(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryJiangxiArgs']]:
        """
        The configuration of a presetCanaryJiangxi environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_jiangxi")

    @preset_canary_jiangxi.setter
    def preset_canary_jiangxi(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryJiangxiArgs']]):
        pulumi.set(self, "preset_canary_jiangxi", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryJilin")
    def preset_canary_jilin(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryJilinArgs']]:
        """
        The configuration of a presetCanaryJilin environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_jilin")

    @preset_canary_jilin.setter
    def preset_canary_jilin(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryJilinArgs']]):
        pulumi.set(self, "preset_canary_jilin", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryLiaoning")
    def preset_canary_liaoning(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryLiaoningArgs']]:
        """
        The configuration of a presetCanaryLiaoning environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_liaoning")

    @preset_canary_liaoning.setter
    def preset_canary_liaoning(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryLiaoningArgs']]):
        pulumi.set(self, "preset_canary_liaoning", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryMacau")
    def preset_canary_macau(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryMacauArgs']]:
        """
        The configuration of a presetCanaryMacau environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_macau")

    @preset_canary_macau.setter
    def preset_canary_macau(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryMacauArgs']]):
        pulumi.set(self, "preset_canary_macau", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryNeimenggu")
    def preset_canary_neimenggu(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryNeimengguArgs']]:
        """
        The configuration of a presetCanaryNeimenggu environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_neimenggu")

    @preset_canary_neimenggu.setter
    def preset_canary_neimenggu(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryNeimengguArgs']]):
        pulumi.set(self, "preset_canary_neimenggu", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryNingxia")
    def preset_canary_ningxia(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryNingxiaArgs']]:
        """
        The configuration of a presetCanaryNingxia environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_ningxia")

    @preset_canary_ningxia.setter
    def preset_canary_ningxia(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryNingxiaArgs']]):
        pulumi.set(self, "preset_canary_ningxia", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryOverseas")
    def preset_canary_overseas(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryOverseasArgs']]:
        """
        The configuration of a presetCanaryOverseas environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_overseas")

    @preset_canary_overseas.setter
    def preset_canary_overseas(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryOverseasArgs']]):
        pulumi.set(self, "preset_canary_overseas", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryQinghai")
    def preset_canary_qinghai(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryQinghaiArgs']]:
        """
        The configuration of a presetCanaryQinghai environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_qinghai")

    @preset_canary_qinghai.setter
    def preset_canary_qinghai(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryQinghaiArgs']]):
        pulumi.set(self, "preset_canary_qinghai", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryShaanxi")
    def preset_canary_shaanxi(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryShaanxiArgs']]:
        """
        The configuration of a presetCanaryShaanxi environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_shaanxi")

    @preset_canary_shaanxi.setter
    def preset_canary_shaanxi(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryShaanxiArgs']]):
        pulumi.set(self, "preset_canary_shaanxi", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryShandong")
    def preset_canary_shandong(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryShandongArgs']]:
        """
        The configuration of a presetCanaryShandong environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_shandong")

    @preset_canary_shandong.setter
    def preset_canary_shandong(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryShandongArgs']]):
        pulumi.set(self, "preset_canary_shandong", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryShanghai")
    def preset_canary_shanghai(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryShanghaiArgs']]:
        """
        The configuration of a presetCanaryShanghai environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_shanghai")

    @preset_canary_shanghai.setter
    def preset_canary_shanghai(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryShanghaiArgs']]):
        pulumi.set(self, "preset_canary_shanghai", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryShanxi")
    def preset_canary_shanxi(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryShanxiArgs']]:
        """
        The configuration of a presetCanaryShanxi environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_shanxi")

    @preset_canary_shanxi.setter
    def preset_canary_shanxi(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryShanxiArgs']]):
        pulumi.set(self, "preset_canary_shanxi", value)

    @_builtins.property
    @pulumi.getter(name="presetCanarySichuan")
    def preset_canary_sichuan(self) -> Optional[pulumi.Input['ErEnvConfPresetCanarySichuanArgs']]:
        """
        The configuration of a presetCanarySichuan environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_sichuan")

    @preset_canary_sichuan.setter
    def preset_canary_sichuan(self, value: Optional[pulumi.Input['ErEnvConfPresetCanarySichuanArgs']]):
        pulumi.set(self, "preset_canary_sichuan", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryTaiwan")
    def preset_canary_taiwan(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryTaiwanArgs']]:
        """
        The configuration of a presetCanaryTaiwan environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_taiwan")

    @preset_canary_taiwan.setter
    def preset_canary_taiwan(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryTaiwanArgs']]):
        pulumi.set(self, "preset_canary_taiwan", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryTianjin")
    def preset_canary_tianjin(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryTianjinArgs']]:
        """
        The configuration of a presetCanaryTianjin environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_tianjin")

    @preset_canary_tianjin.setter
    def preset_canary_tianjin(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryTianjinArgs']]):
        pulumi.set(self, "preset_canary_tianjin", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryXinjiang")
    def preset_canary_xinjiang(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryXinjiangArgs']]:
        """
        The configuration of a presetCanaryXinjiang environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_xinjiang")

    @preset_canary_xinjiang.setter
    def preset_canary_xinjiang(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryXinjiangArgs']]):
        pulumi.set(self, "preset_canary_xinjiang", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryXizang")
    def preset_canary_xizang(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryXizangArgs']]:
        """
        The configuration of a presetCanaryXizang environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_xizang")

    @preset_canary_xizang.setter
    def preset_canary_xizang(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryXizangArgs']]):
        pulumi.set(self, "preset_canary_xizang", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryYunnan")
    def preset_canary_yunnan(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryYunnanArgs']]:
        """
        The configuration of a presetCanaryYunnan environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_yunnan")

    @preset_canary_yunnan.setter
    def preset_canary_yunnan(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryYunnanArgs']]):
        pulumi.set(self, "preset_canary_yunnan", value)

    @_builtins.property
    @pulumi.getter(name="presetCanaryZhejiang")
    def preset_canary_zhejiang(self) -> Optional[pulumi.Input['ErEnvConfPresetCanaryZhejiangArgs']]:
        """
        The configuration of a presetCanaryZhejiang environment. See `staging` below.
        """
        return pulumi.get(self, "preset_canary_zhejiang")

    @preset_canary_zhejiang.setter
    def preset_canary_zhejiang(self, value: Optional[pulumi.Input['ErEnvConfPresetCanaryZhejiangArgs']]):
        pulumi.set(self, "preset_canary_zhejiang", value)

    @_builtins.property
    @pulumi.getter
    def production(self) -> Optional[pulumi.Input['ErEnvConfProductionArgs']]:
        """
        The configuration of a production environment. See `staging` below.
        """
        return pulumi.get(self, "production")

    @production.setter
    def production(self, value: Optional[pulumi.Input['ErEnvConfProductionArgs']]):
        pulumi.set(self, "production", value)

    @_builtins.property
    @pulumi.getter
    def staging(self) -> Optional[pulumi.Input['ErEnvConfStagingArgs']]:
        """
        The configuration of a staging environment. See `staging` below.
        """
        return pulumi.get(self, "staging")

    @staging.setter
    def staging(self, value: Optional[pulumi.Input['ErEnvConfStagingArgs']]):
        pulumi.set(self, "staging", value)


if not MYPY:
    class ErEnvConfPresetCanaryAnhuiArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryAnhuiArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryAnhuiArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryBeijingArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryBeijingArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryBeijingArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryChongqingArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryChongqingArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryChongqingArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryFujianArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryFujianArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryFujianArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryGansuArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryGansuArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryGansuArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryGuangdongArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryGuangdongArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryGuangdongArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryGuangxiArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryGuangxiArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryGuangxiArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryGuizhouArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryGuizhouArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryGuizhouArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryHainanArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryHainanArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryHainanArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryHebeiArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryHebeiArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryHebeiArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryHeilongjiangArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryHeilongjiangArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryHeilongjiangArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryHenanArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryHenanArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryHenanArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryHongKongArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryHongKongArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryHongKongArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryHubeiArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryHubeiArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryHubeiArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryHunanArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryHunanArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryHunanArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryJiangsuArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryJiangsuArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryJiangsuArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryJiangxiArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryJiangxiArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryJiangxiArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryJilinArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryJilinArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryJilinArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryLiaoningArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryLiaoningArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryLiaoningArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryMacauArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryMacauArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryMacauArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryNeimengguArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryNeimengguArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryNeimengguArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryNingxiaArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryNingxiaArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryNingxiaArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryOverseasArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryOverseasArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryOverseasArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryQinghaiArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryQinghaiArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryQinghaiArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryShaanxiArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryShaanxiArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryShaanxiArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryShandongArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryShandongArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryShandongArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryShanghaiArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryShanghaiArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryShanghaiArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryShanxiArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryShanxiArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryShanxiArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanarySichuanArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanarySichuanArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanarySichuanArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryTaiwanArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryTaiwanArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryTaiwanArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryTianjinArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryTianjinArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryTianjinArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryXinjiangArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryXinjiangArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryXinjiangArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryXizangArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryXizangArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryXizangArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryYunnanArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryYunnanArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryYunnanArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfPresetCanaryZhejiangArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfPresetCanaryZhejiangArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfPresetCanaryZhejiangArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfProductionArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfProductionArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfProductionArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class ErEnvConfStagingArgsDict(TypedDict):
        allowed_hosts: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
        """
        Allowed DCDN domain names.
        """
        code_rev: NotRequired[pulumi.Input[_builtins.str]]
        """
        The version number of the code.
        """
        spec_name: NotRequired[pulumi.Input[_builtins.str]]
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
elif False:
    ErEnvConfStagingArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ErEnvConfStagingArgs:
    def __init__(__self__, *,
                 allowed_hosts: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 code_rev: Optional[pulumi.Input[_builtins.str]] = None,
                 spec_name: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_hosts: Allowed DCDN domain names.
        :param pulumi.Input[_builtins.str] code_rev: The version number of the code.
        :param pulumi.Input[_builtins.str] spec_name: The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        if allowed_hosts is not None:
            pulumi.set(__self__, "allowed_hosts", allowed_hosts)
        if code_rev is not None:
            pulumi.set(__self__, "code_rev", code_rev)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)

    @_builtins.property
    @pulumi.getter(name="allowedHosts")
    def allowed_hosts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        Allowed DCDN domain names.
        """
        return pulumi.get(self, "allowed_hosts")

    @allowed_hosts.setter
    def allowed_hosts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "allowed_hosts", value)

    @_builtins.property
    @pulumi.getter(name="codeRev")
    def code_rev(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The version number of the code.
        """
        return pulumi.get(self, "code_rev")

    @code_rev.setter
    def code_rev(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code_rev", value)

    @_builtins.property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The specification of the CPU time slice. Valid values: `5ms`, `50ms`, `100ms`.
        """
        return pulumi.get(self, "spec_name")

    @spec_name.setter
    def spec_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "spec_name", value)


if not MYPY:
    class IpaDomainSourceArgsDict(TypedDict):
        content: pulumi.Input[_builtins.str]
        """
        The address of the origin server. You can specify an IP address or a domain name.
        """
        port: pulumi.Input[_builtins.int]
        """
        The custom port number. Valid values: `0` to `65535`.
        """
        priority: pulumi.Input[_builtins.str]
        """
        The priority of the origin server. Valid values: `20` and `30`. Default value: `20`. A value of 20 specifies that the origin is a primary origin. A value of 30 specifies that the origin is a secondary origin.
        """
        type: pulumi.Input[_builtins.str]
        """
        The type of the origin server. Valid values: `ipaddr`, `domain`, `oss`.
        """
        weight: pulumi.Input[_builtins.int]
        """
        The weight of the origin server. You must specify a value that is less than `100`. Default value: `10`.
        """
elif False:
    IpaDomainSourceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class IpaDomainSourceArgs:
    def __init__(__self__, *,
                 content: pulumi.Input[_builtins.str],
                 port: pulumi.Input[_builtins.int],
                 priority: pulumi.Input[_builtins.str],
                 type: pulumi.Input[_builtins.str],
                 weight: pulumi.Input[_builtins.int]):
        """
        :param pulumi.Input[_builtins.str] content: The address of the origin server. You can specify an IP address or a domain name.
        :param pulumi.Input[_builtins.int] port: The custom port number. Valid values: `0` to `65535`.
        :param pulumi.Input[_builtins.str] priority: The priority of the origin server. Valid values: `20` and `30`. Default value: `20`. A value of 20 specifies that the origin is a primary origin. A value of 30 specifies that the origin is a secondary origin.
        :param pulumi.Input[_builtins.str] type: The type of the origin server. Valid values: `ipaddr`, `domain`, `oss`.
        :param pulumi.Input[_builtins.int] weight: The weight of the origin server. You must specify a value that is less than `100`. Default value: `10`.
        """
        pulumi.set(__self__, "content", content)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "priority", priority)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "weight", weight)

    @_builtins.property
    @pulumi.getter
    def content(self) -> pulumi.Input[_builtins.str]:
        """
        The address of the origin server. You can specify an IP address or a domain name.
        """
        return pulumi.get(self, "content")

    @content.setter
    def content(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "content", value)

    @_builtins.property
    @pulumi.getter
    def port(self) -> pulumi.Input[_builtins.int]:
        """
        The custom port number. Valid values: `0` to `65535`.
        """
        return pulumi.get(self, "port")

    @port.setter
    def port(self, value: pulumi.Input[_builtins.int]):
        pulumi.set(self, "port", value)

    @_builtins.property
    @pulumi.getter
    def priority(self) -> pulumi.Input[_builtins.str]:
        """
        The priority of the origin server. Valid values: `20` and `30`. Default value: `20`. A value of 20 specifies that the origin is a primary origin. A value of 30 specifies that the origin is a secondary origin.
        """
        return pulumi.get(self, "priority")

    @priority.setter
    def priority(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "priority", value)

    @_builtins.property
    @pulumi.getter
    def type(self) -> pulumi.Input[_builtins.str]:
        """
        The type of the origin server. Valid values: `ipaddr`, `domain`, `oss`.
        """
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "type", value)

    @_builtins.property
    @pulumi.getter
    def weight(self) -> pulumi.Input[_builtins.int]:
        """
        The weight of the origin server. You must specify a value that is less than `100`. Default value: `10`.
        """
        return pulumi.get(self, "weight")

    @weight.setter
    def weight(self, value: pulumi.Input[_builtins.int]):
        pulumi.set(self, "weight", value)


if not MYPY:
    class WafRuleConditionArgsDict(TypedDict):
        key: pulumi.Input[_builtins.str]
        """
        The match field.
        """
        op_value: pulumi.Input[_builtins.str]
        """
        The logical symbol.
        """
        sub_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        The match subfield.
        """
        values: NotRequired[pulumi.Input[_builtins.str]]
        """
        The match content. Separate multiple values with commas (,).
        """
elif False:
    WafRuleConditionArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class WafRuleConditionArgs:
    def __init__(__self__, *,
                 key: pulumi.Input[_builtins.str],
                 op_value: pulumi.Input[_builtins.str],
                 sub_key: Optional[pulumi.Input[_builtins.str]] = None,
                 values: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] key: The match field.
        :param pulumi.Input[_builtins.str] op_value: The logical symbol.
        :param pulumi.Input[_builtins.str] sub_key: The match subfield.
        :param pulumi.Input[_builtins.str] values: The match content. Separate multiple values with commas (,).
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "op_value", op_value)
        if sub_key is not None:
            pulumi.set(__self__, "sub_key", sub_key)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> pulumi.Input[_builtins.str]:
        """
        The match field.
        """
        return pulumi.get(self, "key")

    @key.setter
    def key(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "key", value)

    @_builtins.property
    @pulumi.getter(name="opValue")
    def op_value(self) -> pulumi.Input[_builtins.str]:
        """
        The logical symbol.
        """
        return pulumi.get(self, "op_value")

    @op_value.setter
    def op_value(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "op_value", value)

    @_builtins.property
    @pulumi.getter(name="subKey")
    def sub_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The match subfield.
        """
        return pulumi.get(self, "sub_key")

    @sub_key.setter
    def sub_key(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "sub_key", value)

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The match content. Separate multiple values with commas (,).
        """
        return pulumi.get(self, "values")

    @values.setter
    def values(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "values", value)


if not MYPY:
    class WafRuleRateLimitArgsDict(TypedDict):
        interval: NotRequired[pulumi.Input[_builtins.int]]
        """
        Statistical duration, 5-1800.
        """
        status: NotRequired[pulumi.Input['WafRuleRateLimitStatusArgsDict']]
        """
        Response code statistics. See `status` below.
        """
        sub_key: NotRequired[pulumi.Input[_builtins.str]]
        """
        The subfield of the target field. If you set `target` to `Header`, `Query String Parameter`, or `Cookie Name`, you must configure `sub_key`.
        """
        target: NotRequired[pulumi.Input[_builtins.str]]
        """
        The statistical field for frequency control. Currently, `IP`, `Header`, `Query String Parameter`, `Cookie Name`, `Session` is supported.
        """
        threshold: NotRequired[pulumi.Input[_builtins.int]]
        """
        The trigger threshold of rate limiting. Valid values: 2 to 500000. Unit: requests.
        """
        ttl: NotRequired[pulumi.Input[_builtins.int]]
        """
        The validity period of the blacklist. Valid values: 60 to 86400. Unit: seconds.
        """
elif False:
    WafRuleRateLimitArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class WafRuleRateLimitArgs:
    def __init__(__self__, *,
                 interval: Optional[pulumi.Input[_builtins.int]] = None,
                 status: Optional[pulumi.Input['WafRuleRateLimitStatusArgs']] = None,
                 sub_key: Optional[pulumi.Input[_builtins.str]] = None,
                 target: Optional[pulumi.Input[_builtins.str]] = None,
                 threshold: Optional[pulumi.Input[_builtins.int]] = None,
                 ttl: Optional[pulumi.Input[_builtins.int]] = None):
        """
        :param pulumi.Input[_builtins.int] interval: Statistical duration, 5-1800.
        :param pulumi.Input['WafRuleRateLimitStatusArgs'] status: Response code statistics. See `status` below.
        :param pulumi.Input[_builtins.str] sub_key: The subfield of the target field. If you set `target` to `Header`, `Query String Parameter`, or `Cookie Name`, you must configure `sub_key`.
        :param pulumi.Input[_builtins.str] target: The statistical field for frequency control. Currently, `IP`, `Header`, `Query String Parameter`, `Cookie Name`, `Session` is supported.
        :param pulumi.Input[_builtins.int] threshold: The trigger threshold of rate limiting. Valid values: 2 to 500000. Unit: requests.
        :param pulumi.Input[_builtins.int] ttl: The validity period of the blacklist. Valid values: 60 to 86400. Unit: seconds.
        """
        if interval is not None:
            pulumi.set(__self__, "interval", interval)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if sub_key is not None:
            pulumi.set(__self__, "sub_key", sub_key)
        if target is not None:
            pulumi.set(__self__, "target", target)
        if threshold is not None:
            pulumi.set(__self__, "threshold", threshold)
        if ttl is not None:
            pulumi.set(__self__, "ttl", ttl)

    @_builtins.property
    @pulumi.getter
    def interval(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Statistical duration, 5-1800.
        """
        return pulumi.get(self, "interval")

    @interval.setter
    def interval(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "interval", value)

    @_builtins.property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input['WafRuleRateLimitStatusArgs']]:
        """
        Response code statistics. See `status` below.
        """
        return pulumi.get(self, "status")

    @status.setter
    def status(self, value: Optional[pulumi.Input['WafRuleRateLimitStatusArgs']]):
        pulumi.set(self, "status", value)

    @_builtins.property
    @pulumi.getter(name="subKey")
    def sub_key(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The subfield of the target field. If you set `target` to `Header`, `Query String Parameter`, or `Cookie Name`, you must configure `sub_key`.
        """
        return pulumi.get(self, "sub_key")

    @sub_key.setter
    def sub_key(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "sub_key", value)

    @_builtins.property
    @pulumi.getter
    def target(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The statistical field for frequency control. Currently, `IP`, `Header`, `Query String Parameter`, `Cookie Name`, `Session` is supported.
        """
        return pulumi.get(self, "target")

    @target.setter
    def target(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "target", value)

    @_builtins.property
    @pulumi.getter
    def threshold(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The trigger threshold of rate limiting. Valid values: 2 to 500000. Unit: requests.
        """
        return pulumi.get(self, "threshold")

    @threshold.setter
    def threshold(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "threshold", value)

    @_builtins.property
    @pulumi.getter
    def ttl(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The validity period of the blacklist. Valid values: 60 to 86400. Unit: seconds.
        """
        return pulumi.get(self, "ttl")

    @ttl.setter
    def ttl(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "ttl", value)


if not MYPY:
    class WafRuleRateLimitStatusArgsDict(TypedDict):
        code: NotRequired[pulumi.Input[_builtins.str]]
        """
        The HTTP status code returned.
        """
        count: NotRequired[pulumi.Input[_builtins.int]]
        """
        The number of times that the HTTP status code that was returned. Valid values: 2 to 50000. You can configure only one of the `ratio` and `count` fields.
        """
        ratio: NotRequired[pulumi.Input[_builtins.int]]
        """
        The percentage of HTTP status codes. Valid values: 1 to 100. You can configure only one of the `ratio` and `count` fields.
        """
elif False:
    WafRuleRateLimitStatusArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class WafRuleRateLimitStatusArgs:
    def __init__(__self__, *,
                 code: Optional[pulumi.Input[_builtins.str]] = None,
                 count: Optional[pulumi.Input[_builtins.int]] = None,
                 ratio: Optional[pulumi.Input[_builtins.int]] = None):
        """
        :param pulumi.Input[_builtins.str] code: The HTTP status code returned.
        :param pulumi.Input[_builtins.int] count: The number of times that the HTTP status code that was returned. Valid values: 2 to 50000. You can configure only one of the `ratio` and `count` fields.
        :param pulumi.Input[_builtins.int] ratio: The percentage of HTTP status codes. Valid values: 1 to 100. You can configure only one of the `ratio` and `count` fields.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if count is not None:
            pulumi.set(__self__, "count", count)
        if ratio is not None:
            pulumi.set(__self__, "ratio", ratio)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The HTTP status code returned.
        """
        return pulumi.get(self, "code")

    @code.setter
    def code(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "code", value)

    @_builtins.property
    @pulumi.getter
    def count(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The number of times that the HTTP status code that was returned. Valid values: 2 to 50000. You can configure only one of the `ratio` and `count` fields.
        """
        return pulumi.get(self, "count")

    @count.setter
    def count(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "count", value)

    @_builtins.property
    @pulumi.getter
    def ratio(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The percentage of HTTP status codes. Valid values: 1 to 100. You can configure only one of the `ratio` and `count` fields.
        """
        return pulumi.get(self, "ratio")

    @ratio.setter
    def ratio(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "ratio", value)


