Amazon EC2 Container Service

2022/11/10 - Amazon EC2 Container Service - 2 new api methods

Changes  This release adds support for task scale-in protection with updateTaskProtection and getTaskProtection APIs. UpdateTaskProtection API can be used to protect a service managed task from being terminated by scale-in events and getTaskProtection API to get the scale-in protection status of a task.

UpdateTaskProtection (new) Link ¶

Updates the protection status of a task. You can set protectionEnabled to true to protect your task from termination during scale-in events from Service Autoscaling or deployments .

Task-protection, by default, expires after 2 hours at which point Amazon ECS unsets the protectionEnabled property making the task eligible for termination by a subsequent scale-in event.

You can specify a custom expiration period for task protection from 1 minute to up to 2,880 minutes (48 hours). To specify the custom expiration period, set the expiresInMinutes property. The expiresInMinutes property is always reset when you invoke this operation for a task that already has protectionEnabled set to true . You can keep extending the protection expiration period of a task by invoking this operation repeatedly.

To learn more about Amazon ECS task protection, see Task scale-in protection in the Amazon Elastic Container Service Developer Guide .

Note

This operation is only supported for tasks belonging to an Amazon ECS service. Invoking this operation for a standalone task will result in an TASK_NOT_VALID failure. For more information, see API failure reasons .

Warning

If you prefer to set task protection from within the container, we recommend using the Amazon ECS container agent endpoint .

See also: AWS API Documentation

Request Syntax

client.update_task_protection(
    cluster='string',
    tasks=[
        'string',
    ],
    protectionEnabled=True|False,
    expiresInMinutes=123
)
type cluster

string

param cluster

[REQUIRED]

The short name or full Amazon Resource Name (ARN) of the cluster that hosts the service that the task sets exist in.

type tasks

list

param tasks

[REQUIRED]

A list of up to 10 task IDs or full ARN entries.

  • (string) --

type protectionEnabled

boolean

param protectionEnabled

[REQUIRED]

Specify true to mark a task for protection and false to unset protection, making it eligible for termination.

type expiresInMinutes

integer

param expiresInMinutes

If you set protectionEnabled to true , you can specify the duration for task protection in minutes. You can specify a value from 1 minute to up to 2,880 minutes (48 hours). During this time, your task will not be terminated by scale-in events from Service Auto Scaling or deployments. After this time period lapses, protectionEnabled will be reset to false .

If you don’t specify the time, then the task is automatically protected for 120 minutes (2 hours).

rtype

dict

returns

Response Syntax

{
    'protectedTasks': [
        {
            'taskArn': 'string',
            'protectionEnabled': True|False,
            'expirationDate': datetime(2015, 1, 1)
        },
    ],
    'failures': [
        {
            'arn': 'string',
            'reason': 'string',
            'detail': 'string'
        },
    ]
}

Response Structure

  • (dict) --

    • protectedTasks (list) --

      A list of tasks with the following information.

      • taskArn : The task ARN.

      • protectionEnabled : The protection status of the task. If scale-in protection is enabled for a task, the value is true . Otherwise, it is false .

      • expirationDate : The epoch time when protection for the task will expire.

      • (dict) --

        An object representing the protection status details for a task. You can set the protection status with the UpdateTaskProtection API and get the status of tasks with the GetTaskProtection API.

        • taskArn (string) --

          The task ARN.

        • protectionEnabled (boolean) --

          The protection status of the task. If scale-in protection is enabled for a task, the value is true . Otherwise, it is false .

        • expirationDate (datetime) --

          The epoch time when protection for the task will expire.

    • failures (list) --

      Any failures associated with the call.

      • (dict) --

        A failed resource. For a list of common causes, see API failure reasons in the Amazon Elastic Container Service Developer Guide .

        • arn (string) --

          The Amazon Resource Name (ARN) of the failed resource.

        • reason (string) --

          The reason for the failure.

        • detail (string) --

          The details of the failure.

GetTaskProtection (new) Link ¶

Retrieves the protection status of tasks in an Amazon ECS service.

See also: AWS API Documentation

Request Syntax

client.get_task_protection(
    cluster='string',
    tasks=[
        'string',
    ]
)
type cluster

string

param cluster

[REQUIRED]

The short name or full Amazon Resource Name (ARN) of the cluster that hosts the service that the task sets exist in.

type tasks

list

param tasks

A list of up to 100 task IDs or full ARN entries.

  • (string) --

rtype

dict

returns

Response Syntax

{
    'protectedTasks': [
        {
            'taskArn': 'string',
            'protectionEnabled': True|False,
            'expirationDate': datetime(2015, 1, 1)
        },
    ],
    'failures': [
        {
            'arn': 'string',
            'reason': 'string',
            'detail': 'string'
        },
    ]
}

Response Structure

  • (dict) --

    • protectedTasks (list) --

      A list of tasks with the following information.

      • taskArn : The task ARN.

      • protectionEnabled : The protection status of the task. If scale-in protection is enabled for a task, the value is true . Otherwise, it is false .

      • expirationDate : The epoch time when protection for the task will expire.

      • (dict) --

        An object representing the protection status details for a task. You can set the protection status with the UpdateTaskProtection API and get the status of tasks with the GetTaskProtection API.

        • taskArn (string) --

          The task ARN.

        • protectionEnabled (boolean) --

          The protection status of the task. If scale-in protection is enabled for a task, the value is true . Otherwise, it is false .

        • expirationDate (datetime) --

          The epoch time when protection for the task will expire.

    • failures (list) --

      Any failures associated with the call.

      • (dict) --

        A failed resource. For a list of common causes, see API failure reasons in the Amazon Elastic Container Service Developer Guide .

        • arn (string) --

          The Amazon Resource Name (ARN) of the failed resource.

        • reason (string) --

          The reason for the failure.

        • detail (string) --

          The details of the failure.