# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins
import copy
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
from . import outputs
from ._inputs import *

__all__ = ['ScalingGroupArgs', 'ScalingGroup']

@pulumi.input_type
class ScalingGroupArgs:
    def __init__(__self__, *,
                 max_instance_number: pulumi.Input[builtins.int],
                 min_instance_number: pulumi.Input[builtins.int],
                 scaling_group_name: pulumi.Input[builtins.str],
                 subnet_ids: pulumi.Input[Sequence[pulumi.Input[builtins.str]]],
                 active_scaling_configuration_id: Optional[pulumi.Input[builtins.str]] = None,
                 default_cooldown: Optional[pulumi.Input[builtins.int]] = None,
                 desire_instance_number: Optional[pulumi.Input[builtins.int]] = None,
                 health_check_type: Optional[pulumi.Input[builtins.str]] = None,
                 instance_terminate_policy: Optional[pulumi.Input[builtins.str]] = None,
                 instances_distribution: Optional[pulumi.Input['ScalingGroupInstancesDistributionArgs']] = None,
                 is_enable_scaling_group: Optional[pulumi.Input[builtins.bool]] = None,
                 launch_template_id: Optional[pulumi.Input[builtins.str]] = None,
                 launch_template_overrides: Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupLaunchTemplateOverrideArgs']]]] = None,
                 launch_template_version: Optional[pulumi.Input[builtins.str]] = None,
                 multi_az_policy: Optional[pulumi.Input[builtins.str]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 scaling_mode: Optional[pulumi.Input[builtins.str]] = None,
                 server_group_attributes: Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupServerGroupAttributeArgs']]]] = None,
                 suspended_processes: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupTagArgs']]]] = None):
        """
        The set of arguments for constructing a ScalingGroup resource.
        :param pulumi.Input[builtins.int] max_instance_number: 伸缩组中实例个数的最大值，默认取值0 ～ 100。您可以通过配额中心调整。
        :param pulumi.Input[builtins.int] min_instance_number: 伸缩组中实例个数的最小值，默认取值0 ～ 100。您可以通过配额中心调整。
        :param pulumi.Input[builtins.str] scaling_group_name: 伸缩组名称，同一地域下伸缩组名称唯一。只能以中文、字母开头，只能包含中文、字母、数字、下划线和中划线 。长度限制为1 ~ 128个字符。暂不支持特殊字符。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] subnet_ids: 伸缩组中实例主网卡的子网ID列表。
        :param pulumi.Input[builtins.str] active_scaling_configuration_id: 伸缩组绑定的伸缩配置的ID。
        :param pulumi.Input[builtins.int] default_cooldown: 执行一次伸缩活动（添加或移出ECS实例）结束后的冷却时间。冷却时间内，该伸缩组不执行其它的伸缩活动，仅针对云监控报警任务触发的伸缩活动和伸缩规则有效。取值范围：5 ~ 86400，单位：秒。默认值：300。
        :param pulumi.Input[builtins.int] desire_instance_number: 伸缩组中期望运行的实例个数。1、不小于最小实例数MinInstanceNumber且不大于最大实例数MaxInstanceNumber。2、默认值：-1，表示不开启期望实例数能力。此时，伸缩组创建完成后会立即开始伸缩活动自动添加相应个数的实例。
        :param pulumi.Input[builtins.str] health_check_type: 伸缩组的健康检查方式。1、NONE：不做实例健康状态检查。2、ECS（默认）：对伸缩组内的ECS实例做健康检查。
        :param pulumi.Input[builtins.str] instance_terminate_policy: 实例移除策略，1、OldestInstance：移出最早加入 （包括自动创建和手动添加）伸缩组的实例。2、NewestInstance：移出最晚加入（包括自动创建和手动添加）伸缩组的实例。3、OldestScalingConfigurationWithOldestInstance（默认）：移出最早与伸缩组绑定的伸缩配置中，最早由伸缩组 自动创建 的实例。4、OldestScalingConfigurationWithNewestInstance：移出最早与伸缩组绑定的伸缩配置中，最晚由伸缩组 自动创建 的实例。
        :param pulumi.Input['ScalingGroupInstancesDistributionArgs'] instances_distribution: 实例分布策略。
        :param pulumi.Input[builtins.bool] is_enable_scaling_group: 是否启用伸缩组。true：启用。false：停止
        :param pulumi.Input[builtins.str] launch_template_id: 实例启动模板ID，配置后表示选择启动模版作为伸缩配置来源。
        :param pulumi.Input[builtins.str] launch_template_version: 实例启动模板的版本。1、模板的某个版本号。2、Default（默认）：始终使用模板默认版本。3、Latest：始终使用模板最新版本。
        :param pulumi.Input[builtins.str] multi_az_policy: 扩缩容策略，如果您选择了多个子网，需配置本参数。1、PRIORITY（默认）：优先级策略。2、BALANCE：均衡分布策略。
        :param pulumi.Input[builtins.str] project_name: 伸缩组所属项目，默认为default。一个资源只能归属于一个项目。只能包含字母、数字、下划线“_”、点“.”和中划线“-”。长度限制在64个字符以内。
        :param pulumi.Input[builtins.str] scaling_mode: 伸缩组的实例回收模式。1、release（默认）：释放模式。2、recycle：停机回收模式。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] suspended_processes: 暂停中的流程，无暂停中流程则返回空值。ScaleIn：缩容流程。ScaleOut：扩容流程。HealthCheck：健康检查。AlarmNotification：报警任务。ScheduledAction：定时任务。
        """
        pulumi.set(__self__, "max_instance_number", max_instance_number)
        pulumi.set(__self__, "min_instance_number", min_instance_number)
        pulumi.set(__self__, "scaling_group_name", scaling_group_name)
        pulumi.set(__self__, "subnet_ids", subnet_ids)
        if active_scaling_configuration_id is not None:
            pulumi.set(__self__, "active_scaling_configuration_id", active_scaling_configuration_id)
        if default_cooldown is not None:
            pulumi.set(__self__, "default_cooldown", default_cooldown)
        if desire_instance_number is not None:
            pulumi.set(__self__, "desire_instance_number", desire_instance_number)
        if health_check_type is not None:
            pulumi.set(__self__, "health_check_type", health_check_type)
        if instance_terminate_policy is not None:
            pulumi.set(__self__, "instance_terminate_policy", instance_terminate_policy)
        if instances_distribution is not None:
            pulumi.set(__self__, "instances_distribution", instances_distribution)
        if is_enable_scaling_group is not None:
            pulumi.set(__self__, "is_enable_scaling_group", is_enable_scaling_group)
        if launch_template_id is not None:
            pulumi.set(__self__, "launch_template_id", launch_template_id)
        if launch_template_overrides is not None:
            pulumi.set(__self__, "launch_template_overrides", launch_template_overrides)
        if launch_template_version is not None:
            pulumi.set(__self__, "launch_template_version", launch_template_version)
        if multi_az_policy is not None:
            pulumi.set(__self__, "multi_az_policy", multi_az_policy)
        if project_name is not None:
            pulumi.set(__self__, "project_name", project_name)
        if scaling_mode is not None:
            pulumi.set(__self__, "scaling_mode", scaling_mode)
        if server_group_attributes is not None:
            pulumi.set(__self__, "server_group_attributes", server_group_attributes)
        if suspended_processes is not None:
            pulumi.set(__self__, "suspended_processes", suspended_processes)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)

    @property
    @pulumi.getter(name="maxInstanceNumber")
    def max_instance_number(self) -> pulumi.Input[builtins.int]:
        """
        伸缩组中实例个数的最大值，默认取值0 ～ 100。您可以通过配额中心调整。
        """
        return pulumi.get(self, "max_instance_number")

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

    @property
    @pulumi.getter(name="minInstanceNumber")
    def min_instance_number(self) -> pulumi.Input[builtins.int]:
        """
        伸缩组中实例个数的最小值，默认取值0 ～ 100。您可以通过配额中心调整。
        """
        return pulumi.get(self, "min_instance_number")

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

    @property
    @pulumi.getter(name="scalingGroupName")
    def scaling_group_name(self) -> pulumi.Input[builtins.str]:
        """
        伸缩组名称，同一地域下伸缩组名称唯一。只能以中文、字母开头，只能包含中文、字母、数字、下划线和中划线 。长度限制为1 ~ 128个字符。暂不支持特殊字符。
        """
        return pulumi.get(self, "scaling_group_name")

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

    @property
    @pulumi.getter(name="subnetIds")
    def subnet_ids(self) -> pulumi.Input[Sequence[pulumi.Input[builtins.str]]]:
        """
        伸缩组中实例主网卡的子网ID列表。
        """
        return pulumi.get(self, "subnet_ids")

    @subnet_ids.setter
    def subnet_ids(self, value: pulumi.Input[Sequence[pulumi.Input[builtins.str]]]):
        pulumi.set(self, "subnet_ids", value)

    @property
    @pulumi.getter(name="activeScalingConfigurationId")
    def active_scaling_configuration_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        伸缩组绑定的伸缩配置的ID。
        """
        return pulumi.get(self, "active_scaling_configuration_id")

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

    @property
    @pulumi.getter(name="defaultCooldown")
    def default_cooldown(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        执行一次伸缩活动（添加或移出ECS实例）结束后的冷却时间。冷却时间内，该伸缩组不执行其它的伸缩活动，仅针对云监控报警任务触发的伸缩活动和伸缩规则有效。取值范围：5 ~ 86400，单位：秒。默认值：300。
        """
        return pulumi.get(self, "default_cooldown")

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

    @property
    @pulumi.getter(name="desireInstanceNumber")
    def desire_instance_number(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        伸缩组中期望运行的实例个数。1、不小于最小实例数MinInstanceNumber且不大于最大实例数MaxInstanceNumber。2、默认值：-1，表示不开启期望实例数能力。此时，伸缩组创建完成后会立即开始伸缩活动自动添加相应个数的实例。
        """
        return pulumi.get(self, "desire_instance_number")

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

    @property
    @pulumi.getter(name="healthCheckType")
    def health_check_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        伸缩组的健康检查方式。1、NONE：不做实例健康状态检查。2、ECS（默认）：对伸缩组内的ECS实例做健康检查。
        """
        return pulumi.get(self, "health_check_type")

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

    @property
    @pulumi.getter(name="instanceTerminatePolicy")
    def instance_terminate_policy(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例移除策略，1、OldestInstance：移出最早加入 （包括自动创建和手动添加）伸缩组的实例。2、NewestInstance：移出最晚加入（包括自动创建和手动添加）伸缩组的实例。3、OldestScalingConfigurationWithOldestInstance（默认）：移出最早与伸缩组绑定的伸缩配置中，最早由伸缩组 自动创建 的实例。4、OldestScalingConfigurationWithNewestInstance：移出最早与伸缩组绑定的伸缩配置中，最晚由伸缩组 自动创建 的实例。
        """
        return pulumi.get(self, "instance_terminate_policy")

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

    @property
    @pulumi.getter(name="instancesDistribution")
    def instances_distribution(self) -> Optional[pulumi.Input['ScalingGroupInstancesDistributionArgs']]:
        """
        实例分布策略。
        """
        return pulumi.get(self, "instances_distribution")

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

    @property
    @pulumi.getter(name="isEnableScalingGroup")
    def is_enable_scaling_group(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否启用伸缩组。true：启用。false：停止
        """
        return pulumi.get(self, "is_enable_scaling_group")

    @is_enable_scaling_group.setter
    def is_enable_scaling_group(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "is_enable_scaling_group", value)

    @property
    @pulumi.getter(name="launchTemplateId")
    def launch_template_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例启动模板ID，配置后表示选择启动模版作为伸缩配置来源。
        """
        return pulumi.get(self, "launch_template_id")

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

    @property
    @pulumi.getter(name="launchTemplateOverrides")
    def launch_template_overrides(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupLaunchTemplateOverrideArgs']]]]:
        return pulumi.get(self, "launch_template_overrides")

    @launch_template_overrides.setter
    def launch_template_overrides(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupLaunchTemplateOverrideArgs']]]]):
        pulumi.set(self, "launch_template_overrides", value)

    @property
    @pulumi.getter(name="launchTemplateVersion")
    def launch_template_version(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例启动模板的版本。1、模板的某个版本号。2、Default（默认）：始终使用模板默认版本。3、Latest：始终使用模板最新版本。
        """
        return pulumi.get(self, "launch_template_version")

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

    @property
    @pulumi.getter(name="multiAzPolicy")
    def multi_az_policy(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        扩缩容策略，如果您选择了多个子网，需配置本参数。1、PRIORITY（默认）：优先级策略。2、BALANCE：均衡分布策略。
        """
        return pulumi.get(self, "multi_az_policy")

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

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        伸缩组所属项目，默认为default。一个资源只能归属于一个项目。只能包含字母、数字、下划线“_”、点“.”和中划线“-”。长度限制在64个字符以内。
        """
        return pulumi.get(self, "project_name")

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

    @property
    @pulumi.getter(name="scalingMode")
    def scaling_mode(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        伸缩组的实例回收模式。1、release（默认）：释放模式。2、recycle：停机回收模式。
        """
        return pulumi.get(self, "scaling_mode")

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

    @property
    @pulumi.getter(name="serverGroupAttributes")
    def server_group_attributes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupServerGroupAttributeArgs']]]]:
        return pulumi.get(self, "server_group_attributes")

    @server_group_attributes.setter
    def server_group_attributes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupServerGroupAttributeArgs']]]]):
        pulumi.set(self, "server_group_attributes", value)

    @property
    @pulumi.getter(name="suspendedProcesses")
    def suspended_processes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        暂停中的流程，无暂停中流程则返回空值。ScaleIn：缩容流程。ScaleOut：扩容流程。HealthCheck：健康检查。AlarmNotification：报警任务。ScheduledAction：定时任务。
        """
        return pulumi.get(self, "suspended_processes")

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

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupTagArgs']]]]:
        return pulumi.get(self, "tags")

    @tags.setter
    def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupTagArgs']]]]):
        pulumi.set(self, "tags", value)


@pulumi.input_type
class _ScalingGroupState:
    def __init__(__self__, *,
                 active_scaling_configuration_id: Optional[pulumi.Input[builtins.str]] = None,
                 created_time: Optional[pulumi.Input[builtins.str]] = None,
                 db_instance_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 default_cooldown: Optional[pulumi.Input[builtins.int]] = None,
                 desire_instance_number: Optional[pulumi.Input[builtins.int]] = None,
                 health_check_type: Optional[pulumi.Input[builtins.str]] = None,
                 instance_terminate_policy: Optional[pulumi.Input[builtins.str]] = None,
                 instances_distribution: Optional[pulumi.Input['ScalingGroupInstancesDistributionArgs']] = None,
                 is_enable_scaling_group: Optional[pulumi.Input[builtins.bool]] = None,
                 launch_template_id: Optional[pulumi.Input[builtins.str]] = None,
                 launch_template_overrides: Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupLaunchTemplateOverrideArgs']]]] = None,
                 launch_template_version: Optional[pulumi.Input[builtins.str]] = None,
                 lifecycle_state: Optional[pulumi.Input[builtins.str]] = None,
                 load_balancer_health_check_grace_period: Optional[pulumi.Input[builtins.int]] = None,
                 max_instance_number: Optional[pulumi.Input[builtins.int]] = None,
                 min_instance_number: Optional[pulumi.Input[builtins.int]] = None,
                 multi_az_policy: Optional[pulumi.Input[builtins.str]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 scaling_group_id: Optional[pulumi.Input[builtins.str]] = None,
                 scaling_group_name: Optional[pulumi.Input[builtins.str]] = None,
                 scaling_mode: Optional[pulumi.Input[builtins.str]] = None,
                 server_group_attributes: Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupServerGroupAttributeArgs']]]] = None,
                 stopped_instance_count: Optional[pulumi.Input[builtins.int]] = None,
                 subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 suspended_processes: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupTagArgs']]]] = None,
                 total_instance_count: Optional[pulumi.Input[builtins.int]] = None,
                 updated_time: Optional[pulumi.Input[builtins.str]] = None,
                 vpc_id: Optional[pulumi.Input[builtins.str]] = None):
        """
        Input properties used for looking up and filtering ScalingGroup resources.
        :param pulumi.Input[builtins.str] active_scaling_configuration_id: 伸缩组绑定的伸缩配置的ID。
        :param pulumi.Input[builtins.str] created_time: 伸缩组创建时间。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] db_instance_ids: RDS数据库实例的ID。
        :param pulumi.Input[builtins.int] default_cooldown: 执行一次伸缩活动（添加或移出ECS实例）结束后的冷却时间。冷却时间内，该伸缩组不执行其它的伸缩活动，仅针对云监控报警任务触发的伸缩活动和伸缩规则有效。取值范围：5 ~ 86400，单位：秒。默认值：300。
        :param pulumi.Input[builtins.int] desire_instance_number: 伸缩组中期望运行的实例个数。1、不小于最小实例数MinInstanceNumber且不大于最大实例数MaxInstanceNumber。2、默认值：-1，表示不开启期望实例数能力。此时，伸缩组创建完成后会立即开始伸缩活动自动添加相应个数的实例。
        :param pulumi.Input[builtins.str] health_check_type: 伸缩组的健康检查方式。1、NONE：不做实例健康状态检查。2、ECS（默认）：对伸缩组内的ECS实例做健康检查。
        :param pulumi.Input[builtins.str] instance_terminate_policy: 实例移除策略，1、OldestInstance：移出最早加入 （包括自动创建和手动添加）伸缩组的实例。2、NewestInstance：移出最晚加入（包括自动创建和手动添加）伸缩组的实例。3、OldestScalingConfigurationWithOldestInstance（默认）：移出最早与伸缩组绑定的伸缩配置中，最早由伸缩组 自动创建 的实例。4、OldestScalingConfigurationWithNewestInstance：移出最早与伸缩组绑定的伸缩配置中，最晚由伸缩组 自动创建 的实例。
        :param pulumi.Input['ScalingGroupInstancesDistributionArgs'] instances_distribution: 实例分布策略。
        :param pulumi.Input[builtins.bool] is_enable_scaling_group: 是否启用伸缩组。true：启用。false：停止
        :param pulumi.Input[builtins.str] launch_template_id: 实例启动模板ID，配置后表示选择启动模版作为伸缩配置来源。
        :param pulumi.Input[builtins.str] launch_template_version: 实例启动模板的版本。1、模板的某个版本号。2、Default（默认）：始终使用模板默认版本。3、Latest：始终使用模板最新版本。
        :param pulumi.Input[builtins.str] lifecycle_state: 伸缩组的状态。Active：已启用。InActive：未激活。Deleting：删除中。Locked: 已锁定。CoolingDown: 冷却中。Unknown: 未知状态。
        :param pulumi.Input[builtins.int] load_balancer_health_check_grace_period: 伸缩组实例CLB健康状况检查宽限期。
        :param pulumi.Input[builtins.int] max_instance_number: 伸缩组中实例个数的最大值，默认取值0 ～ 100。您可以通过配额中心调整。
        :param pulumi.Input[builtins.int] min_instance_number: 伸缩组中实例个数的最小值，默认取值0 ～ 100。您可以通过配额中心调整。
        :param pulumi.Input[builtins.str] multi_az_policy: 扩缩容策略，如果您选择了多个子网，需配置本参数。1、PRIORITY（默认）：优先级策略。2、BALANCE：均衡分布策略。
        :param pulumi.Input[builtins.str] project_name: 伸缩组所属项目，默认为default。一个资源只能归属于一个项目。只能包含字母、数字、下划线“_”、点“.”和中划线“-”。长度限制在64个字符以内。
        :param pulumi.Input[builtins.str] scaling_group_id: 伸缩组ID。
        :param pulumi.Input[builtins.str] scaling_group_name: 伸缩组名称，同一地域下伸缩组名称唯一。只能以中文、字母开头，只能包含中文、字母、数字、下划线和中划线 。长度限制为1 ~ 128个字符。暂不支持特殊字符。
        :param pulumi.Input[builtins.str] scaling_mode: 伸缩组的实例回收模式。1、release（默认）：释放模式。2、recycle：停机回收模式。
        :param pulumi.Input[builtins.int] stopped_instance_count: 伸缩组内处于停用中状态的实例数量。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] subnet_ids: 伸缩组中实例主网卡的子网ID列表。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] suspended_processes: 暂停中的流程，无暂停中流程则返回空值。ScaleIn：缩容流程。ScaleOut：扩容流程。HealthCheck：健康检查。AlarmNotification：报警任务。ScheduledAction：定时任务。
        :param pulumi.Input[builtins.int] total_instance_count: 当前伸缩组内实例的个数。
        :param pulumi.Input[builtins.str] updated_time: 伸缩组更新时间。
        :param pulumi.Input[builtins.str] vpc_id: 伸缩组所属私有网络ID。
        """
        if active_scaling_configuration_id is not None:
            pulumi.set(__self__, "active_scaling_configuration_id", active_scaling_configuration_id)
        if created_time is not None:
            pulumi.set(__self__, "created_time", created_time)
        if db_instance_ids is not None:
            pulumi.set(__self__, "db_instance_ids", db_instance_ids)
        if default_cooldown is not None:
            pulumi.set(__self__, "default_cooldown", default_cooldown)
        if desire_instance_number is not None:
            pulumi.set(__self__, "desire_instance_number", desire_instance_number)
        if health_check_type is not None:
            pulumi.set(__self__, "health_check_type", health_check_type)
        if instance_terminate_policy is not None:
            pulumi.set(__self__, "instance_terminate_policy", instance_terminate_policy)
        if instances_distribution is not None:
            pulumi.set(__self__, "instances_distribution", instances_distribution)
        if is_enable_scaling_group is not None:
            pulumi.set(__self__, "is_enable_scaling_group", is_enable_scaling_group)
        if launch_template_id is not None:
            pulumi.set(__self__, "launch_template_id", launch_template_id)
        if launch_template_overrides is not None:
            pulumi.set(__self__, "launch_template_overrides", launch_template_overrides)
        if launch_template_version is not None:
            pulumi.set(__self__, "launch_template_version", launch_template_version)
        if lifecycle_state is not None:
            pulumi.set(__self__, "lifecycle_state", lifecycle_state)
        if load_balancer_health_check_grace_period is not None:
            pulumi.set(__self__, "load_balancer_health_check_grace_period", load_balancer_health_check_grace_period)
        if max_instance_number is not None:
            pulumi.set(__self__, "max_instance_number", max_instance_number)
        if min_instance_number is not None:
            pulumi.set(__self__, "min_instance_number", min_instance_number)
        if multi_az_policy is not None:
            pulumi.set(__self__, "multi_az_policy", multi_az_policy)
        if project_name is not None:
            pulumi.set(__self__, "project_name", project_name)
        if scaling_group_id is not None:
            pulumi.set(__self__, "scaling_group_id", scaling_group_id)
        if scaling_group_name is not None:
            pulumi.set(__self__, "scaling_group_name", scaling_group_name)
        if scaling_mode is not None:
            pulumi.set(__self__, "scaling_mode", scaling_mode)
        if server_group_attributes is not None:
            pulumi.set(__self__, "server_group_attributes", server_group_attributes)
        if stopped_instance_count is not None:
            pulumi.set(__self__, "stopped_instance_count", stopped_instance_count)
        if subnet_ids is not None:
            pulumi.set(__self__, "subnet_ids", subnet_ids)
        if suspended_processes is not None:
            pulumi.set(__self__, "suspended_processes", suspended_processes)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if total_instance_count is not None:
            pulumi.set(__self__, "total_instance_count", total_instance_count)
        if updated_time is not None:
            pulumi.set(__self__, "updated_time", updated_time)
        if vpc_id is not None:
            pulumi.set(__self__, "vpc_id", vpc_id)

    @property
    @pulumi.getter(name="activeScalingConfigurationId")
    def active_scaling_configuration_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        伸缩组绑定的伸缩配置的ID。
        """
        return pulumi.get(self, "active_scaling_configuration_id")

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

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        伸缩组创建时间。
        """
        return pulumi.get(self, "created_time")

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

    @property
    @pulumi.getter(name="dbInstanceIds")
    def db_instance_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        RDS数据库实例的ID。
        """
        return pulumi.get(self, "db_instance_ids")

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

    @property
    @pulumi.getter(name="defaultCooldown")
    def default_cooldown(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        执行一次伸缩活动（添加或移出ECS实例）结束后的冷却时间。冷却时间内，该伸缩组不执行其它的伸缩活动，仅针对云监控报警任务触发的伸缩活动和伸缩规则有效。取值范围：5 ~ 86400，单位：秒。默认值：300。
        """
        return pulumi.get(self, "default_cooldown")

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

    @property
    @pulumi.getter(name="desireInstanceNumber")
    def desire_instance_number(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        伸缩组中期望运行的实例个数。1、不小于最小实例数MinInstanceNumber且不大于最大实例数MaxInstanceNumber。2、默认值：-1，表示不开启期望实例数能力。此时，伸缩组创建完成后会立即开始伸缩活动自动添加相应个数的实例。
        """
        return pulumi.get(self, "desire_instance_number")

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

    @property
    @pulumi.getter(name="healthCheckType")
    def health_check_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        伸缩组的健康检查方式。1、NONE：不做实例健康状态检查。2、ECS（默认）：对伸缩组内的ECS实例做健康检查。
        """
        return pulumi.get(self, "health_check_type")

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

    @property
    @pulumi.getter(name="instanceTerminatePolicy")
    def instance_terminate_policy(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例移除策略，1、OldestInstance：移出最早加入 （包括自动创建和手动添加）伸缩组的实例。2、NewestInstance：移出最晚加入（包括自动创建和手动添加）伸缩组的实例。3、OldestScalingConfigurationWithOldestInstance（默认）：移出最早与伸缩组绑定的伸缩配置中，最早由伸缩组 自动创建 的实例。4、OldestScalingConfigurationWithNewestInstance：移出最早与伸缩组绑定的伸缩配置中，最晚由伸缩组 自动创建 的实例。
        """
        return pulumi.get(self, "instance_terminate_policy")

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

    @property
    @pulumi.getter(name="instancesDistribution")
    def instances_distribution(self) -> Optional[pulumi.Input['ScalingGroupInstancesDistributionArgs']]:
        """
        实例分布策略。
        """
        return pulumi.get(self, "instances_distribution")

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

    @property
    @pulumi.getter(name="isEnableScalingGroup")
    def is_enable_scaling_group(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否启用伸缩组。true：启用。false：停止
        """
        return pulumi.get(self, "is_enable_scaling_group")

    @is_enable_scaling_group.setter
    def is_enable_scaling_group(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "is_enable_scaling_group", value)

    @property
    @pulumi.getter(name="launchTemplateId")
    def launch_template_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例启动模板ID，配置后表示选择启动模版作为伸缩配置来源。
        """
        return pulumi.get(self, "launch_template_id")

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

    @property
    @pulumi.getter(name="launchTemplateOverrides")
    def launch_template_overrides(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupLaunchTemplateOverrideArgs']]]]:
        return pulumi.get(self, "launch_template_overrides")

    @launch_template_overrides.setter
    def launch_template_overrides(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupLaunchTemplateOverrideArgs']]]]):
        pulumi.set(self, "launch_template_overrides", value)

    @property
    @pulumi.getter(name="launchTemplateVersion")
    def launch_template_version(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例启动模板的版本。1、模板的某个版本号。2、Default（默认）：始终使用模板默认版本。3、Latest：始终使用模板最新版本。
        """
        return pulumi.get(self, "launch_template_version")

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

    @property
    @pulumi.getter(name="lifecycleState")
    def lifecycle_state(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        伸缩组的状态。Active：已启用。InActive：未激活。Deleting：删除中。Locked: 已锁定。CoolingDown: 冷却中。Unknown: 未知状态。
        """
        return pulumi.get(self, "lifecycle_state")

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

    @property
    @pulumi.getter(name="loadBalancerHealthCheckGracePeriod")
    def load_balancer_health_check_grace_period(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        伸缩组实例CLB健康状况检查宽限期。
        """
        return pulumi.get(self, "load_balancer_health_check_grace_period")

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

    @property
    @pulumi.getter(name="maxInstanceNumber")
    def max_instance_number(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        伸缩组中实例个数的最大值，默认取值0 ～ 100。您可以通过配额中心调整。
        """
        return pulumi.get(self, "max_instance_number")

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

    @property
    @pulumi.getter(name="minInstanceNumber")
    def min_instance_number(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        伸缩组中实例个数的最小值，默认取值0 ～ 100。您可以通过配额中心调整。
        """
        return pulumi.get(self, "min_instance_number")

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

    @property
    @pulumi.getter(name="multiAzPolicy")
    def multi_az_policy(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        扩缩容策略，如果您选择了多个子网，需配置本参数。1、PRIORITY（默认）：优先级策略。2、BALANCE：均衡分布策略。
        """
        return pulumi.get(self, "multi_az_policy")

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

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        伸缩组所属项目，默认为default。一个资源只能归属于一个项目。只能包含字母、数字、下划线“_”、点“.”和中划线“-”。长度限制在64个字符以内。
        """
        return pulumi.get(self, "project_name")

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

    @property
    @pulumi.getter(name="scalingGroupId")
    def scaling_group_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        伸缩组ID。
        """
        return pulumi.get(self, "scaling_group_id")

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

    @property
    @pulumi.getter(name="scalingGroupName")
    def scaling_group_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        伸缩组名称，同一地域下伸缩组名称唯一。只能以中文、字母开头，只能包含中文、字母、数字、下划线和中划线 。长度限制为1 ~ 128个字符。暂不支持特殊字符。
        """
        return pulumi.get(self, "scaling_group_name")

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

    @property
    @pulumi.getter(name="scalingMode")
    def scaling_mode(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        伸缩组的实例回收模式。1、release（默认）：释放模式。2、recycle：停机回收模式。
        """
        return pulumi.get(self, "scaling_mode")

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

    @property
    @pulumi.getter(name="serverGroupAttributes")
    def server_group_attributes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupServerGroupAttributeArgs']]]]:
        return pulumi.get(self, "server_group_attributes")

    @server_group_attributes.setter
    def server_group_attributes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupServerGroupAttributeArgs']]]]):
        pulumi.set(self, "server_group_attributes", value)

    @property
    @pulumi.getter(name="stoppedInstanceCount")
    def stopped_instance_count(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        伸缩组内处于停用中状态的实例数量。
        """
        return pulumi.get(self, "stopped_instance_count")

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

    @property
    @pulumi.getter(name="subnetIds")
    def subnet_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        伸缩组中实例主网卡的子网ID列表。
        """
        return pulumi.get(self, "subnet_ids")

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

    @property
    @pulumi.getter(name="suspendedProcesses")
    def suspended_processes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        暂停中的流程，无暂停中流程则返回空值。ScaleIn：缩容流程。ScaleOut：扩容流程。HealthCheck：健康检查。AlarmNotification：报警任务。ScheduledAction：定时任务。
        """
        return pulumi.get(self, "suspended_processes")

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

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupTagArgs']]]]:
        return pulumi.get(self, "tags")

    @tags.setter
    def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ScalingGroupTagArgs']]]]):
        pulumi.set(self, "tags", value)

    @property
    @pulumi.getter(name="totalInstanceCount")
    def total_instance_count(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        当前伸缩组内实例的个数。
        """
        return pulumi.get(self, "total_instance_count")

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

    @property
    @pulumi.getter(name="updatedTime")
    def updated_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        伸缩组更新时间。
        """
        return pulumi.get(self, "updated_time")

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

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        伸缩组所属私有网络ID。
        """
        return pulumi.get(self, "vpc_id")

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


@pulumi.type_token("bytepluscc:autoscaling/scalingGroup:ScalingGroup")
class ScalingGroup(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 active_scaling_configuration_id: Optional[pulumi.Input[builtins.str]] = None,
                 default_cooldown: Optional[pulumi.Input[builtins.int]] = None,
                 desire_instance_number: Optional[pulumi.Input[builtins.int]] = None,
                 health_check_type: Optional[pulumi.Input[builtins.str]] = None,
                 instance_terminate_policy: Optional[pulumi.Input[builtins.str]] = None,
                 instances_distribution: Optional[pulumi.Input[Union['ScalingGroupInstancesDistributionArgs', 'ScalingGroupInstancesDistributionArgsDict']]] = None,
                 is_enable_scaling_group: Optional[pulumi.Input[builtins.bool]] = None,
                 launch_template_id: Optional[pulumi.Input[builtins.str]] = None,
                 launch_template_overrides: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ScalingGroupLaunchTemplateOverrideArgs', 'ScalingGroupLaunchTemplateOverrideArgsDict']]]]] = None,
                 launch_template_version: Optional[pulumi.Input[builtins.str]] = None,
                 max_instance_number: Optional[pulumi.Input[builtins.int]] = None,
                 min_instance_number: Optional[pulumi.Input[builtins.int]] = None,
                 multi_az_policy: Optional[pulumi.Input[builtins.str]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 scaling_group_name: Optional[pulumi.Input[builtins.str]] = None,
                 scaling_mode: Optional[pulumi.Input[builtins.str]] = None,
                 server_group_attributes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ScalingGroupServerGroupAttributeArgs', 'ScalingGroupServerGroupAttributeArgsDict']]]]] = None,
                 subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 suspended_processes: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ScalingGroupTagArgs', 'ScalingGroupTagArgsDict']]]]] = None,
                 __props__=None):
        """
        伸缩组用于管理一组云资源实例。通过伸缩组可以定义云资源池中的实例数/容量、冷却时间、负载均衡等信息。

        ## Import

        ```sh
        $ pulumi import bytepluscc:autoscaling/scalingGroup:ScalingGroup example "scaling_group_id"
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[builtins.str] active_scaling_configuration_id: 伸缩组绑定的伸缩配置的ID。
        :param pulumi.Input[builtins.int] default_cooldown: 执行一次伸缩活动（添加或移出ECS实例）结束后的冷却时间。冷却时间内，该伸缩组不执行其它的伸缩活动，仅针对云监控报警任务触发的伸缩活动和伸缩规则有效。取值范围：5 ~ 86400，单位：秒。默认值：300。
        :param pulumi.Input[builtins.int] desire_instance_number: 伸缩组中期望运行的实例个数。1、不小于最小实例数MinInstanceNumber且不大于最大实例数MaxInstanceNumber。2、默认值：-1，表示不开启期望实例数能力。此时，伸缩组创建完成后会立即开始伸缩活动自动添加相应个数的实例。
        :param pulumi.Input[builtins.str] health_check_type: 伸缩组的健康检查方式。1、NONE：不做实例健康状态检查。2、ECS（默认）：对伸缩组内的ECS实例做健康检查。
        :param pulumi.Input[builtins.str] instance_terminate_policy: 实例移除策略，1、OldestInstance：移出最早加入 （包括自动创建和手动添加）伸缩组的实例。2、NewestInstance：移出最晚加入（包括自动创建和手动添加）伸缩组的实例。3、OldestScalingConfigurationWithOldestInstance（默认）：移出最早与伸缩组绑定的伸缩配置中，最早由伸缩组 自动创建 的实例。4、OldestScalingConfigurationWithNewestInstance：移出最早与伸缩组绑定的伸缩配置中，最晚由伸缩组 自动创建 的实例。
        :param pulumi.Input[Union['ScalingGroupInstancesDistributionArgs', 'ScalingGroupInstancesDistributionArgsDict']] instances_distribution: 实例分布策略。
        :param pulumi.Input[builtins.bool] is_enable_scaling_group: 是否启用伸缩组。true：启用。false：停止
        :param pulumi.Input[builtins.str] launch_template_id: 实例启动模板ID，配置后表示选择启动模版作为伸缩配置来源。
        :param pulumi.Input[builtins.str] launch_template_version: 实例启动模板的版本。1、模板的某个版本号。2、Default（默认）：始终使用模板默认版本。3、Latest：始终使用模板最新版本。
        :param pulumi.Input[builtins.int] max_instance_number: 伸缩组中实例个数的最大值，默认取值0 ～ 100。您可以通过配额中心调整。
        :param pulumi.Input[builtins.int] min_instance_number: 伸缩组中实例个数的最小值，默认取值0 ～ 100。您可以通过配额中心调整。
        :param pulumi.Input[builtins.str] multi_az_policy: 扩缩容策略，如果您选择了多个子网，需配置本参数。1、PRIORITY（默认）：优先级策略。2、BALANCE：均衡分布策略。
        :param pulumi.Input[builtins.str] project_name: 伸缩组所属项目，默认为default。一个资源只能归属于一个项目。只能包含字母、数字、下划线“_”、点“.”和中划线“-”。长度限制在64个字符以内。
        :param pulumi.Input[builtins.str] scaling_group_name: 伸缩组名称，同一地域下伸缩组名称唯一。只能以中文、字母开头，只能包含中文、字母、数字、下划线和中划线 。长度限制为1 ~ 128个字符。暂不支持特殊字符。
        :param pulumi.Input[builtins.str] scaling_mode: 伸缩组的实例回收模式。1、release（默认）：释放模式。2、recycle：停机回收模式。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] subnet_ids: 伸缩组中实例主网卡的子网ID列表。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] suspended_processes: 暂停中的流程，无暂停中流程则返回空值。ScaleIn：缩容流程。ScaleOut：扩容流程。HealthCheck：健康检查。AlarmNotification：报警任务。ScheduledAction：定时任务。
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: ScalingGroupArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        伸缩组用于管理一组云资源实例。通过伸缩组可以定义云资源池中的实例数/容量、冷却时间、负载均衡等信息。

        ## Import

        ```sh
        $ pulumi import bytepluscc:autoscaling/scalingGroup:ScalingGroup example "scaling_group_id"
        ```

        :param str resource_name: The name of the resource.
        :param ScalingGroupArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(ScalingGroupArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 active_scaling_configuration_id: Optional[pulumi.Input[builtins.str]] = None,
                 default_cooldown: Optional[pulumi.Input[builtins.int]] = None,
                 desire_instance_number: Optional[pulumi.Input[builtins.int]] = None,
                 health_check_type: Optional[pulumi.Input[builtins.str]] = None,
                 instance_terminate_policy: Optional[pulumi.Input[builtins.str]] = None,
                 instances_distribution: Optional[pulumi.Input[Union['ScalingGroupInstancesDistributionArgs', 'ScalingGroupInstancesDistributionArgsDict']]] = None,
                 is_enable_scaling_group: Optional[pulumi.Input[builtins.bool]] = None,
                 launch_template_id: Optional[pulumi.Input[builtins.str]] = None,
                 launch_template_overrides: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ScalingGroupLaunchTemplateOverrideArgs', 'ScalingGroupLaunchTemplateOverrideArgsDict']]]]] = None,
                 launch_template_version: Optional[pulumi.Input[builtins.str]] = None,
                 max_instance_number: Optional[pulumi.Input[builtins.int]] = None,
                 min_instance_number: Optional[pulumi.Input[builtins.int]] = None,
                 multi_az_policy: Optional[pulumi.Input[builtins.str]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 scaling_group_name: Optional[pulumi.Input[builtins.str]] = None,
                 scaling_mode: Optional[pulumi.Input[builtins.str]] = None,
                 server_group_attributes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ScalingGroupServerGroupAttributeArgs', 'ScalingGroupServerGroupAttributeArgsDict']]]]] = None,
                 subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 suspended_processes: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ScalingGroupTagArgs', 'ScalingGroupTagArgsDict']]]]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = ScalingGroupArgs.__new__(ScalingGroupArgs)

            __props__.__dict__["active_scaling_configuration_id"] = active_scaling_configuration_id
            __props__.__dict__["default_cooldown"] = default_cooldown
            __props__.__dict__["desire_instance_number"] = desire_instance_number
            __props__.__dict__["health_check_type"] = health_check_type
            __props__.__dict__["instance_terminate_policy"] = instance_terminate_policy
            __props__.__dict__["instances_distribution"] = instances_distribution
            __props__.__dict__["is_enable_scaling_group"] = is_enable_scaling_group
            __props__.__dict__["launch_template_id"] = launch_template_id
            __props__.__dict__["launch_template_overrides"] = launch_template_overrides
            __props__.__dict__["launch_template_version"] = launch_template_version
            if max_instance_number is None and not opts.urn:
                raise TypeError("Missing required property 'max_instance_number'")
            __props__.__dict__["max_instance_number"] = max_instance_number
            if min_instance_number is None and not opts.urn:
                raise TypeError("Missing required property 'min_instance_number'")
            __props__.__dict__["min_instance_number"] = min_instance_number
            __props__.__dict__["multi_az_policy"] = multi_az_policy
            __props__.__dict__["project_name"] = project_name
            if scaling_group_name is None and not opts.urn:
                raise TypeError("Missing required property 'scaling_group_name'")
            __props__.__dict__["scaling_group_name"] = scaling_group_name
            __props__.__dict__["scaling_mode"] = scaling_mode
            __props__.__dict__["server_group_attributes"] = server_group_attributes
            if subnet_ids is None and not opts.urn:
                raise TypeError("Missing required property 'subnet_ids'")
            __props__.__dict__["subnet_ids"] = subnet_ids
            __props__.__dict__["suspended_processes"] = suspended_processes
            __props__.__dict__["tags"] = tags
            __props__.__dict__["created_time"] = None
            __props__.__dict__["db_instance_ids"] = None
            __props__.__dict__["lifecycle_state"] = None
            __props__.__dict__["load_balancer_health_check_grace_period"] = None
            __props__.__dict__["scaling_group_id"] = None
            __props__.__dict__["stopped_instance_count"] = None
            __props__.__dict__["total_instance_count"] = None
            __props__.__dict__["updated_time"] = None
            __props__.__dict__["vpc_id"] = None
        super(ScalingGroup, __self__).__init__(
            'bytepluscc:autoscaling/scalingGroup:ScalingGroup',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            active_scaling_configuration_id: Optional[pulumi.Input[builtins.str]] = None,
            created_time: Optional[pulumi.Input[builtins.str]] = None,
            db_instance_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
            default_cooldown: Optional[pulumi.Input[builtins.int]] = None,
            desire_instance_number: Optional[pulumi.Input[builtins.int]] = None,
            health_check_type: Optional[pulumi.Input[builtins.str]] = None,
            instance_terminate_policy: Optional[pulumi.Input[builtins.str]] = None,
            instances_distribution: Optional[pulumi.Input[Union['ScalingGroupInstancesDistributionArgs', 'ScalingGroupInstancesDistributionArgsDict']]] = None,
            is_enable_scaling_group: Optional[pulumi.Input[builtins.bool]] = None,
            launch_template_id: Optional[pulumi.Input[builtins.str]] = None,
            launch_template_overrides: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ScalingGroupLaunchTemplateOverrideArgs', 'ScalingGroupLaunchTemplateOverrideArgsDict']]]]] = None,
            launch_template_version: Optional[pulumi.Input[builtins.str]] = None,
            lifecycle_state: Optional[pulumi.Input[builtins.str]] = None,
            load_balancer_health_check_grace_period: Optional[pulumi.Input[builtins.int]] = None,
            max_instance_number: Optional[pulumi.Input[builtins.int]] = None,
            min_instance_number: Optional[pulumi.Input[builtins.int]] = None,
            multi_az_policy: Optional[pulumi.Input[builtins.str]] = None,
            project_name: Optional[pulumi.Input[builtins.str]] = None,
            scaling_group_id: Optional[pulumi.Input[builtins.str]] = None,
            scaling_group_name: Optional[pulumi.Input[builtins.str]] = None,
            scaling_mode: Optional[pulumi.Input[builtins.str]] = None,
            server_group_attributes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ScalingGroupServerGroupAttributeArgs', 'ScalingGroupServerGroupAttributeArgsDict']]]]] = None,
            stopped_instance_count: Optional[pulumi.Input[builtins.int]] = None,
            subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
            suspended_processes: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
            tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ScalingGroupTagArgs', 'ScalingGroupTagArgsDict']]]]] = None,
            total_instance_count: Optional[pulumi.Input[builtins.int]] = None,
            updated_time: Optional[pulumi.Input[builtins.str]] = None,
            vpc_id: Optional[pulumi.Input[builtins.str]] = None) -> 'ScalingGroup':
        """
        Get an existing ScalingGroup resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[builtins.str] active_scaling_configuration_id: 伸缩组绑定的伸缩配置的ID。
        :param pulumi.Input[builtins.str] created_time: 伸缩组创建时间。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] db_instance_ids: RDS数据库实例的ID。
        :param pulumi.Input[builtins.int] default_cooldown: 执行一次伸缩活动（添加或移出ECS实例）结束后的冷却时间。冷却时间内，该伸缩组不执行其它的伸缩活动，仅针对云监控报警任务触发的伸缩活动和伸缩规则有效。取值范围：5 ~ 86400，单位：秒。默认值：300。
        :param pulumi.Input[builtins.int] desire_instance_number: 伸缩组中期望运行的实例个数。1、不小于最小实例数MinInstanceNumber且不大于最大实例数MaxInstanceNumber。2、默认值：-1，表示不开启期望实例数能力。此时，伸缩组创建完成后会立即开始伸缩活动自动添加相应个数的实例。
        :param pulumi.Input[builtins.str] health_check_type: 伸缩组的健康检查方式。1、NONE：不做实例健康状态检查。2、ECS（默认）：对伸缩组内的ECS实例做健康检查。
        :param pulumi.Input[builtins.str] instance_terminate_policy: 实例移除策略，1、OldestInstance：移出最早加入 （包括自动创建和手动添加）伸缩组的实例。2、NewestInstance：移出最晚加入（包括自动创建和手动添加）伸缩组的实例。3、OldestScalingConfigurationWithOldestInstance（默认）：移出最早与伸缩组绑定的伸缩配置中，最早由伸缩组 自动创建 的实例。4、OldestScalingConfigurationWithNewestInstance：移出最早与伸缩组绑定的伸缩配置中，最晚由伸缩组 自动创建 的实例。
        :param pulumi.Input[Union['ScalingGroupInstancesDistributionArgs', 'ScalingGroupInstancesDistributionArgsDict']] instances_distribution: 实例分布策略。
        :param pulumi.Input[builtins.bool] is_enable_scaling_group: 是否启用伸缩组。true：启用。false：停止
        :param pulumi.Input[builtins.str] launch_template_id: 实例启动模板ID，配置后表示选择启动模版作为伸缩配置来源。
        :param pulumi.Input[builtins.str] launch_template_version: 实例启动模板的版本。1、模板的某个版本号。2、Default（默认）：始终使用模板默认版本。3、Latest：始终使用模板最新版本。
        :param pulumi.Input[builtins.str] lifecycle_state: 伸缩组的状态。Active：已启用。InActive：未激活。Deleting：删除中。Locked: 已锁定。CoolingDown: 冷却中。Unknown: 未知状态。
        :param pulumi.Input[builtins.int] load_balancer_health_check_grace_period: 伸缩组实例CLB健康状况检查宽限期。
        :param pulumi.Input[builtins.int] max_instance_number: 伸缩组中实例个数的最大值，默认取值0 ～ 100。您可以通过配额中心调整。
        :param pulumi.Input[builtins.int] min_instance_number: 伸缩组中实例个数的最小值，默认取值0 ～ 100。您可以通过配额中心调整。
        :param pulumi.Input[builtins.str] multi_az_policy: 扩缩容策略，如果您选择了多个子网，需配置本参数。1、PRIORITY（默认）：优先级策略。2、BALANCE：均衡分布策略。
        :param pulumi.Input[builtins.str] project_name: 伸缩组所属项目，默认为default。一个资源只能归属于一个项目。只能包含字母、数字、下划线“_”、点“.”和中划线“-”。长度限制在64个字符以内。
        :param pulumi.Input[builtins.str] scaling_group_id: 伸缩组ID。
        :param pulumi.Input[builtins.str] scaling_group_name: 伸缩组名称，同一地域下伸缩组名称唯一。只能以中文、字母开头，只能包含中文、字母、数字、下划线和中划线 。长度限制为1 ~ 128个字符。暂不支持特殊字符。
        :param pulumi.Input[builtins.str] scaling_mode: 伸缩组的实例回收模式。1、release（默认）：释放模式。2、recycle：停机回收模式。
        :param pulumi.Input[builtins.int] stopped_instance_count: 伸缩组内处于停用中状态的实例数量。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] subnet_ids: 伸缩组中实例主网卡的子网ID列表。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] suspended_processes: 暂停中的流程，无暂停中流程则返回空值。ScaleIn：缩容流程。ScaleOut：扩容流程。HealthCheck：健康检查。AlarmNotification：报警任务。ScheduledAction：定时任务。
        :param pulumi.Input[builtins.int] total_instance_count: 当前伸缩组内实例的个数。
        :param pulumi.Input[builtins.str] updated_time: 伸缩组更新时间。
        :param pulumi.Input[builtins.str] vpc_id: 伸缩组所属私有网络ID。
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _ScalingGroupState.__new__(_ScalingGroupState)

        __props__.__dict__["active_scaling_configuration_id"] = active_scaling_configuration_id
        __props__.__dict__["created_time"] = created_time
        __props__.__dict__["db_instance_ids"] = db_instance_ids
        __props__.__dict__["default_cooldown"] = default_cooldown
        __props__.__dict__["desire_instance_number"] = desire_instance_number
        __props__.__dict__["health_check_type"] = health_check_type
        __props__.__dict__["instance_terminate_policy"] = instance_terminate_policy
        __props__.__dict__["instances_distribution"] = instances_distribution
        __props__.__dict__["is_enable_scaling_group"] = is_enable_scaling_group
        __props__.__dict__["launch_template_id"] = launch_template_id
        __props__.__dict__["launch_template_overrides"] = launch_template_overrides
        __props__.__dict__["launch_template_version"] = launch_template_version
        __props__.__dict__["lifecycle_state"] = lifecycle_state
        __props__.__dict__["load_balancer_health_check_grace_period"] = load_balancer_health_check_grace_period
        __props__.__dict__["max_instance_number"] = max_instance_number
        __props__.__dict__["min_instance_number"] = min_instance_number
        __props__.__dict__["multi_az_policy"] = multi_az_policy
        __props__.__dict__["project_name"] = project_name
        __props__.__dict__["scaling_group_id"] = scaling_group_id
        __props__.__dict__["scaling_group_name"] = scaling_group_name
        __props__.__dict__["scaling_mode"] = scaling_mode
        __props__.__dict__["server_group_attributes"] = server_group_attributes
        __props__.__dict__["stopped_instance_count"] = stopped_instance_count
        __props__.__dict__["subnet_ids"] = subnet_ids
        __props__.__dict__["suspended_processes"] = suspended_processes
        __props__.__dict__["tags"] = tags
        __props__.__dict__["total_instance_count"] = total_instance_count
        __props__.__dict__["updated_time"] = updated_time
        __props__.__dict__["vpc_id"] = vpc_id
        return ScalingGroup(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="activeScalingConfigurationId")
    def active_scaling_configuration_id(self) -> pulumi.Output[builtins.str]:
        """
        伸缩组绑定的伸缩配置的ID。
        """
        return pulumi.get(self, "active_scaling_configuration_id")

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> pulumi.Output[builtins.str]:
        """
        伸缩组创建时间。
        """
        return pulumi.get(self, "created_time")

    @property
    @pulumi.getter(name="dbInstanceIds")
    def db_instance_ids(self) -> pulumi.Output[Sequence[builtins.str]]:
        """
        RDS数据库实例的ID。
        """
        return pulumi.get(self, "db_instance_ids")

    @property
    @pulumi.getter(name="defaultCooldown")
    def default_cooldown(self) -> pulumi.Output[builtins.int]:
        """
        执行一次伸缩活动（添加或移出ECS实例）结束后的冷却时间。冷却时间内，该伸缩组不执行其它的伸缩活动，仅针对云监控报警任务触发的伸缩活动和伸缩规则有效。取值范围：5 ~ 86400，单位：秒。默认值：300。
        """
        return pulumi.get(self, "default_cooldown")

    @property
    @pulumi.getter(name="desireInstanceNumber")
    def desire_instance_number(self) -> pulumi.Output[builtins.int]:
        """
        伸缩组中期望运行的实例个数。1、不小于最小实例数MinInstanceNumber且不大于最大实例数MaxInstanceNumber。2、默认值：-1，表示不开启期望实例数能力。此时，伸缩组创建完成后会立即开始伸缩活动自动添加相应个数的实例。
        """
        return pulumi.get(self, "desire_instance_number")

    @property
    @pulumi.getter(name="healthCheckType")
    def health_check_type(self) -> pulumi.Output[builtins.str]:
        """
        伸缩组的健康检查方式。1、NONE：不做实例健康状态检查。2、ECS（默认）：对伸缩组内的ECS实例做健康检查。
        """
        return pulumi.get(self, "health_check_type")

    @property
    @pulumi.getter(name="instanceTerminatePolicy")
    def instance_terminate_policy(self) -> pulumi.Output[builtins.str]:
        """
        实例移除策略，1、OldestInstance：移出最早加入 （包括自动创建和手动添加）伸缩组的实例。2、NewestInstance：移出最晚加入（包括自动创建和手动添加）伸缩组的实例。3、OldestScalingConfigurationWithOldestInstance（默认）：移出最早与伸缩组绑定的伸缩配置中，最早由伸缩组 自动创建 的实例。4、OldestScalingConfigurationWithNewestInstance：移出最早与伸缩组绑定的伸缩配置中，最晚由伸缩组 自动创建 的实例。
        """
        return pulumi.get(self, "instance_terminate_policy")

    @property
    @pulumi.getter(name="instancesDistribution")
    def instances_distribution(self) -> pulumi.Output['outputs.ScalingGroupInstancesDistribution']:
        """
        实例分布策略。
        """
        return pulumi.get(self, "instances_distribution")

    @property
    @pulumi.getter(name="isEnableScalingGroup")
    def is_enable_scaling_group(self) -> pulumi.Output[builtins.bool]:
        """
        是否启用伸缩组。true：启用。false：停止
        """
        return pulumi.get(self, "is_enable_scaling_group")

    @property
    @pulumi.getter(name="launchTemplateId")
    def launch_template_id(self) -> pulumi.Output[builtins.str]:
        """
        实例启动模板ID，配置后表示选择启动模版作为伸缩配置来源。
        """
        return pulumi.get(self, "launch_template_id")

    @property
    @pulumi.getter(name="launchTemplateOverrides")
    def launch_template_overrides(self) -> pulumi.Output[Sequence['outputs.ScalingGroupLaunchTemplateOverride']]:
        return pulumi.get(self, "launch_template_overrides")

    @property
    @pulumi.getter(name="launchTemplateVersion")
    def launch_template_version(self) -> pulumi.Output[builtins.str]:
        """
        实例启动模板的版本。1、模板的某个版本号。2、Default（默认）：始终使用模板默认版本。3、Latest：始终使用模板最新版本。
        """
        return pulumi.get(self, "launch_template_version")

    @property
    @pulumi.getter(name="lifecycleState")
    def lifecycle_state(self) -> pulumi.Output[builtins.str]:
        """
        伸缩组的状态。Active：已启用。InActive：未激活。Deleting：删除中。Locked: 已锁定。CoolingDown: 冷却中。Unknown: 未知状态。
        """
        return pulumi.get(self, "lifecycle_state")

    @property
    @pulumi.getter(name="loadBalancerHealthCheckGracePeriod")
    def load_balancer_health_check_grace_period(self) -> pulumi.Output[builtins.int]:
        """
        伸缩组实例CLB健康状况检查宽限期。
        """
        return pulumi.get(self, "load_balancer_health_check_grace_period")

    @property
    @pulumi.getter(name="maxInstanceNumber")
    def max_instance_number(self) -> pulumi.Output[builtins.int]:
        """
        伸缩组中实例个数的最大值，默认取值0 ～ 100。您可以通过配额中心调整。
        """
        return pulumi.get(self, "max_instance_number")

    @property
    @pulumi.getter(name="minInstanceNumber")
    def min_instance_number(self) -> pulumi.Output[builtins.int]:
        """
        伸缩组中实例个数的最小值，默认取值0 ～ 100。您可以通过配额中心调整。
        """
        return pulumi.get(self, "min_instance_number")

    @property
    @pulumi.getter(name="multiAzPolicy")
    def multi_az_policy(self) -> pulumi.Output[builtins.str]:
        """
        扩缩容策略，如果您选择了多个子网，需配置本参数。1、PRIORITY（默认）：优先级策略。2、BALANCE：均衡分布策略。
        """
        return pulumi.get(self, "multi_az_policy")

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> pulumi.Output[builtins.str]:
        """
        伸缩组所属项目，默认为default。一个资源只能归属于一个项目。只能包含字母、数字、下划线“_”、点“.”和中划线“-”。长度限制在64个字符以内。
        """
        return pulumi.get(self, "project_name")

    @property
    @pulumi.getter(name="scalingGroupId")
    def scaling_group_id(self) -> pulumi.Output[builtins.str]:
        """
        伸缩组ID。
        """
        return pulumi.get(self, "scaling_group_id")

    @property
    @pulumi.getter(name="scalingGroupName")
    def scaling_group_name(self) -> pulumi.Output[builtins.str]:
        """
        伸缩组名称，同一地域下伸缩组名称唯一。只能以中文、字母开头，只能包含中文、字母、数字、下划线和中划线 。长度限制为1 ~ 128个字符。暂不支持特殊字符。
        """
        return pulumi.get(self, "scaling_group_name")

    @property
    @pulumi.getter(name="scalingMode")
    def scaling_mode(self) -> pulumi.Output[builtins.str]:
        """
        伸缩组的实例回收模式。1、release（默认）：释放模式。2、recycle：停机回收模式。
        """
        return pulumi.get(self, "scaling_mode")

    @property
    @pulumi.getter(name="serverGroupAttributes")
    def server_group_attributes(self) -> pulumi.Output[Sequence['outputs.ScalingGroupServerGroupAttribute']]:
        return pulumi.get(self, "server_group_attributes")

    @property
    @pulumi.getter(name="stoppedInstanceCount")
    def stopped_instance_count(self) -> pulumi.Output[builtins.int]:
        """
        伸缩组内处于停用中状态的实例数量。
        """
        return pulumi.get(self, "stopped_instance_count")

    @property
    @pulumi.getter(name="subnetIds")
    def subnet_ids(self) -> pulumi.Output[Sequence[builtins.str]]:
        """
        伸缩组中实例主网卡的子网ID列表。
        """
        return pulumi.get(self, "subnet_ids")

    @property
    @pulumi.getter(name="suspendedProcesses")
    def suspended_processes(self) -> pulumi.Output[Sequence[builtins.str]]:
        """
        暂停中的流程，无暂停中流程则返回空值。ScaleIn：缩容流程。ScaleOut：扩容流程。HealthCheck：健康检查。AlarmNotification：报警任务。ScheduledAction：定时任务。
        """
        return pulumi.get(self, "suspended_processes")

    @property
    @pulumi.getter
    def tags(self) -> pulumi.Output[Sequence['outputs.ScalingGroupTag']]:
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="totalInstanceCount")
    def total_instance_count(self) -> pulumi.Output[builtins.int]:
        """
        当前伸缩组内实例的个数。
        """
        return pulumi.get(self, "total_instance_count")

    @property
    @pulumi.getter(name="updatedTime")
    def updated_time(self) -> pulumi.Output[builtins.str]:
        """
        伸缩组更新时间。
        """
        return pulumi.get(self, "updated_time")

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> pulumi.Output[builtins.str]:
        """
        伸缩组所属私有网络ID。
        """
        return pulumi.get(self, "vpc_id")

