:doc:`MigrationHub <../../mgh>` / Client / put_resource_attributes

***********************
put_resource_attributes
***********************



.. py:method:: MigrationHub.Client.put_resource_attributes(**kwargs)

  

  Provides identifying details of the resource being migrated so that it can be associated in the Application Discovery Service repository. This association occurs asynchronously after ``PutResourceAttributes`` returns.

   

  .. warning::

     

    
    * Keep in mind that subsequent calls to PutResourceAttributes will override previously stored attributes. For example, if it is first called with a MAC address, but later, it is desired to *add* an IP address, it will then be required to call it with *both* the IP and MAC addresses to prevent overriding the MAC address.
     
    * Note the instructions regarding the special use case of the `ResourceAttributeList <https://docs.aws.amazon.com/migrationhub/latest/ug/API_PutResourceAttributes.html#migrationhub-PutResourceAttributes-request-ResourceAttributeList>`__ parameter when specifying any "VM" related value.
    

     

   

  .. note::

    

    Because this is an asynchronous call, it will always return 200, whether an association occurs or not. To confirm if an association was found based on the provided details, call ``ListDiscoveredResources``.

    

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/AWSMigrationHub-2017-05-31/PutResourceAttributes>`_  


  **Request Syntax**
  ::

    response = client.put_resource_attributes(
        ProgressUpdateStream='string',
        MigrationTaskName='string',
        ResourceAttributeList=[
            {
                'Type': 'IPV4_ADDRESS'|'IPV6_ADDRESS'|'MAC_ADDRESS'|'FQDN'|'VM_MANAGER_ID'|'VM_MANAGED_OBJECT_REFERENCE'|'VM_NAME'|'VM_PATH'|'BIOS_ID'|'MOTHERBOARD_SERIAL_NUMBER',
                'Value': 'string'
            },
        ],
        DryRun=True|False
    )
    
  :type ProgressUpdateStream: string
  :param ProgressUpdateStream: **[REQUIRED]** 

    The name of the ProgressUpdateStream.

    

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

    Unique identifier that references the migration task. *Do not store personal data in this field.*

    

  
  :type ResourceAttributeList: list
  :param ResourceAttributeList: **[REQUIRED]** 

    Information about the resource that is being migrated. This data will be used to map the task to a resource in the Application Discovery Service repository.

     

    .. note::

      

      Takes the object array of ``ResourceAttribute`` where the ``Type`` field is reserved for the following values: ``IPV4_ADDRESS | IPV6_ADDRESS | MAC_ADDRESS | FQDN | VM_MANAGER_ID | VM_MANAGED_OBJECT_REFERENCE | VM_NAME | VM_PATH | BIOS_ID | MOTHERBOARD_SERIAL_NUMBER`` where the identifying value can be a string up to 256 characters.

      

     

    .. warning::

       

      
      * If any "VM" related value is set for a ``ResourceAttribute`` object, it is required that ``VM_MANAGER_ID``, as a minimum, is always set. If ``VM_MANAGER_ID`` is not set, then all "VM" fields will be discarded and "VM" fields will not be used for matching the migration task to a server in Application Discovery Service repository. See the `Example <https://docs.aws.amazon.com/migrationhub/latest/ug/API_PutResourceAttributes.html#API_PutResourceAttributes_Examples>`__ section below for a use case of specifying "VM" related values.
       
      * If a server you are trying to match has multiple IP or MAC addresses, you should provide as many as you know in separate type/value pairs passed to the ``ResourceAttributeList`` parameter to maximize the chances of matching.
      

      

    

  
    - *(dict) --* 

      Attribute associated with a resource.

       

      Note the corresponding format required per type listed below:

        IPV4  

      ``x.x.x.x``

       

      *where x is an integer in the range [0,255]*

        IPV6  

      ``y : y : y : y : y : y : y : y``

       

      *where y is a hexadecimal between 0 and FFFF. [0, FFFF]*

        MAC_ADDRESS  

      ``^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$``

        FQDN  

      ``^[^<>{}\\\\/?,=\\p{Cntrl}]{1,256}$``

      

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

        Type of resource.

        

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

        Value of the resource type.

        

      
    

  :type DryRun: boolean
  :param DryRun: 

    Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.

    

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

    
    ::

      {}
      
    **Response Structure**

    

    - *(dict) --* 
  
  **Exceptions**
  
  *   :py:class:`MigrationHub.Client.exceptions.AccessDeniedException`

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

  
  *   :py:class:`MigrationHub.Client.exceptions.InternalServerError`

  
  *   :py:class:`MigrationHub.Client.exceptions.ServiceUnavailableException`

  
  *   :py:class:`MigrationHub.Client.exceptions.DryRunOperation`

  
  *   :py:class:`MigrationHub.Client.exceptions.UnauthorizedOperation`

  
  *   :py:class:`MigrationHub.Client.exceptions.InvalidInputException`

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

  
  *   :py:class:`MigrationHub.Client.exceptions.HomeRegionNotSetException`

  