Google Cloud Functions: Basics
Posted by Kyle Pericak in cloud
This post covers getting started with a very simple Google Cloud Functions API,
a great serverless solution with affordable pricing. This API will pull the
IP address from the HTTP request, and return Hello <source IP>
.
Pricing Details
Cloud Functions pricing is pretty affordable for most use cases, assuming you write your functions in such a way that they don't get invoked a few too many millions of times.
Check the official Google docs for accurate and up-to-date pricing, but here's what it looked like at the time of my writing this.
Pricing is broken into a few fees:
- Invocations: A flat fee per function execution. $0.0000004 per invocation, excluding the first 2 million.
- Compute Time: At the lowest clock speed (200MHz x 128MB RAM), compute costs $0.000000231/100ms, ceil 100.
- Networking: $0.12/GB egress for data, while ingress is free.
Deploy Hello World Function
Open Google Cloud Functions in your browser.
Create a function. - Name: HelloWorld - Memory Allocated: 128 MB - Trigger: HTTP - Authentication: Allow unauthenticated invocations - Source code: Inline Editor - Runtime: Python 3.7 - Other settings: Leave them as defaults
main.py
The API function defined by Function to execute
accepts a
flask.Request
argument.
def hello_world(request):
"""" Return a Hello message to sender of the API call """
return 'Hello {}!'.format(request.remote_addr)
requirements.py
You can leave this blank. It's a list of libraries that will be used.
Accessing the Function
From the Console Web UI
- Navigate to the Functions page.
- Click on the 3 dots next to the function name, and choose "Test function".
- Populate and JSON for the GET request in "Triggering event". The above
example doesn't accept any input data so
{}
is all you need. - Click "Test the function"
From the Request URL
- Navigate to the Functions page.
- Click the function's name to navigate to the "Function details" page
- Go to the 'Trigger" tab
- Find the URL. Copy it.
You can now test the URL with curl, your browser, httpie, python, etc.
https://<region>-<project>.cloudfunctions.net/HelloWorld