Skip to content

modify_capacity_reservation async

modify_capacity_reservation(
    *,
    config_overrides: Optional[AsyncEC2ClientConfig] = None,
    capacity_reservation_id: Optional[CapacityReservationId] = None,
    instance_count: Optional[Integer] = None,
    end_date: Optional[DateTime] = None,
    end_date_type: Optional[EndDateType] = None,
    accept: Optional[Boolean] = None,
    dry_run: Optional[Boolean] = None,
    additional_info: Optional[String] = None,
    instance_match_criteria: Optional[InstanceMatchCriteria] = None,
    accept_modification_terms: Optional[Boolean] = None,
    start_date: Optional[MillisecondDateTime] = None,
    quote_id: Optional[CapacityReservationModificationQuoteId] = None,
) -> ModifyCapacityReservationResult

Modifies a Capacity Reservation's capacity, instance eligibility, and the conditions under which it is to be released. You can't modify a Capacity Reservation's instance type, EBS optimization, platform, instance store settings, Availability Zone, or tenancy. If you need to modify any of these attributes, we recommend that you cancel the Capacity Reservation, and then create a new one with the required attributes. For more information, see Modify an active Capacity Reservation.

The allowed modifications depend on the state of the Capacity Reservation:

  • assessing or scheduled state - You can modify the tags only.

  • pending state - You can't modify the Capacity Reservation in any way.

  • active state but still within the commitment duration - You can't decrease the instance count or set an end date that is within the commitment duration. All other modifications are allowed.

  • active state with no commitment duration or elapsed commitment duration - All modifications are allowed.

  • expired, cancelled, unsupported, or failed state - You can't modify the Capacity Reservation in any way.

For a future-dated Capacity Reservation that has not yet been delivered, pushing out the start date requires a quote generated by CreateCapacityReservationDateChangeQuote. For more information, see Modify an active Capacity Reservation in the Amazon EC2 User Guide.

Parameters:

  • capacity_reservation_id (Optional[CapacityReservationId], default: None ) –

    The ID of the Capacity Reservation.

  • instance_count (Optional[Integer], default: None ) –

    The number of instances for which to reserve capacity. The number of instances can't be increased or decreased by more than 1000 in a single request.

  • end_date (Optional[DateTime], default: None ) –

    The date and time at which the Capacity Reservation expires. When a Capacity Reservation expires, the reserved capacity is released and you can no longer launch instances into it. The Capacity Reservation's state changes to expired when it reaches its end date and time.

    The Capacity Reservation is cancelled within an hour from the specified time. For example, if you specify 5/31/2019, 13:30:55, the Capacity Reservation is guaranteed to end between 13:30:55 and 14:30:55 on 5/31/2019.

    You must provide an EndDate value if EndDateType is limited. Omit EndDate if EndDateType is unlimited.

  • end_date_type (Optional[EndDateType], default: None ) –

    Indicates the way in which the Capacity Reservation ends. A Capacity Reservation can have one of the following end types:

    • unlimited - The Capacity Reservation remains active until you explicitly cancel it. Do not provide an EndDate value if EndDateType is unlimited.

    • limited - The Capacity Reservation expires automatically at a specified date and time. You must provide an EndDate value if EndDateType is limited.

  • accept (Optional[Boolean], default: None ) –

    Reserved. Capacity Reservations you have created are accepted by default.

  • dry_run (Optional[Boolean], default: None ) –

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

  • additional_info (Optional[String], default: None ) –

    Reserved for future use.

  • instance_match_criteria (Optional[InstanceMatchCriteria], default: None ) –

    The matching criteria (instance eligibility) that you want to use in the modified Capacity Reservation. If you change the instance eligibility of an existing Capacity Reservation from targeted to open, any running instances that match the attributes of the Capacity Reservation, have the CapacityReservationPreference set to open, and are not yet running in the Capacity Reservation, will automatically use the modified Capacity Reservation.

    To modify the instance eligibility, the Capacity Reservation must be completely idle (zero usage).

  • accept_modification_terms (Optional[Boolean], default: None ) –

    Indicates that you accept the modification terms of the quote identified by QuoteId. To apply a quoted modification, set this parameter to true.

  • start_date (Optional[MillisecondDateTime], default: None ) –

    The new start date for the Capacity Reservation, in the ISO8601 format in the UTC time zone (YYYY-MM-DDThh:mm:ss.sssZ). Applies to future-dated Capacity Reservations only. Requires a quote from CreateCapacityReservationDateChangeQuote; pass the quote ID in QuoteId with AcceptModificationTerms set to true.

  • quote_id (Optional[CapacityReservationModificationQuoteId], default: None ) –

    The ID of the quote that describes the modification you want to apply. Generate a quote by using CreateCapacityReservationDateChangeQuote. The quote must be in the active state, and each quote can be used only once.

