**Overview**

In AWS it is possible to trigger step functions through an API Gateway integration, see https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-api-gateway.html

Similar integrations already occur within localstack, however the step function URIs are notably missing. See lines 66-88 of https://github.com/localstack/localstack/blob/master/localstack/services/apigateway/apigateway_listener.py



┆Issue is synchronized with this [Jira Bug](https://localstack.atlassian.net/browse/LOC-107) by [Unito](https://www.unito.io/learn-more)

if integration_type in ['AWS', 'AWS_PROXY']:
            func_arn = uri.split(':lambda:path')[1].split('functions/')[1].split('/invocations')[0]
            data_str = json.dumps(data) if isinstance(data, (dict, list)) else to_str(data)
            try:
                path_params = extract_path_params(path=relative_path, extracted_path=extracted_path)
            except Exception:
                path_params = {}
            
            data_str = apply_template(integration, 'request', data_str, path_params=path_params,
                query_params=query_string_params, headers=headers)
            
            
            request_context = get_lambda_event_request_context(method, path, data, headers,
                integration_uri=uri, resource_id=resource.get('id'))
            result = lambda_api.process_apigateway_invocation(func_arn, relative_path, data_str,
                stage, api_id, headers, path_params=path_params, query_string_params=query_string_params,
                method=method, resource_path=path, request_context=request_context, event_context=context)
            if isinstance(result, FlaskResponse):
                response = flask_to_requests_response(result)
            elif isinstance(result, Response):
                response = result
            else:
                response = LambdaResponse()
                parsed_result = result if isinstance(result, dict) else json.loads(str(result or '{}'))
                parsed_result = common.json_safe(parsed_result)
                parsed_result = {} if parsed_result is None else parsed_result
                response.status_code = int(parsed_result.get('statusCode', 200))
                parsed_headers = parsed_result.get('headers', {})
                if parsed_headers is not None:
                    response.headers.update(parsed_headers)