'Generates a presigned url
:type request_dict: dict
:param request_dict: The prepared request dictionary returned by
``botocore.awsrequest.prepare_request_dict()``
:type operation_name: str
:param operation_name: The operation being signed.
:type expires_in: int
:param expires_in: The number of seconds the presigned url is valid
for. By default it expires in an hour (3600 seconds)
:type region_name: string
:param region_name: The region name to sign the presigned url.
:type signing_name: str
:param signing_name: The name to use for the service when signing.
:returns: The presigned url'

def generate_presigned_url(self, request_dict, operation_name, expires_in=3600, region_name=None, signing_name=None):

    request = create_request_object(request_dict)
    self.sign(operation_name, request, region_name, 'presign-url', expires_in, signing_name)
    request.prepare()
    return request.url