Raises:

Source code in docs_src/capo_ec2/_services/async_ec2.py
async def modify_capacity_reservation(
    self,
    *,
    config_overrides: Optional[AsyncEC2ClientConfig] = None,
    capacity_reservation_id: Optional[
        "capo_ec2.types.capacity_reservation_id.CapacityReservationId"
    ] = None,
    instance_count: Optional["capo_ec2.types.integer.Integer"] = None,
    end_date: Optional["capo_ec2.types.date_time.DateTime"] = None,
    end_date_type: Optional["capo_ec2.types.end_date_type.EndDateType"] = None,
    accept: Optional["capo_ec2.types.boolean.Boolean"] = None,
    dry_run: Optional["capo_ec2.types.boolean.Boolean"] = None,
    additional_info: Optional["capo_ec2.types.string.String"] = None,
    instance_match_criteria: Optional[
        "capo_ec2.types.instance_match_criteria.InstanceMatchCriteria"
    ] = None,
    accept_modification_terms: Optional["capo_ec2.types.boolean.Boolean"] = None,
    start_date: Optional[
        "capo_ec2.types.millisecond_date_time.MillisecondDateTime"
    ] = None,
    quote_id: Optional[
        "capo_ec2.types.capacity_reservation_modification_quote_id.CapacityReservationModificationQuoteId"
    ] = None,
) -> "capo_ec2.types.modify_capacity_reservation_result.ModifyCapacityReservationResult":
    """<p>Modifies a Capacity Reservation's capacity, instance eligibility, and the conditions under which it is to be released. You can't modify a Capacity Reservation's instance type, EBS optimization, platform, instance store settings, Availability Zone, or tenancy. If you need to modify any of these attributes, we recommend that you cancel the Capacity Reservation, and then create a new one with the required attributes. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/capacity-reservations-modify.html"> Modify an active Capacity Reservation</a>.</p> <p>The allowed modifications depend on the state of the Capacity Reservation:</p> <ul> <li> <p> <code>assessing</code> or <code>scheduled</code> state - You can modify the tags only.</p> </li> <li> <p> <code>pending</code> state - You can't modify the Capacity Reservation in any way.</p> </li> <li> <p> <code>active</code> state but still within the commitment duration - You can't decrease the instance count or set an end date that is within the commitment duration. All other modifications are allowed.</p> </li> <li> <p> <code>active</code> state with no commitment duration or elapsed commitment duration - All modifications are allowed.</p> </li> <li> <p> <code>expired</code>, <code>cancelled</code>, <code>unsupported</code>, or <code>failed</code> state - You can't modify the Capacity Reservation in any way.</p> </li> </ul> <p>For a future-dated Capacity Reservation that has not yet been delivered, pushing out the start date requires a quote generated by <code>CreateCapacityReservationDateChangeQuote</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/capacity-reservations-modify.html">Modify an active Capacity Reservation</a> in the <i>Amazon EC2 User Guide</i>.</p>

    Args:
        capacity_reservation_id: <p>The ID of the Capacity Reservation.</p>
        instance_count: <p>The number of instances for which to reserve capacity. The number of instances can't be increased or decreased by more than <code>1000</code> in a single request.</p>
        end_date: <p>The date and time at which the Capacity Reservation expires. When a Capacity Reservation expires, the reserved capacity is released and you can no longer launch instances into it. The Capacity Reservation's state changes to <code>expired</code> when it reaches its end date and time.</p> <p>The Capacity Reservation is cancelled within an hour from the specified time. For example, if you specify 5/31/2019, 13:30:55, the Capacity Reservation is guaranteed to end between 13:30:55 and 14:30:55 on 5/31/2019.</p> <p>You must provide an <code>EndDate</code> value if <code>EndDateType</code> is <code>limited</code>. Omit <code>EndDate</code> if <code>EndDateType</code> is <code>unlimited</code>.</p>
        end_date_type: <p>Indicates the way in which the Capacity Reservation ends. A Capacity Reservation can have one of the following end types:</p> <ul> <li> <p> <code>unlimited</code> - The Capacity Reservation remains active until you explicitly cancel it. Do not provide an <code>EndDate</code> value if <code>EndDateType</code> is <code>unlimited</code>.</p> </li> <li> <p> <code>limited</code> - The Capacity Reservation expires automatically at a specified date and time. You must provide an <code>EndDate</code> value if <code>EndDateType</code> is <code>limited</code>.</p> </li> </ul>
        accept: <p>Reserved. Capacity Reservations you have created are accepted by default.</p>
        dry_run: <p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>
        additional_info: <p>Reserved for future use.</p>
        instance_match_criteria: <p> The matching criteria (instance eligibility) that you want to use in the modified Capacity Reservation. If you change the instance eligibility of an existing Capacity Reservation from <code>targeted</code> to <code>open</code>, any running instances that match the attributes of the Capacity Reservation, have the <code>CapacityReservationPreference</code> set to <code>open</code>, and are not yet running in the Capacity Reservation, will automatically use the modified Capacity Reservation. </p> <p>To modify the instance eligibility, the Capacity Reservation must be completely idle (zero usage).</p>
        accept_modification_terms: <p>Indicates that you accept the modification terms of the quote identified by <code>QuoteId</code>. To apply a quoted modification, set this parameter to <code>true</code>.</p>
        start_date: <p>The new start date for the Capacity Reservation, in the ISO8601 format in the UTC time zone (<code>YYYY-MM-DDThh:mm:ss.sssZ</code>). Applies to future-dated Capacity Reservations only. Requires a quote from <code>CreateCapacityReservationDateChangeQuote</code>; pass the quote ID in <code>QuoteId</code> with <code>AcceptModificationTerms</code> set to <code>true</code>.</p>
        quote_id: <p>The ID of the quote that describes the modification you want to apply. Generate a quote by using <code>CreateCapacityReservationDateChangeQuote</code>. The quote must be in the <code>active</code> state, and each quote can be used only once.</p>

    Raises:
        capo_ec2.errors.UnknownServiceError: The service returned an error code this client does not model.
    """

    async def _handler(
        req: "AsyncOperationRequest[capo_ec2.types.modify_capacity_reservation_request.ModifyCapacityReservationRequest]",
    ) -> AsyncOperationResponse[
        "capo_ec2.types.modify_capacity_reservation_result.ModifyCapacityReservationResult"
    ]:
        import capo_ec2._operations.amazon_ec2.modify_capacity_reservation

        (
            output,
            http_response,
        ) = await capo_ec2._operations.amazon_ec2.modify_capacity_reservation.async_modify_capacity_reservation(
            req.options, req.input
        )
        return AsyncOperationResponse(output=output, response=http_response)

    interceptors_, options_ = self.operation_options(
        config_overrides, OperationLogging("ModifyCapacityReservation")
    )
    input_: capo_ec2.types.modify_capacity_reservation_request.ModifyCapacityReservationRequest = {}
    if capacity_reservation_id is not None:
        input_["capacity_reservation_id"] = capacity_reservation_id
    if instance_count is not None:
        input_["instance_count"] = instance_count
    if end_date is not None:
        input_["end_date"] = end_date
    if end_date_type is not None:
        input_["end_date_type"] = end_date_type
    if accept is not None:
        input_["accept"] = accept
    if dry_run is not None:
        input_["dry_run"] = dry_run
    if additional_info is not None:
        input_["additional_info"] = additional_info
    if instance_match_criteria is not None:
        input_["instance_match_criteria"] = instance_match_criteria
    if accept_modification_terms is not None:
        input_["accept_modification_terms"] = accept_modification_terms
    if start_date is not None:
        input_["start_date"] = start_date
    if quote_id is not None:
        input_["quote_id"] = quote_id

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