:doc:`ECS <../../ecs>` / Client / update_task_protection

**********************
update_task_protection
**********************



.. py:method:: ECS.Client.update_task_protection(**kwargs)

  

  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 <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-auto-scaling.html>`__ or `deployments <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html>`__.

   

  Task-protection, by default, expires after 2 hours at which point Amazon ECS clears 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 <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-scale-in-protection.html>`__ 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 <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/api_failures_messages.html>`__.

    

   

  .. warning::

     

    If you prefer to set task protection from within the container, we recommend using the `Task scale-in protection endpoint <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-scale-in-protection-endpoint.html>`__.

    

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UpdateTaskProtection>`_  


  **Request Syntax**
  ::

    response = 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 turned on 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 <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateTaskProtection.html>`__ API and get the status of tasks with the `GetTaskProtection <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_GetTaskProtection.html>`__ API.

          
          

          - **taskArn** *(string) --* 

            The task ARN.

            
          

          - **protectionEnabled** *(boolean) --* 

            The protection status of the task. If scale-in protection is on 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 <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/api_failures_messages.html>`__ 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.

            
      
    
  
  **Exceptions**
  
  *   :py:class:`ECS.Client.exceptions.AccessDeniedException`

  
  *   :py:class:`ECS.Client.exceptions.ClientException`

  
  *   :py:class:`ECS.Client.exceptions.ClusterNotFoundException`

  
  *   :py:class:`ECS.Client.exceptions.InvalidParameterException`

  
  *   :py:class:`ECS.Client.exceptions.ResourceNotFoundException`

  
  *   :py:class:`ECS.Client.exceptions.ServerException`

  
  *   :py:class:`ECS.Client.exceptions.UnsupportedFeatureException`

  