:doc:`DeviceFarm <../../devicefarm>` / Client / create_remote_access_session

****************************
create_remote_access_session
****************************



.. py:method:: DeviceFarm.Client.create_remote_access_session(**kwargs)

  

  Specifies and starts a remote access session.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/devicefarm-2015-06-23/CreateRemoteAccessSession>`_  


  **Request Syntax**
  ::

    response = client.create_remote_access_session(
        projectArn='string',
        deviceArn='string',
        appArn='string',
        instanceArn='string',
        name='string',
        configuration={
            'auxiliaryApps': [
                'string',
            ],
            'billingMethod': 'METERED'|'UNMETERED',
            'vpceConfigurationArns': [
                'string',
            ],
            'deviceProxy': {
                'host': 'string',
                'port': 123
            }
        },
        interactionMode='INTERACTIVE'|'NO_VIDEO'|'VIDEO_ONLY',
        skipAppResign=True|False
    )
    
  :type projectArn: string
  :param projectArn: **[REQUIRED]** 

    The Amazon Resource Name (ARN) of the project for which you want to create a remote access session.

    

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

    The ARN of the device for which you want to create a remote access session.

    

  
  :type appArn: string
  :param appArn: 

    The Amazon Resource Name (ARN) of the app to create the remote access session.

    

  
  :type instanceArn: string
  :param instanceArn: 

    The Amazon Resource Name (ARN) of the device instance for which you want to create a remote access session.

    

  
  :type name: string
  :param name: 

    The name of the remote access session to create.

    

  
  :type configuration: dict
  :param configuration: 

    The configuration information for the remote access session request.

    

  
    - **auxiliaryApps** *(list) --* 

      A list of upload ARNs for app packages to be installed onto your device. (Maximum 3)

      

    
      - *(string) --* 

      
  
    - **billingMethod** *(string) --* 

      The billing method for the remote access session.

      

    
    - **vpceConfigurationArns** *(list) --* 

      An array of ARNs included in the VPC endpoint configuration.

      

    
      - *(string) --* 

      
  
    - **deviceProxy** *(dict) --* 

      The device proxy to be configured on the device for the remote access session.

      

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

        Hostname or IPv4 address of the proxy.

        

      
      - **port** *(integer) --* **[REQUIRED]** 

        The port number on which the http/s proxy is listening.

        

      
    
  
  :type interactionMode: string
  :param interactionMode: 

    The interaction mode of the remote access session. Changing the interactive mode of remote access sessions is no longer available.

    

  
  :type skipAppResign: boolean
  :param skipAppResign: 

    When set to ``true``, for private devices, Device Farm does not sign your app again. For public devices, Device Farm always signs your apps again.

     

    For more information on how Device Farm modifies your uploads during tests, see `Do you modify my app? <http://aws.amazon.com/device-farm/faqs/>`__

    

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

    
    ::

      {
          'remoteAccessSession': {
              'arn': 'string',
              'name': 'string',
              'created': datetime(2015, 1, 1),
              'status': 'PENDING'|'PENDING_CONCURRENCY'|'PENDING_DEVICE'|'PROCESSING'|'SCHEDULING'|'PREPARING'|'RUNNING'|'COMPLETED'|'STOPPING',
              'result': 'PENDING'|'PASSED'|'WARNED'|'FAILED'|'SKIPPED'|'ERRORED'|'STOPPED',
              'message': 'string',
              'started': datetime(2015, 1, 1),
              'stopped': datetime(2015, 1, 1),
              'device': {
                  'arn': 'string',
                  'name': 'string',
                  'manufacturer': 'string',
                  'model': 'string',
                  'modelId': 'string',
                  'formFactor': 'PHONE'|'TABLET',
                  'platform': 'ANDROID'|'IOS',
                  'os': 'string',
                  'cpu': {
                      'frequency': 'string',
                      'architecture': 'string',
                      'clock': 123.0
                  },
                  'resolution': {
                      'width': 123,
                      'height': 123
                  },
                  'heapSize': 123,
                  'memory': 123,
                  'image': 'string',
                  'carrier': 'string',
                  'radio': 'string',
                  'remoteAccessEnabled': True|False,
                  'remoteDebugEnabled': True|False,
                  'fleetType': 'string',
                  'fleetName': 'string',
                  'instances': [
                      {
                          'arn': 'string',
                          'deviceArn': 'string',
                          'labels': [
                              'string',
                          ],
                          'status': 'IN_USE'|'PREPARING'|'AVAILABLE'|'NOT_AVAILABLE',
                          'udid': 'string',
                          'instanceProfile': {
                              'arn': 'string',
                              'packageCleanup': True|False,
                              'excludeAppPackagesFromCleanup': [
                                  'string',
                              ],
                              'rebootAfterUse': True|False,
                              'name': 'string',
                              'description': 'string'
                          }
                      },
                  ],
                  'availability': 'TEMPORARY_NOT_AVAILABLE'|'BUSY'|'AVAILABLE'|'HIGHLY_AVAILABLE'
              },
              'instanceArn': 'string',
              'billingMethod': 'METERED'|'UNMETERED',
              'deviceMinutes': {
                  'total': 123.0,
                  'metered': 123.0,
                  'unmetered': 123.0
              },
              'endpoint': 'string',
              'deviceUdid': 'string',
              'interactionMode': 'INTERACTIVE'|'NO_VIDEO'|'VIDEO_ONLY',
              'skipAppResign': True|False,
              'vpcConfig': {
                  'securityGroupIds': [
                      'string',
                  ],
                  'subnetIds': [
                      'string',
                  ],
                  'vpcId': 'string'
              },
              'deviceProxy': {
                  'host': 'string',
                  'port': 123
              },
              'appUpload': 'string',
              'endpoints': {
                  'remoteDriverEndpoint': 'string',
                  'interactiveEndpoint': 'string'
              }
          }
      }
      
    **Response Structure**

    

    - *(dict) --* 

      Represents the server response from a request to create a remote access session.

      
      

      - **remoteAccessSession** *(dict) --* 

        A container that describes the remote access session when the request to create a remote access session is sent.

        
        

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

          The Amazon Resource Name (ARN) of the remote access session.

          
        

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

          The name of the remote access session.

          
        

        - **created** *(datetime) --* 

          The date and time the remote access session was created.

          
        

        - **status** *(string) --* 

          The status of the remote access session. Can be any of the following:

           

          
          * PENDING.
           
          * PENDING_CONCURRENCY.
           
          * PENDING_DEVICE.
           
          * PROCESSING.
           
          * SCHEDULING.
           
          * PREPARING.
           
          * RUNNING.
           
          * COMPLETED.
           
          * STOPPING.
          

          
        

        - **result** *(string) --* 

          The result of the remote access session. Can be any of the following:

           

          
          * PENDING.
           
          * PASSED.
           
          * WARNED.
           
          * FAILED.
           
          * SKIPPED.
           
          * ERRORED.
           
          * STOPPED.
          

          
        

        - **message** *(string) --* 

          A message about the remote access session.

          
        

        - **started** *(datetime) --* 

          The date and time the remote access session was started.

          
        

        - **stopped** *(datetime) --* 

          The date and time the remote access session was stopped.

          
        

        - **device** *(dict) --* 

          The device (phone or tablet) used in the remote access session.

          
          

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

            The device's ARN.

            
          

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

            The device's display name.

            
          

          - **manufacturer** *(string) --* 

            The device's manufacturer name.

            
          

          - **model** *(string) --* 

            The device's model name.

            
          

          - **modelId** *(string) --* 

            The device's model ID.

            
          

          - **formFactor** *(string) --* 

            The device's form factor.

             

            Allowed values include:

             

            
            * PHONE
             
            * TABLET
            

            
          

          - **platform** *(string) --* 

            The device's platform.

             

            Allowed values include:

             

            
            * ANDROID
             
            * IOS
            

            
          

          - **os** *(string) --* 

            The device's operating system type.

            
          

          - **cpu** *(dict) --* 

            Information about the device's CPU.

            
            

            - **frequency** *(string) --* 

              The CPU's frequency.

              
            

            - **architecture** *(string) --* 

              The CPU's architecture (for example, x86 or ARM).

              
            

            - **clock** *(float) --* 

              The clock speed of the device's CPU, expressed in hertz (Hz). For example, a 1.2 GHz CPU is expressed as 1200000000.

              
        
          

          - **resolution** *(dict) --* 

            The resolution of the device.

            
            

            - **width** *(integer) --* 

              The screen resolution's width, expressed in pixels.

              
            

            - **height** *(integer) --* 

              The screen resolution's height, expressed in pixels.

              
        
          

          - **heapSize** *(integer) --* 

            The device's heap size, expressed in bytes.

            
          

          - **memory** *(integer) --* 

            The device's total memory size, expressed in bytes.

            
          

          - **image** *(string) --* 

            The device's image name.

            
          

          - **carrier** *(string) --* 

            The device's carrier.

            
          

          - **radio** *(string) --* 

            The device's radio.

            
          

          - **remoteAccessEnabled** *(boolean) --* 

            Specifies whether remote access has been enabled for the specified device.

            
          

          - **remoteDebugEnabled** *(boolean) --* 

            This flag is set to ``true`` if remote debugging is enabled for the device.

             

            Remote debugging is `no longer supported <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html>`__.

            
          

          - **fleetType** *(string) --* 

            The type of fleet to which this device belongs. Possible values are PRIVATE and PUBLIC.

            
          

          - **fleetName** *(string) --* 

            The name of the fleet to which this device belongs.

            
          

          - **instances** *(list) --* 

            The instances that belong to this device.

            
            

            - *(dict) --* 

              Represents the device instance.

              
              

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

                The Amazon Resource Name (ARN) of the device instance.

                
              

              - **deviceArn** *(string) --* 

                The ARN of the device.

                
              

              - **labels** *(list) --* 

                An array of strings that describe the device instance.

                
                

                - *(string) --* 
            
              

              - **status** *(string) --* 

                The status of the device instance. Valid values are listed here.

                
              

              - **udid** *(string) --* 

                Unique device identifier for the device instance.

                
              

              - **instanceProfile** *(dict) --* 

                A object that contains information about the instance profile.

                
                

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

                  The Amazon Resource Name (ARN) of the instance profile.

                  
                

                - **packageCleanup** *(boolean) --* 

                  When set to ``true``, Device Farm removes app packages after a test run. The default value is ``false`` for private devices.

                  
                

                - **excludeAppPackagesFromCleanup** *(list) --* 

                  An array of strings containing the list of app packages that should not be cleaned up from the device after a test run completes.

                   

                  The list of packages is considered only if you set ``packageCleanup`` to ``true``.

                  
                  

                  - *(string) --* 
              
                

                - **rebootAfterUse** *(boolean) --* 

                  When set to ``true``, Device Farm reboots the instance after a test run. The default value is ``true``.

                  
                

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

                  The name of the instance profile.

                  
                

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

                  The description of the instance profile.

                  
            
          
        
          

          - **availability** *(string) --* 

            Indicates how likely a device is available for a test run. Currently available in the  ListDevices and GetDevice API methods.

            
      
        

        - **instanceArn** *(string) --* 

          The ARN of the instance.

          
        

        - **billingMethod** *(string) --* 

          The billing method of the remote access session. Possible values include ``METERED`` or ``UNMETERED``. For more information about metered devices, see `AWS Device Farm terminology <https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html#welcome-terminology>`__.

          
        

        - **deviceMinutes** *(dict) --* 

          The number of minutes a device is used in a remote access session (including setup and teardown minutes).

          
          

          - **total** *(float) --* 

            When specified, represents the total minutes used by the resource to run tests.

            
          

          - **metered** *(float) --* 

            When specified, represents only the sum of metered minutes used by the resource to run tests.

            
          

          - **unmetered** *(float) --* 

            When specified, represents only the sum of unmetered minutes used by the resource to run tests.

            
      
        

        - **endpoint** *(string) --* 

          The endpoint for the remote access session. This field is deprecated, and is replaced by the new ``endpoints.interactiveEndpoint`` field.

          
        

        - **deviceUdid** *(string) --* 

          Unique device identifier for the remote device. Only returned if remote debugging is enabled for the remote access session.

           

          Remote debugging is `no longer supported <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html>`__.

          
        

        - **interactionMode** *(string) --* 

          The interaction mode of the remote access session. Changing the interactive mode of remote access sessions is no longer available.

          
        

        - **skipAppResign** *(boolean) --* 

          When set to ``true``, for private devices, Device Farm does not sign your app again. For public devices, Device Farm always signs your apps again.

           

          For more information about how Device Farm re-signs your apps, see `Do you modify my app? <http://aws.amazon.com/device-farm/faqs/>`__ in the *AWS Device Farm FAQs*.

          
        

        - **vpcConfig** *(dict) --* 

          The VPC security groups and subnets that are attached to a project.

          
          

          - **securityGroupIds** *(list) --* 

            An array of one or more security groups IDs in your Amazon VPC.

            
            

            - *(string) --* 
        
          

          - **subnetIds** *(list) --* 

            An array of one or more subnet IDs in your Amazon VPC.

            
            

            - *(string) --* 
        
          

          - **vpcId** *(string) --* 

            The ID of the Amazon VPC.

            
      
        

        - **deviceProxy** *(dict) --* 

          The device proxy configured for the remote access session.

          
          

          - **host** *(string) --* 

            Hostname or IPv4 address of the proxy.

            
          

          - **port** *(integer) --* 

            The port number on which the http/s proxy is listening.

            
      
        

        - **appUpload** *(string) --* 

          The ARN for the app to be installed onto your device.

          
        

        - **endpoints** *(dict) --* 

          Represents the remote endpoints for viewing and controlling a device during a remote access session.

          
          

          - **remoteDriverEndpoint** *(string) --* 

            URL for controlling the device using WebDriver-compliant clients, like Appium, during the remote access session.

            
          

          - **interactiveEndpoint** *(string) --* 

            URL for viewing and interacting with the device during the remote access session.

            
      
    
  
  **Exceptions**
  
  *   :py:class:`DeviceFarm.Client.exceptions.ArgumentException`

  
  *   :py:class:`DeviceFarm.Client.exceptions.NotFoundException`

  
  *   :py:class:`DeviceFarm.Client.exceptions.LimitExceededException`

  
  *   :py:class:`DeviceFarm.Client.exceptions.ServiceAccountException`

  

  **Examples**

  The following example creates a remote access session named MySession.
  ::

    response = client.create_remote_access_session(
        name='MySession',
        configuration={
            'billingMethod': 'METERED',
        },
        # You can get the device ARN by using the list-devices CLI command.
        deviceArn='arn:aws:devicefarm:us-west-2::device:123EXAMPLE',
        # You can get the project ARN by using the list-projects CLI command.
        projectArn='arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456',
    )
    
    print(response)

  
  Expected Output:
  ::

    {
        'remoteAccessSession': {
        },
        'ResponseMetadata': {
            '...': '...',
        },
    }

  