This is my third and final article looking at new features in Google Cloud functions as Google starts to narrow the gap to Amazon’s AWS Lambda product. Until recently Node.js 6 was the only option for writing Google Cloud functions. That’s changed now with the addition of Node.js 8 (read my article) and Python 3 runtimes available in public beta. (Later update: you can also now write Cloud functions in Go – see my article).
Let’s take a look at how to use the Python environment by deploying a HTTP function that performs the same task as my Node.js 8 Cloud Functions demo does. We’ll use the
requests library and randomuser.me API to output a JSON object representing data about a single user, then add one extra key named
Items of note here include:
- The Python runtime uses Python 3.7.0
- Your functions have to live in a file called
- The functions are executed within the Flask framework
- The function’s
requestargument will be a Flask
- The function must return anything that can be made into a Flask response object using Flask’s
make_response— in this case, we pass a JSON string
- Dependencies are specified in
requirements.txtwhich looks like this for our example (version numbers can also be specified e.g.
(Flask is provided as part of the environment, so isn’t listed here).
When deploying this function we have to tell Google to use the Python 3 runtime. To do this we’ll need to make sure we have the latest
gcloud beta commands:
$ gcloud components update $ gcloud components install beta
Deployment is simple (we have to use the
beta commands and explicitly say we want the Python runtime):
$ gcloud beta functions deploy getUserDetails --runtime python37 --trigger-http --project <projectId>
<projectId> is the ID of your Google Cloud project. The function can be invoked simply by visiting its URL which will look something like:
<projectId> will depend on your Google Cloud project setup, and the gcloud command will display the full invocation URL for your function at the end of a successful deployment.
The output looks like this:
The Cloud Functions console also shows that the function is using the Python runtime:
And that’s all there is to it!
Thanks for reading, please give me a follow on Twitter if you’d like to see more in future! I write about a range of technologies including Node.js, Go, Python, Raspberry Pi and Amazon Alexa.