:doc:`Proton <../../proton>` / Client / update_component

****************
update_component
****************



.. py:method:: Proton.Client.update_component(**kwargs)

  

  Update a component.

   

  There are a few modes for updating a component. The ``deploymentType`` field defines the mode.

   

  .. note::

    

    You can't update a component while its deployment status, or the deployment status of a service instance attached to it, is ``IN_PROGRESS``.

    

   

  For more information about components, see `Proton components <https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html>`__ in the *Proton User Guide*.

  

  .. danger::

        This operation is deprecated and may not function as expected. This operation should not be used going forward and is only kept for the purpose of backwards compatiblity.


  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/proton-2020-07-20/UpdateComponent>`_  


  **Request Syntax**
  ::

    response = client.update_component(
        clientToken='string',
        deploymentType='NONE'|'CURRENT_VERSION',
        description='string',
        name='string',
        serviceInstanceName='string',
        serviceName='string',
        serviceSpec='string',
        templateFile='string'
    )
    
  :type clientToken: string
  :param clientToken: 

    The client token for the updated component.

    This field is autopopulated if not provided.

  
  :type deploymentType: string
  :param deploymentType: **[REQUIRED]** 

    The deployment type. It defines the mode for updating a component, as follows:

        

    ``NONE``

     

    In this mode, a deployment *doesn't* occur. Only the requested metadata parameters are updated. You can only specify ``description`` in this mode.

        

    ``CURRENT_VERSION``

     

    In this mode, the component is deployed and updated with the new ``serviceSpec``, ``templateSource``, and/or ``type`` that you provide. Only requested parameters are updated.

    

  
  :type description: string
  :param description: 

    An optional customer-provided description of the component.

    

  
  :type name: string
  :param name: **[REQUIRED]** 

    The name of the component to update.

    

  
  :type serviceInstanceName: string
  :param serviceInstanceName: 

    The name of the service instance that you want to attach this component to. Don't specify to keep the component's current service instance attachment. Specify an empty string to detach the component from the service instance it's attached to. Specify non-empty values for both ``serviceInstanceName`` and ``serviceName`` or for neither of them.

    

  
  :type serviceName: string
  :param serviceName: 

    The name of the service that ``serviceInstanceName`` is associated with. Don't specify to keep the component's current service instance attachment. Specify an empty string to detach the component from the service instance it's attached to. Specify non-empty values for both ``serviceInstanceName`` and ``serviceName`` or for neither of them.

    

  
  :type serviceSpec: string
  :param serviceSpec: 

    The service spec that you want the component to use to access service inputs. Set this only when the component is attached to a service instance.

    

  
  :type templateFile: string
  :param templateFile: 

    A path to the Infrastructure as Code (IaC) file describing infrastructure that a custom component provisions.

     

    .. note::

      

      Components support a single IaC file, even if you use Terraform as your template language.

      

    

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

    
    ::

      {
          'component': {
              'arn': 'string',
              'createdAt': datetime(2015, 1, 1),
              'deploymentStatus': 'IN_PROGRESS'|'FAILED'|'SUCCEEDED'|'DELETE_IN_PROGRESS'|'DELETE_FAILED'|'DELETE_COMPLETE'|'CANCELLING'|'CANCELLED',
              'deploymentStatusMessage': 'string',
              'description': 'string',
              'environmentName': 'string',
              'lastAttemptedDeploymentId': 'string',
              'lastClientRequestToken': 'string',
              'lastDeploymentAttemptedAt': datetime(2015, 1, 1),
              'lastDeploymentSucceededAt': datetime(2015, 1, 1),
              'lastModifiedAt': datetime(2015, 1, 1),
              'lastSucceededDeploymentId': 'string',
              'name': 'string',
              'serviceInstanceName': 'string',
              'serviceName': 'string',
              'serviceSpec': 'string'
          }
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **component** *(dict) --* 

        The detailed data of the updated component.

        
        

        - **arn** *(string) --* 

          The Amazon Resource Name (ARN) of the component.

          
        

        - **createdAt** *(datetime) --* 

          The time when the component was created.

          
        

        - **deploymentStatus** *(string) --* 

          The component deployment status.

          
        

        - **deploymentStatusMessage** *(string) --* 

          The message associated with the component deployment status.

          
        

        - **description** *(string) --* 

          A description of the component.

          
        

        - **environmentName** *(string) --* 

          The name of the Proton environment that this component is associated with.

          
        

        - **lastAttemptedDeploymentId** *(string) --* 

          The ID of the last attempted deployment of this component.

          
        

        - **lastClientRequestToken** *(string) --* 

          The last token the client requested.

          
        

        - **lastDeploymentAttemptedAt** *(datetime) --* 

          The time when a deployment of the component was last attempted.

          
        

        - **lastDeploymentSucceededAt** *(datetime) --* 

          The time when the component was last deployed successfully.

          
        

        - **lastModifiedAt** *(datetime) --* 

          The time when the component was last modified.

          
        

        - **lastSucceededDeploymentId** *(string) --* 

          The ID of the last successful deployment of this component.

          
        

        - **name** *(string) --* 

          The name of the component.

          
        

        - **serviceInstanceName** *(string) --* 

          The name of the service instance that this component is attached to. Provided when a component is attached to a service instance.

          
        

        - **serviceName** *(string) --* 

          The name of the service that ``serviceInstanceName`` is associated with. Provided when a component is attached to a service instance.

          
        

        - **serviceSpec** *(string) --* 

          The service spec that the component uses to access service inputs. Provided when a component is attached to a service instance.

          
    
  
  **Exceptions**
  
  *   :py:class:`Proton.Client.exceptions.ServiceQuotaExceededException`

  
  *   :py:class:`Proton.Client.exceptions.ValidationException`

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

  
  *   :py:class:`Proton.Client.exceptions.ThrottlingException`

  
  *   :py:class:`Proton.Client.exceptions.ConflictException`

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

  
  *   :py:class:`Proton.Client.exceptions.InternalServerException`

  