'Create properly formatted and pre-signed URL.
This uses the created user for the credentials.
See boto/auth.py::QuerySignatureV2AuthHandler
:param signal_type: either WAITCONDITION or SIGNAL.'

def _get_ec2_signed_url(self, signal_type=SIGNAL):

    stored = self.data().get('ec2_signed_url')
    if (stored is not None):
        return stored
    access_key = self.data().get('access_key')
    secret_key = self.data().get('secret_key')
    if ((not access_key) or (not secret_key)):
        if (self.id is None):
            return
        if (self._get_user_id() is None):
            self._create_user()
        self._create_keypair()
        access_key = self.data().get('access_key')
        secret_key = self.data().get('secret_key')
        if ((not access_key) or (not secret_key)):
            LOG.warning('Cannot    generate    signed    url,    unable    to    create    keypair')
            return
    config_url = cfg.CONF.heat_waitcondition_server_url
    if config_url:
        signal_url = config_url.replace('/waitcondition', signal_type)
    else:
        heat_client_plugin = self.stack.clients.client_plugin('heat')
        endpoint = heat_client_plugin.get_heat_cfn_url()
        signal_url = ''.join([endpoint, signal_type])
    host_url = urlparse.urlparse(signal_url)
    path = self.identifier().arn_url_path()
    unquoted_path = urlparse.unquote((host_url.path + path))
    request = {'host': host_url.netloc.lower(), 'verb': SIGNAL_VERB[signal_type], 'path': unquoted_path, 'params': {'SignatureMethod': 'HmacSHA256', 'SignatureVersion': '2', 'AWSAccessKeyId': access_key, 'Timestamp': self.created_time.strftime('%Y-%m-%dT%H:%M:%SZ')}}
    signer = ec2_utils.Ec2Signer(secret_key)
    request['params']['Signature'] = signer.generate(request)
    qs = urlparse.urlencode(request['params'])
    url = ('%s%s?%s' % (signal_url.lower(), path, qs))
    self.data_set('ec2_signed_url', url)
    return url
