Skip to content

detach_instances async

detach_instances(
    *,
    config_overrides: Optional[AsyncAutoScalingClientConfig] = None,
    instance_ids: Optional[InstanceIds] = None,
    auto_scaling_group_name: Optional[XmlStringMaxLen255] = None,
    should_decrement_desired_capacity: Optional[ShouldDecrementDesiredCapacity] = None,
) -> DetachInstancesAnswer

Removes one or more instances from the specified Auto Scaling group.

After the instances are detached, you can manage them independent of the Auto Scaling group.

If you do not specify the option to decrement the desired capacity, Amazon EC2 Auto Scaling launches instances to replace the ones that are detached.

If there is a Classic Load Balancer attached to the Auto Scaling group, the instances are deregistered from the load balancer. If there are target groups attached to the Auto Scaling group, the instances are deregistered from the target groups.

For more information, see Detach or attach instances in the Amazon EC2 Auto Scaling User Guide.

Parameters:

  • instance_ids (Optional[InstanceIds], default: None ) –

    The IDs of the instances. You can specify up to 20 instances.

  • auto_scaling_group_name (Optional[XmlStringMaxLen255], default: None ) –

    The name of the Auto Scaling group.

  • should_decrement_desired_capacity (Optional[ShouldDecrementDesiredCapacity], default: None ) –

    Indicates whether the Auto Scaling group decrements the desired capacity value by the number of instances detached.

Raises:

  • ResourceContentionFault –

    You already have a pending update to an Amazon EC2 Auto Scaling resource (for example, an Auto Scaling group, instance, or load balancer).

  • UnknownServiceError –

    The service returned an error code this client does not model.

Examples:

To detach an instance from an Auto Scaling group This example detaches the specified instance from the specified Auto Scaling group.

>>> await client.detach_instances(instance_ids=['i-93633f9b'], auto_scaling_group_name='my-auto-scaling-group', should_decrement_desired_capacity=True)
Source code in docs_src/capo_auto_scaling/_services/async_auto_scaling.py
async def detach_instances(
    self,
    *,
    config_overrides: Optional[AsyncAutoScalingClientConfig] = None,
    instance_ids: Optional[
        "capo_auto_scaling.types.instance_ids.InstanceIds"
    ] = None,
    auto_scaling_group_name: Optional[
        "capo_auto_scaling.types.xml_string_max_len255.XmlStringMaxLen255"
    ] = None,
    should_decrement_desired_capacity: Optional[
        "capo_auto_scaling.types.should_decrement_desired_capacity.ShouldDecrementDesiredCapacity"
    ] = None,
) -> "capo_auto_scaling.types.detach_instances_answer.DetachInstancesAnswer":
    """<p>Removes one or more instances from the specified Auto Scaling group.</p> <p>After the instances are detached, you can manage them independent of the Auto Scaling group.</p> <p>If you do not specify the option to decrement the desired capacity, Amazon EC2 Auto Scaling launches instances to replace the ones that are detached.</p> <p>If there is a Classic Load Balancer attached to the Auto Scaling group, the instances are deregistered from the load balancer. If there are target groups attached to the Auto Scaling group, the instances are deregistered from the target groups.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-detach-attach-instances.html">Detach or attach instances</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>

    Args:
        instance_ids: <p>The IDs of the instances. You can specify up to 20 instances.</p>
        auto_scaling_group_name: <p>The name of the Auto Scaling group.</p>
        should_decrement_desired_capacity: <p>Indicates whether the Auto Scaling group decrements the desired capacity value by the number of instances detached.</p>

    Raises:
        capo_auto_scaling.errors.resource_contention_fault.ResourceContentionFault: <p>You already have a pending update to an Amazon EC2 Auto Scaling resource (for example, an Auto Scaling group, instance, or load balancer).</p>
        capo_auto_scaling.errors.UnknownServiceError: The service returned an error code this client does not model.

    Examples:
        To detach an instance from an Auto Scaling group
        This example detaches the specified instance from the specified Auto Scaling group.

        >>> await client.detach_instances(instance_ids=['i-93633f9b'], auto_scaling_group_name='my-auto-scaling-group', should_decrement_desired_capacity=True)
    """

    async def _handler(
        req: "AsyncOperationRequest[capo_auto_scaling.types.detach_instances_query.DetachInstancesQuery]",
    ) -> AsyncOperationResponse[
        "capo_auto_scaling.types.detach_instances_answer.DetachInstancesAnswer"
    ]:
        import capo_auto_scaling._operations.auto_scaling_2011_01_01.detach_instances

        (
            output,
            http_response,
        ) = await capo_auto_scaling._operations.auto_scaling_2011_01_01.detach_instances.async_detach_instances(
            req.options, req.input
        )
        return AsyncOperationResponse(output=output, response=http_response)

    interceptors_, options_ = self.operation_options(
        config_overrides, OperationLogging("DetachInstances")
    )
    input_: capo_auto_scaling.types.detach_instances_query.DetachInstancesQuery = {}
    if instance_ids is not None:
        input_["instance_ids"] = instance_ids
    if auto_scaling_group_name is not None:
        input_["auto_scaling_group_name"] = auto_scaling_group_name
    if should_decrement_desired_capacity is not None:
        input_["should_decrement_desired_capacity"] = (
            should_decrement_desired_capacity
        )

    response = await aexecute_pipeline(
        AsyncOperationRequest(input=input_, options=options_),
        handler=_handler,
        interceptors=list(interceptors_),
    )
    await response.response.aclose()
    return response.output