Powering Google Cloud APIs with Cloud Functions

30 minutes
  • 8 Learning Objectives

About this Hands-on Lab

One of the most powerful aspects of the Cloud Functions service is its flexibility while working with other Google Cloud services, including some of the most advanced APIs. Not only can your function be triggered by multiple sources, you can include multiple functions all in the app. This lab illustrates a perfect example of that flexibility. Here, we will take a photo that has been uploaded, examine it for text, extract any text that is found, translate that text into various languages, and then store those translations for easy retrieval. Sounds like a lot, doesn’t it? Well, as we’ll experience firsthand in this lab, Cloud Functions can handle it all.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Enable APIs and services.
  1. From the main Google Cloud console navigation, choose APIs & Services > Library.
  2. Search for Cloud Functions API, and enable the service, if necessary.
  3. Return to the API Library page, search for Cloud Vision API, and enable it, if necessary.
  4. Return to the API Library page, search for Cloud Translation API, and enable it, if necessary.
Create the required buckets.
  1. From the main navigation, go to Storage > Browser.
  2. Choose Create bucket.
  3. In the Name field, enter a unique name for the bucket to hold the incoming image.
  4. From the Default storage class options, choose Regional.
  5. Leave the remaining values as their defaults, and click Create.
  6. Repeat steps 2–5 to create a bucket to hold the resulting translations.
Create the required Pub/Sub topics.
  1. From the main console navigation, go to Pub/Sub > Topics.
  2. Click Create a topic.
  3. In the dialog, enter the name la-image-to-text-results for the topic.
  4. Click Create.
  5. Repeat steps 2–4 to create another topic with the name la-image-to-text-translation.
Retrieve files from repo and configure.
  1. Activate the Cloud Shell.
  2. From the Cloud Shell, issue the following command to clone the repository for this course:

    git clone https://github.com/linuxacademy/content-gc-functions-deepdive
  3. Change directory to the lab folder:
    cd content-gc-functions-deepdive/cloud-functions-apis-lab
  4. Open the Cloud Shell Editor by clicking the pencil icon.
  5. Navigate to the cloud-functions-apis-lab folder, and open the two files there.
  6. In the main.py file, on line 34, change the RESULT_BUCKET value to match the name of the bucket intended to hold your translation results.
  7. Save the file.
Create first function.
  1. Navigate to the Cloud Functions dashboard.
  2. Click Create function.
  3. Apply the following settings:
    • Name: ocr-extract
    • Trigger: Cloud Storage
    • Bucket: Your storage bucket for incoming files
    • Source code: Inline editor
    • Runtime: Python 3.7
  4. From the Cloud Shell Editor, select all of the main.py code, and copy it.
  5. In the main.py field of the function, paste the copied code.
  6. From the Cloud Shell Editor, open requirements.txt, and copy all.
  7. In the requirements.txt field of the function, paste the copied code.
  8. In the Function to execute field, enter process_image.
  9. Click Create.
Create second function.
  1. Navigate to the Cloud Functions dashboard.
  2. Click Create function.
  3. Apply the following settings:
    • Name: ocr-translate
    • Trigger: Cloud Pub/Sub
    • Topic: la-image-to-text-translation
    • Source code: Inline editor
    • Runtime: Python 3.7
  4. From the Cloud Shell Editor, select all of the main.py code, and copy it.
  5. In the main.py field of the function, paste the copied code.
  6. From the Cloud Shell Editor, open requirements.txt, and copy all.
  7. In the requirements.txt field of the function, paste the copied code.
  8. In the Function to execute field, enter translate_text.
  9. Click Create.
Create third function.
  1. Navigate to the Cloud Functions dashboard.
  2. Click Create function.
  3. Apply the following settings:
    • Name: ocr-save
    • Trigger: Cloud Pub/Sub
    • Topic: la-image-to-text-results
    • Source code: Inline editor
    • Runtime: Python 3.7
  4. From the Cloud Shell Editor, select all of the main.py code, and copy it.
  5. In the main.py field of the function, paste the copied code.
  6. From the Cloud Shell Editor, open requirements.txt, and copy all.
  7. In the requirements.txt field of the function, paste the copied code.
  8. In the Function to execute field, enter save_result.
  9. Click Create.
Test in Cloud Shell and review results.
  1. In the Cloud Shell, issue the following commands:
    cd images
    ls
    gsutil cp sign.png gs://<BUCKET_NAME>
    gsutil cp menu.jpg gs://<BUCKET_NAME>
  2. From the console, navigate to Storage > Browser.
  3. Open your bucket that contains the translated results.
  4. Open any generated files.

Additional Resources

Your company is expanding globally and needs a way to translate text in images into multiple languages. You’ve been given the job of working with Cloud Functions to automatically extract the text from an uploaded image, translate it into six different languages, and then store the results in Cloud Storage.

You’ll need to accomplish the following steps to complete your task:

  1. Enable APIs.
  2. Create Cloud Storage buckets.
  3. Create Cloud Pub/Sub topics.
  4. Create and deploy Cloud Functions.
  5. Upload image to initiate test.
  6. View results.

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!

Get Started
Who’s going to be learning?