def associate_node(ServerName=None, NodeName=None, EngineAttributes=None):
    """
    Associates a new node with the Chef server. This command is an alternative to knife bootstrap . For more information about how to disassociate a node, see  DisassociateNode .
    A node can can only be associated with servers that are in a HEALTHY state. Otherwise, an InvalidStateException is thrown. A ResourceNotFoundException is thrown when the server does not exist. A ValidationException is raised when parameters of the request are not valid. The AssociateNode API call can be integrated into Auto Scaling configurations, AWS Cloudformation templates, or the user data of a server's instance.
    Example: aws opsworks-cm associate-node --server-name *MyServer* --node-name *MyManagedNode* --engine-attributes "Name=*MyOrganization* ,Value=default" "Name=*Chef_node_public_key* ,Value=*Public_key_contents* "
    See also: AWS API Documentation
    
    
    :example: response = client.associate_node(
        ServerName='string',
        NodeName='string',
        EngineAttributes=[
            {
                'Name': 'string',
                'Value': 'string'
            },
        ]
    )
    
    
    :type ServerName: string
    :param ServerName: [REQUIRED]
            The name of the server with which to associate the node.
            

    :type NodeName: string
    :param NodeName: [REQUIRED]
            The name of the Chef client node.
            

    :type EngineAttributes: list
    :param EngineAttributes: [REQUIRED]
            Engine attributes used for associating the node.
            Attributes accepted in a AssociateNode request:
            CHEF_ORGANIZATION : The Chef organization with which the node is associated. By default only one organization named default can exist.
            CHEF_NODE_PUBLIC_KEY : A PEM-formatted public key. This key is required for the chef-client agent to access the Chef API.
            (dict) --A name and value pair that is specific to the engine of the server.
            Name (string) --The name of the engine attribute.
            Value (string) --The value of the engine attribute.
            
            

    :rtype: dict
    :return: {
        'NodeAssociationStatusToken': 'string'
    }
    
    
    """
    pass
