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

******************
create_environment
******************



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

  

  Deploy a new environment. An Proton environment is created from an environment template that defines infrastructure and resources that can be shared across services.

   

  **You can provision environments using the following methods:**

   

  
  * Amazon Web Services-managed provisioning: Proton makes direct calls to provision your resources.
   
  * Self-managed provisioning: Proton makes pull requests on your repository to provide compiled infrastructure as code (IaC) files that your IaC engine uses to provision resources.
  

   

  For more information, see `Environments <https://docs.aws.amazon.com/proton/latest/userguide/ag-environments.html>`__ and `Provisioning methods <https://docs.aws.amazon.com/proton/latest/userguide/ag-works-prov-methods.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/CreateEnvironment>`_  


  **Request Syntax**
  ::

    response = client.create_environment(
        codebuildRoleArn='string',
        componentRoleArn='string',
        description='string',
        environmentAccountConnectionId='string',
        name='string',
        protonServiceRoleArn='string',
        provisioningRepository={
            'branch': 'string',
            'name': 'string',
            'provider': 'GITHUB'|'GITHUB_ENTERPRISE'|'BITBUCKET'
        },
        spec='string',
        tags=[
            {
                'key': 'string',
                'value': 'string'
            },
        ],
        templateMajorVersion='string',
        templateMinorVersion='string',
        templateName='string'
    )
    
  :type codebuildRoleArn: string
  :param codebuildRoleArn: 

    The Amazon Resource Name (ARN) of the IAM service role that allows Proton to provision infrastructure using CodeBuild-based provisioning on your behalf.

     

    To use CodeBuild-based provisioning for the environment or for any service instance running in the environment, specify either the ``environmentAccountConnectionId`` or ``codebuildRoleArn`` parameter.

    

  
  :type componentRoleArn: string
  :param componentRoleArn: 

    The Amazon Resource Name (ARN) of the IAM service role that Proton uses when provisioning directly defined components in this environment. It determines the scope of infrastructure that a component can provision.

     

    You must specify ``componentRoleArn`` to allow directly defined components to be associated with this environment.

     

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

    

  
  :type description: string
  :param description: 

    A description of the environment that's being created and deployed.

    

  
  :type environmentAccountConnectionId: string
  :param environmentAccountConnectionId: 

    The ID of the environment account connection that you provide if you're provisioning your environment infrastructure resources to an environment account. For more information, see `Environment account connections <https://docs.aws.amazon.com/proton/latest/userguide/ag-env-account-connections.html>`__ in the *Proton User guide*.

     

    To use Amazon Web Services-managed provisioning for the environment, specify either the ``environmentAccountConnectionId`` or ``protonServiceRoleArn`` parameter and omit the ``provisioningRepository`` parameter.

    

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

    The name of the environment.

    

  
  :type protonServiceRoleArn: string
  :param protonServiceRoleArn: 

    The Amazon Resource Name (ARN) of the Proton service role that allows Proton to make calls to other services on your behalf.

     

    To use Amazon Web Services-managed provisioning for the environment, specify either the ``environmentAccountConnectionId`` or ``protonServiceRoleArn`` parameter and omit the ``provisioningRepository`` parameter.

    

  
  :type provisioningRepository: dict
  :param provisioningRepository: 

    The linked repository that you use to host your rendered infrastructure templates for self-managed provisioning. A linked repository is a repository that has been registered with Proton. For more information, see  CreateRepository.

     

    To use self-managed provisioning for the environment, specify this parameter and omit the ``environmentAccountConnectionId`` and ``protonServiceRoleArn`` parameters.

    

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

      The repository branch.

      

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

      The repository name.

      

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

      The repository provider.

      

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

    A YAML formatted string that provides inputs as defined in the environment template bundle schema file. For more information, see `Environments <https://docs.aws.amazon.com/proton/latest/userguide/ag-environments.html>`__ in the *Proton User Guide*.

    

  
  :type tags: list
  :param tags: 

    An optional list of metadata items that you can associate with the Proton environment. 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 templateMajorVersion: string
  :param templateMajorVersion: **[REQUIRED]** 

    The major version of the environment template.

    

  
  :type templateMinorVersion: string
  :param templateMinorVersion: 

    The minor version of the environment template.

    

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

    The name of the environment template. For more information, see `Environment Templates <https://docs.aws.amazon.com/proton/latest/userguide/ag-templates.html>`__ in the *Proton User Guide*.

    

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

    
    ::

      {
          'environment': {
              'arn': 'string',
              'codebuildRoleArn': 'string',
              'componentRoleArn': 'string',
              'createdAt': datetime(2015, 1, 1),
              'deploymentStatus': 'IN_PROGRESS'|'FAILED'|'SUCCEEDED'|'DELETE_IN_PROGRESS'|'DELETE_FAILED'|'DELETE_COMPLETE'|'CANCELLING'|'CANCELLED',
              'deploymentStatusMessage': 'string',
              'description': 'string',
              'environmentAccountConnectionId': 'string',
              'environmentAccountId': 'string',
              'lastAttemptedDeploymentId': 'string',
              'lastDeploymentAttemptedAt': datetime(2015, 1, 1),
              'lastDeploymentSucceededAt': datetime(2015, 1, 1),
              'lastSucceededDeploymentId': 'string',
              'name': 'string',
              'protonServiceRoleArn': 'string',
              'provisioning': 'CUSTOMER_MANAGED',
              'provisioningRepository': {
                  'arn': 'string',
                  'branch': 'string',
                  'name': 'string',
                  'provider': 'GITHUB'|'GITHUB_ENTERPRISE'|'BITBUCKET'
              },
              'spec': 'string',
              'templateMajorVersion': 'string',
              'templateMinorVersion': 'string',
              'templateName': 'string'
          }
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **environment** *(dict) --* 

        The environment detail data that's returned by Proton.

        
        

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

          The Amazon Resource Name (ARN) of the environment.

          
        

        - **codebuildRoleArn** *(string) --* 

          The Amazon Resource Name (ARN) of the IAM service role that allows Proton to provision infrastructure using CodeBuild-based provisioning on your behalf.

          
        

        - **componentRoleArn** *(string) --* 

          The Amazon Resource Name (ARN) of the IAM service role that Proton uses when provisioning directly defined components in this environment. It determines the scope of infrastructure that a component can provision.

           

          The environment must have a ``componentRoleArn`` to allow directly defined components to be associated with the environment.

           

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

          
        

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

          The time when the environment was created.

          
        

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

          The environment deployment status.

          
        

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

          An environment deployment status message.

          
        

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

          The description of the environment.

          
        

        - **environmentAccountConnectionId** *(string) --* 

          The ID of the environment account connection that's used to provision infrastructure resources in an environment account.

          
        

        - **environmentAccountId** *(string) --* 

          The ID of the environment account that the environment infrastructure resources are provisioned in.

          
        

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

          The ID of the last attempted deployment of this environment.

          
        

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

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

          
        

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

          The time when the environment was last deployed successfully.

          
        

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

          The ID of the last successful deployment of this environment.

          
        

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

          The name of the environment.

          
        

        - **protonServiceRoleArn** *(string) --* 

          The Amazon Resource Name (ARN) of the Proton service role that allows Proton to make calls to other services on your behalf.

          
        

        - **provisioning** *(string) --* 

          When included, indicates that the environment template is for customer provisioned and managed infrastructure.

          
        

        - **provisioningRepository** *(dict) --* 

          The linked repository that you use to host your rendered infrastructure templates for self-managed provisioning. A linked repository is a repository that has been registered with Proton. For more information, see `CreateRepository <https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateRepository.html>`__.

          
          

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

            The Amazon Resource Name (ARN) of the linked repository.

            
          

          - **branch** *(string) --* 

            The repository branch.

            
          

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

            The repository name.

            
          

          - **provider** *(string) --* 

            The repository provider.

            
      
        

        - **spec** *(string) --* 

          The environment spec.

          
        

        - **templateMajorVersion** *(string) --* 

          The major version of the environment template.

          
        

        - **templateMinorVersion** *(string) --* 

          The minor version of the environment template.

          
        

        - **templateName** *(string) --* 

          The Amazon Resource Name (ARN) of the environment template.

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

  