Pub/Sub with Cloud Functions integration in GCP - Commands & Configuration
exports.helloPubSub = (message, context) => {
const pubsubMessage = message.data
? Buffer.from(message.data, 'base64').toString('utf-8')
: 'Hello, World';
console.log(pubsubMessage);
};This is a simple Cloud Function written in JavaScript that triggers when a Pub/Sub message arrives.
exports.helloPubSub: The function name that GCP uses to run this code.
message.data: The message content, encoded in base64, decoded to a string.
console.log: Prints the message content to the function logs.
gcloud pubsub topics create example-topic
gcloud functions deploy helloPubSub --runtime nodejs18 --trigger-topic example-topic --entry-point helloPubSub --region us-central1
--runtime - Specifies the language runtime version.--trigger-topic - Sets the Pub/Sub topic that triggers the function.--entry-point - Specifies the exported function name in the code.gcloud pubsub topics publish example-topic --message "Hello from Pub/Sub!"--message - The message content to send.gcloud functions logs read helloPubSub --region us-central1 --limit 5
--limit - Limits the number of log entries shown.If you remember nothing else from this pattern, remember: Pub/Sub sends messages and Cloud Functions run your code automatically when those messages arrive.
Practice
What is the main role of Google Cloud Pub/Sub when integrated with Cloud Functions?
Solution
Step 1: Understand Pub/Sub's purpose
Pub/Sub is designed to send messages between parts of an app, acting as a messenger.Step 2: Connect Pub/Sub with Cloud Functions
Cloud Functions run code automatically when they receive messages from Pub/Sub.Final Answer:
To send messages that trigger Cloud Functions automatically -> Option AQuick Check:
Pub/Sub triggers Cloud Functions [OK]
- Thinking Pub/Sub stores files
- Confusing Pub/Sub with UI or authentication
- Assuming Cloud Functions manage user login
Which of the following is the correct way to specify a Pub/Sub trigger in a Cloud Function deployment command?
gcloud functions deploy myFunction --trigger-?
Solution
Step 1: Identify the trigger type for Pub/Sub
Pub/Sub triggers require specifying the topic name with --trigger-topic.Step 2: Match the correct flag
--trigger-topic is the correct flag; others relate to storage or HTTP triggers.Final Answer:
--trigger-topic my-topic -> Option CQuick Check:
Pub/Sub trigger uses --trigger-topic [OK]
- Using --trigger-bucket which is for Cloud Storage
- Using --trigger-http which is for HTTP triggers
- Confusing event triggers with topic triggers
Given this Cloud Function code triggered by Pub/Sub messages, what will be logged when a message with data "Hello" is published?
def hello_pubsub(event, context):
import base64
message = base64.b64decode(event['data']).decode('utf-8')
print(f"Received message: {message}")Solution
Step 1: Decode the Pub/Sub message data
The message data is base64 encoded; decoding it gives the original string "Hello".Step 2: Print the decoded message
The print statement outputs "Received message: Hello" exactly.Final Answer:
Received message: Hello -> Option BQuick Check:
Base64 decode then print = Received message: Hello [OK]
- Printing raw base64 bytes instead of decoded string
- Using event['data'] directly without decoding
- Assuming 'data' key is missing
What is the likely cause if a Cloud Function triggered by Pub/Sub never runs after publishing messages?
Solution
Step 1: Check the Cloud Function trigger configuration
If the function is not subscribed to the right topic, it won't receive messages.Step 2: Rule out other causes
Syntax errors cause deployment failure, not silent no-run; topic existence is needed but usually checked; memory size doesn't stop triggers.Final Answer:
The Cloud Function is not subscribed to the correct Pub/Sub topic -> Option AQuick Check:
Wrong topic subscription = no trigger [OK]
- Assuming syntax error causes silent no-run
- Ignoring topic existence or permissions
- Blaming memory size for trigger issues
You want to build a system where multiple Cloud Functions react independently to the same Pub/Sub messages. What is the best way to set this up?
Solution
Step 1: Understand Pub/Sub fan-out pattern
One topic can have multiple subscriptions; each subscription can trigger a different Cloud Function independently.Step 2: Compare options
Multiple topics add complexity; one function calling others is indirect; publishing multiple times is inefficient.Final Answer:
Create one Pub/Sub topic and multiple subscriptions, each triggering a different Cloud Function -> Option DQuick Check:
One topic, many subscriptions = multiple triggers [OK]
- Creating many topics unnecessarily
- Using one function to call others instead of triggers
- Publishing duplicate messages to multiple topics
Ready to prove it?
Pass the test and this pattern moves unknown
