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.
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 )
string
[REQUIRED]
The short name or full Amazon Resource Name (ARN) of the cluster that hosts the service that the task sets exist in.
list
[REQUIRED]
A list of up to 10 task IDs or full ARN entries.
(string) --
boolean
[REQUIRED]
Specify true to mark a task for protection and false to unset protection, making it eligible for termination.
integer
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).
dict
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.
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', ] )
string
[REQUIRED]
The short name or full Amazon Resource Name (ARN) of the cluster that hosts the service that the task sets exist in.
list
A list of up to 100 task IDs or full ARN entries.
(string) --
dict
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.