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

****************
create_component
****************



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

  

  Create an Proton component. A component is an infrastructure extension for a service instance.

   

  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/CreateComponent>`_  


  **Request Syntax**
  ::

    response = client.create_component(
        clientToken='string',
        description='string',
        environmentName='string',
        manifest='string',
        name='string',
        serviceInstanceName='string',
        serviceName='string',
        serviceSpec='string',
        tags=[
            {
                'key': 'string',
                'value': 'string'
            },
        ],
        templateFile='string'
    )
    
  :type clientToken: string
  :param clientToken: 

    The client token for the created component.

    This field is autopopulated if not provided.

  
  :type description: string
  :param description: 

    An optional customer-provided description of the component.

    

  
  :type environmentName: string
  :param environmentName: 

    The name of the Proton environment that you want to associate this component with. You must specify this when you don't specify ``serviceInstanceName`` and ``serviceName``.

    

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

    A path to a manifest file that lists the Infrastructure as Code (IaC) file, template language, and rendering engine for infrastructure that a custom component provisions.

    

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

    The customer-provided name of the component.

    

  
  :type serviceInstanceName: string
  :param serviceInstanceName: 

    The name of the service instance that you want to attach this component to. If you don't specify this, the component isn't attached to any service instance. Specify both ``serviceInstanceName`` and ``serviceName`` or neither of them.

    

  
  :type serviceName: string
  :param serviceName: 

    The name of the service that ``serviceInstanceName`` is associated with. If you don't specify this, the component isn't attached to any service instance. Specify both ``serviceInstanceName`` and ``serviceName`` or 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 you attach the component to a service instance.

    

  
  :type tags: list
  :param tags: 

    An optional list of metadata items that you can associate with the Proton component. A tag is a key-value pair.

     

    For more information, see `Proton resources and tagging <https://docs.aws.amazon.com/proton/latest/userguide/resources.html>`__ in the *Proton User Guide*.

    

  
    - *(dict) --* 

      A description of a resource tag.

      

    
      - **key** *(string) --* **[REQUIRED]** 

        The key of the resource tag.

        

      
      - **value** *(string) --* **[REQUIRED]** 

        The value of the resource tag.

        

      
    

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

    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 created 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`

  