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

*****************************
submit_container_state_change
*****************************



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

  

  .. note::

    

    This action is only used by the Amazon ECS agent, and it is not intended for use outside of the agent.

    

   

  Sent to acknowledge that a container changed states.

  

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


  **Request Syntax**
  ::

    response = client.submit_container_state_change(
        cluster='string',
        task='string',
        containerName='string',
        runtimeId='string',
        status='string',
        exitCode=123,
        reason='string',
        networkBindings=[
            {
                'bindIP': 'string',
                'containerPort': 123,
                'hostPort': 123,
                'protocol': 'tcp'|'udp',
                'containerPortRange': 'string',
                'hostPortRange': 'string'
            },
        ]
    )
    
  :type cluster: string
  :param cluster: 

    The short name or full ARN of the cluster that hosts the container.

    

  
  :type task: string
  :param task: 

    The task ID or full Amazon Resource Name (ARN) of the task that hosts the container.

    

  
  :type containerName: string
  :param containerName: 

    The name of the container.

    

  
  :type runtimeId: string
  :param runtimeId: 

    The ID of the Docker container.

    

  
  :type status: string
  :param status: 

    The status of the state change request.

    

  
  :type exitCode: integer
  :param exitCode: 

    The exit code that's returned for the state change request.

    

  
  :type reason: string
  :param reason: 

    The reason for the state change request.

    

  
  :type networkBindings: list
  :param networkBindings: 

    The network bindings of the container.

    

  
    - *(dict) --* 

      Details on the network bindings between a container and its host container instance. After a task reaches the ``RUNNING`` status, manual and automatic host and container port assignments are visible in the ``networkBindings`` section of `DescribeTasks <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html>`__ API responses.

      

    
      - **bindIP** *(string) --* 

        The IP address that the container is bound to on the container instance.

        

      
      - **containerPort** *(integer) --* 

        The port number on the container that's used with the network binding.

        

      
      - **hostPort** *(integer) --* 

        The port number on the host that's used with the network binding.

        

      
      - **protocol** *(string) --* 

        The protocol used for the network binding.

        

      
      - **containerPortRange** *(string) --* 

        The port number range on the container that's bound to the dynamically mapped host port range.

         

        The following rules apply when you specify a ``containerPortRange``:

         

        
        * You must use either the ``bridge`` network mode or the ``awsvpc`` network mode.
         
        * This parameter is available for both the EC2 and Fargate launch types.
         
        * This parameter is available for both the Linux and Windows operating systems.
         
        * The container instance must have at least version 1.67.0 of the container agent and at least version 1.67.0-1 of the ``ecs-init`` package
         
        * You can specify a maximum of 100 port ranges per container.
         
        * You do not specify a ``hostPortRange``. The value of the ``hostPortRange`` is set as follows: 

          
          * For containers in a task with the ``awsvpc`` network mode, the ``hostPortRange`` is set to the same value as the ``containerPortRange``. This is a static mapping strategy.
           
          * For containers in a task with the ``bridge`` network mode, the Amazon ECS agent finds open host ports from the default ephemeral range and passes it to docker to bind them to the container ports.
          

        
         
        * The ``containerPortRange`` valid values are between 1 and 65535.
         
        * A port can only be included in one port mapping per container.
         
        * You cannot specify overlapping port ranges.
         
        * The first port in the range must be less than last port in the range.
         
        * Docker recommends that you turn off the docker-proxy in the Docker daemon config file when you have a large number of ports. For more information, see `Issue #11185 <https://github.com/moby/moby/issues/11185>`__ on the Github website. For information about how to turn off the docker-proxy in the Docker daemon config file, see `Docker daemon <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html#bootstrap_docker_daemon>`__ in the *Amazon ECS Developer Guide*.
        

         

        You can call `DescribeTasks <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html>`__ to view the ``hostPortRange`` which are the host ports that are bound to the container ports.

        

      
      - **hostPortRange** *(string) --* 

        The port number range on the host that's used with the network binding. This is assigned is assigned by Docker and delivered by the Amazon ECS agent.

        

      
    

  
  :rtype: dict
  :returns: 
    
    **Response Syntax**

    
    ::

      {
          'acknowledgment': 'string'
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **acknowledgment** *(string) --* 

        Acknowledgement of the state change.

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

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

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

  