Disassociate an Elastic IP address from a currently running instance. This
    requires exactly one of either 'association_id' or 'public_ip', depending
    on whether you’re dealing with a VPC or EC2 Classic address.

    public_ip
        (string) – Public IP address, for EC2 Classic allocations.
    association_id
        (string) – Association ID for a VPC-bound EIP.

    returns
        (bool)   - True on success, False on failure.

    CLI Example:

    .. code-block:: bash

        salt myminion boto_ec2.disassociate_eip_address association_id=eipassoc-e3ba2d16

    .. versionadded:: 2016.3.0

def disassociate_eip_address(public_ip=None, association_id=None, region=None,
                             key=None, keyid=None, profile=None):
    '''
    Disassociate an Elastic IP address from a currently running instance. This
    requires exactly one of either 'association_id' or 'public_ip', depending
    on whether you’re dealing with a VPC or EC2 Classic address.

    public_ip
        (string) – Public IP address, for EC2 Classic allocations.
    association_id
        (string) – Association ID for a VPC-bound EIP.

    returns
        (bool)   - True on success, False on failure.

    CLI Example:

    .. code-block:: bash

        salt myminion boto_ec2.disassociate_eip_address association_id=eipassoc-e3ba2d16

    .. versionadded:: 2016.3.0
    '''
    conn = _get_conn(region=region, key=key, keyid=keyid, profile=profile)

    try:
        return conn.disassociate_address(public_ip, association_id)
    except boto.exception.BotoServerError as e:
        log.error(e)
        return False