Bird
Raised Fist0
GCPcloud~10 mins

Cloud Functions with Pub/Sub triggers in GCP - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to specify the trigger type for a Cloud Function.

GCP
gcloud functions deploy myFunction --gen2 --trigger-[1] my-topic --runtime python312
Drag options to blanks, or click blank then click option'
Ahttp
Beventarc
Cpubsub
Dstorage
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'http' instead of 'pubsub' for Pub/Sub triggers.
Confusing storage triggers with Pub/Sub triggers.
2fill in blank
medium

Complete the code to specify the Pub/Sub topic name for the trigger.

GCP
gcloud functions deploy myFunction --gen2 --trigger-pubsub [1] --runtime python312
Drag options to blanks, or click blank then click option'
Aprojects/my-project/topics/my-topic
Bmy-topic
Cprojects/my-project/my-topic
Dtopics/my-topic
Attempts:
3 left
💡 Hint
Common Mistakes
Using only the topic name without the full path.
Omitting the 'topics' part in the path.
3fill in blank
hard

Fix the error in the function code to correctly decode the Pub/Sub message data.

GCP
def my_function(event, context):
    import base64
    message = base64.b64decode(event['message']['[1]']).decode('utf-8')
    print(f"Received message: {message}")
Drag options to blanks, or click blank then click option'
Amessage
Battributes
Cpayload
Ddata
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'message' or 'payload' instead of 'data'.
Trying to decode a non-existent key.
4fill in blank
hard

Fill both blanks to create a Cloud Function that logs the message ID and publish time.

GCP
def my_function(event, context):
    message_id = event['message']['[1]']
    publish_time = event['message']['[2]']
    print(f"Message ID: {message_id}, Published at: {publish_time}")
Drag options to blanks, or click blank then click option'
Aevent_id
Btimestamp
CpublishTime
DmessageId
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'event_id' instead of 'messageId'.
Using 'timestamp' instead of 'publishTime'.
5fill in blank
hard

Fill all three blanks to deploy a Cloud Function with a Pub/Sub trigger, specifying the runtime and entry point.

GCP
gcloud functions deploy [1] --gen2 --runtime [2] --trigger-pubsub [3] --entry-point my_function
Drag options to blanks, or click blank then click option'
AmyFunction
Bpython312
Cprojects/my-project/topics/my-topic
Dnodejs20
Attempts:
3 left
💡 Hint
Common Mistakes
Using a runtime that does not match the language.
Omitting the full topic path.

Practice

(1/5)
1. What happens when a Google Cloud Function is triggered by a Pub/Sub message?
easy
A. The function runs automatically when a new message arrives on the Pub/Sub topic.
B. The function must be manually started after the message is published.
C. The function only runs if the message contains a specific keyword.
D. The function runs only once a day regardless of messages.

Solution

  1. Step 1: Understand Pub/Sub trigger behavior

    Cloud Functions connected to Pub/Sub topics run automatically when a new message is published to that topic.
  2. Step 2: Confirm automatic execution

    There is no need for manual start or keyword filtering by default; the function triggers on every message.
  3. Final Answer:

    The function runs automatically when a new message arrives on the Pub/Sub topic. -> Option A
  4. Quick Check:

    Pub/Sub triggers auto-run functions on new messages [OK]
Hint: Pub/Sub triggers run functions automatically on new messages [OK]
Common Mistakes:
  • Thinking the function needs manual start
  • Assuming filtering happens automatically
  • Believing the function runs on a schedule
2. Which of the following is the correct way to declare a Cloud Function triggered by Pub/Sub in Node.js?
easy
A. exports.myFunction = (event, context) => { console.log(event.data); };
B. function myFunction(pubsubMessage) { console.log(pubsubMessage.data); }
C. exports.myFunction = (req, res) => { res.send('Hello'); };
D. function myFunction(event) { return event.data; }

Solution

  1. Step 1: Identify correct Cloud Function signature for Pub/Sub

    In Node.js, a Pub/Sub triggered function uses (event, context) parameters, where event.data contains the message.
  2. Step 2: Check options for correct syntax

    exports.myFunction = (event, context) => { console.log(event.data); }; uses exports with (event, context) and accesses event.data correctly. Others either use wrong parameters or HTTP function style.
  3. Final Answer:

    exports.myFunction = (event, context) => { console.log(event.data); }; -> Option A
  4. Quick Check:

    Pub/Sub functions use (event, context) signature [OK]
Hint: Pub/Sub functions use (event, context) parameters in Node.js [OK]
Common Mistakes:
  • Using HTTP function signature (req, res)
  • Missing exports keyword
  • Using wrong parameter names
3. Given this Python Cloud Function triggered by Pub/Sub:
def hello_pubsub(event, context):
    import base64
    message = base64.b64decode(event['data']).decode('utf-8')
    print(f'Received message: {message}')

What will be printed if the Pub/Sub message data is base64 encoding of 'Hello World'?
medium
A. Received message: event['data']
B. Received message: b'Hello World'
C. Received message: Hello World
D. Error: base64 decoding failed

Solution

  1. Step 1: Decode base64 message data

    The function decodes event['data'] from base64 to bytes, then decodes bytes to UTF-8 string.
  2. Step 2: Print the decoded message

    The decoded string is 'Hello World', so the print statement outputs 'Received message: Hello World'.
  3. Final Answer:

    Received message: Hello World -> Option C
  4. Quick Check:

    Base64 decode then UTF-8 decode gives original message [OK]
Hint: Base64 decode Pub/Sub data to get original message text [OK]
Common Mistakes:
  • Printing raw base64 string instead of decoded
  • Forgetting to decode bytes to string
  • Assuming event['data'] is plain text
4. You deployed a Cloud Function triggered by Pub/Sub, but it never runs when messages are published. What is the most likely cause?
medium
A. Cloud Functions do not support Pub/Sub triggers.
B. The function code has a syntax error.
C. The Pub/Sub topic is empty and cannot trigger functions.
D. The function is not subscribed to the correct Pub/Sub topic.

Solution

  1. Step 1: Check Pub/Sub subscription linkage

    If the function is not linked to the correct Pub/Sub topic, it will not trigger on published messages.
  2. Step 2: Eliminate other causes

    Syntax errors cause deployment failure, empty topics can still trigger if messages arrive, and Cloud Functions do support Pub/Sub triggers.
  3. Final Answer:

    The function is not subscribed to the correct Pub/Sub topic. -> Option D
  4. Quick Check:

    Correct topic subscription is required for triggers [OK]
Hint: Verify function subscribes to the right Pub/Sub topic [OK]
Common Mistakes:
  • Assuming empty topic blocks triggers
  • Ignoring subscription configuration
  • Thinking Cloud Functions lack Pub/Sub support
5. You want to ensure your Cloud Function triggered by Pub/Sub processes messages exactly once, even if Pub/Sub retries delivery. What is the best approach?
hard
A. Disable retries in Pub/Sub settings to avoid duplicate triggers.
B. Implement idempotent processing in the function using unique message IDs.
C. Use a global variable in the function to track processed messages.
D. Rely on Pub/Sub to guarantee exactly-once delivery automatically.

Solution

  1. Step 1: Understand Pub/Sub delivery guarantees

    Pub/Sub guarantees at-least-once delivery, so duplicates can occur if retries happen.
  2. Step 2: Implement idempotency in function

    To handle duplicates, the function should process messages idempotently, often by checking unique message IDs to avoid repeated work.
  3. Step 3: Evaluate other options

    Disabling retries risks message loss, global variables don't persist across executions, and Pub/Sub does not guarantee exactly-once delivery by itself.
  4. Final Answer:

    Implement idempotent processing in the function using unique message IDs. -> Option B
  5. Quick Check:

    Idempotent code handles retries safely [OK]
Hint: Make function idempotent using message IDs to avoid duplicates [OK]
Common Mistakes:
  • Expecting Pub/Sub to do exactly-once delivery
  • Disabling retries risking lost messages
  • Using non-persistent variables for tracking
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard