run a single function

export GCLOUD_PROJECT="XXX"
export GOOGLE_ACCOUNT="your@email.com"
echo "GOOGLE_ACCOUNT=$GOOGLE_ACCOUNT"
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/.config/gcloud/legacy_credentials/${GOOGLE_ACCOUNT}/adc.json
export YOUR_ENV_VAR="foo"

pip3 install functions-framework
functions-framework --source ./path/to/yuor/main.py --target your_python_function_name --debug

run a custom api functions/run_functions_locally.py

from flask import Flask, request
from my_function_a.main import my_python_function_a
from my_function_b.main import my_python_function_b


app = Flask(__name__)



@app.route('/')
def index():
return 'Index Page'



@app.get('/api/a')
def get_a():
return my_python_function_a(request)




@app.post('/api/b')
def post_b():
return my_python_function_b(request)

functions/my_python_function_a/main.py

import functions_framework


YOUR_ENV_VAR = os.getenv("YOUR_ENV_VAR")

@functions_framework.http
def my_python_function_b(request):
headers = {
'Access-Control-Allow-Origin': '*',
}
return "hello from function a YOUR_ENV_VAR=" + YOUR_ENV_VAR, 200, headers

functions/my_python_function_b/main.py

import functions_framework

YOUR_ENV_VAR = os.getenv("YOUR_ENV_VAR")

@functions_framework.http
def my_python_function_b(request):
headers = {
'Access-Control-Allow-Origin': '*',
}
return "hello from function a YOUR_ENV_VAR=" + YOUR_ENV_VAR, 200, headers

run

export GCLOUD_PROJECT="XXX"
export GOOGLE_ACCOUNT="your@email.com"
echo "GOOGLE_ACCOUNT=$GOOGLE_ACCOUNT"
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/.config/gcloud/legacy_credentials/${GOOGLE_ACCOUNT}/adc.json
export YOUR_ENV_VAR="foo"

pip3 install flask
flask --app ./api-stack/functions/run_functions_locally run

curl

curl -X GET http://127.0.0.1:5000/api/a

curl -X POST -H "Content-Type: application/json" --data '{"foo":"bar"}' http://127.0.0.1:5000/api/b

inspiration: