Bird
Raised Fist0
GCPcloud~5 mins

Eventarc for event routing in GCP - Commands & Configuration

Choose your learning style10 modes available
Introduction
Eventarc helps you send events from one place to another in Google Cloud. It makes sure your apps get the right messages when something important happens.
When you want to trigger a cloud function after a file is uploaded to Cloud Storage.
When you need to send notifications to different services after a database change.
When you want to connect events from multiple Google Cloud services to your app.
When you want to route events from custom sources to Cloud Run services.
When you want to build apps that react automatically to changes in your cloud environment.
Config File - eventarc-trigger.yaml
eventarc-trigger.yaml
apiVersion: eventarc.googleapis.com/v1
kind: Trigger
metadata:
  name: example-trigger
  namespace: default
spec:
  serviceAccount: example-service-account@my-project.iam.gserviceaccount.com
  destination:
    cloudRunService:
      service: example-service
      region: us-central1
  matchingCriteria:
  - attribute: type
    value: google.cloud.storage.object.v1.finalized
  transport:
    pubsub:
      topic: projects/my-project/topics/example-topic

This file creates an Eventarc trigger named example-trigger. It listens for new files finalized in Cloud Storage (google.cloud.storage.object.v1.finalized event type). When such an event happens, it sends the event to a Cloud Run service called example-service in the us-central1 region. The trigger uses a Pub/Sub topic example-topic to transport events securely. The serviceAccount defines permissions for the trigger to invoke the Cloud Run service.

Commands
This command creates an Eventarc trigger named 'example-trigger' in the 'us-central1' region. It listens for Cloud Storage file finalized events and sends them to the Cloud Run service 'example-service'. The service account is used to allow Eventarc to call the Cloud Run service.
Terminal
gcloud eventarc triggers create example-trigger --location=us-central1 --destination-run-service=example-service --destination-run-region=us-central1 --matching-criteria=type=google.cloud.storage.object.v1.finalized --service-account=example-service-account@my-project.iam.gserviceaccount.com
Expected OutputExpected
Created trigger [example-trigger].
→
--location - Specifies the region where the trigger is created.
→
--destination-run-service - Specifies the Cloud Run service to receive events.
→
--matching-criteria - Defines which events to listen for.
This command lists all Eventarc triggers in the 'us-central1' region to verify that 'example-trigger' was created successfully.
Terminal
gcloud eventarc triggers list --location=us-central1
Expected OutputExpected
NAME LOCATION DESTINATION example-trigger us-central1 example-service
→
--location - Filters triggers by region.
This command shows detailed information about the 'example-trigger' to check its configuration and status.
Terminal
gcloud eventarc triggers describe example-trigger --location=us-central1
Expected OutputExpected
name: projects/my-project/locations/us-central1/triggers/example-trigger uid: 12345678-1234-1234-1234-123456789abc createTime: '2024-06-01T12:00:00Z' updateTime: '2024-06-01T12:00:00Z' destination: cloudRunService: service: example-service region: us-central1 matchingCriteria: - attribute: type value: google.cloud.storage.object.v1.finalized serviceAccount: example-service-account@my-project.iam.gserviceaccount.com
→
--location - Specifies the region of the trigger.
Key Concept

If you remember nothing else from this pattern, remember: Eventarc connects events from cloud services to your apps automatically and securely.

Common Mistakes
Not specifying the correct event type in matching criteria.
The trigger will not listen to the events you expect, so your app won't react.
Use the exact event type string like 'google.cloud.storage.object.v1.finalized' for Cloud Storage file uploads.
Using a service account without proper permissions.
Eventarc cannot invoke the destination service, causing failures.
Ensure the service account has the 'roles/run.invoker' role on the Cloud Run service.
Creating the trigger in a different region than the Cloud Run service.
Eventarc triggers must be in the same region as the destination service.
Match the trigger's --location with the Cloud Run service's region.
Summary
Create an Eventarc trigger to listen for specific cloud events and route them to a Cloud Run service.
Verify the trigger creation by listing and describing it with gcloud commands.
Use correct event types, service accounts, and regions to ensure the trigger works properly.

Practice

(1/5)
1. What is the main purpose of Eventarc in Google Cloud?
easy
A. To create virtual machines for running applications
B. To store large amounts of data in the cloud
C. To route events from cloud services to your applications automatically
D. To manage user permissions and roles

Solution

  1. Step 1: Understand Eventarc's role

    Eventarc is designed to listen for events from various cloud services and route them to your applications automatically.
  2. Step 2: Compare options

    Options A, B, and D describe other cloud services like storage, compute, and IAM, which are not Eventarc's purpose.
  3. Final Answer:

    To route events from cloud services to your applications automatically -> Option C
  4. Quick Check:

    Event routing = To route events from cloud services to your applications automatically [OK]
Hint: Eventarc = automatic event routing to apps [OK]
Common Mistakes:
  • Confusing Eventarc with storage services
  • Thinking Eventarc manages virtual machines
  • Mixing Eventarc with user permission management
2. Which of the following is the correct way to create an Eventarc trigger using gcloud CLI?
easy
A. gcloud compute instances create my-trigger --zone=us-central1-a
B. gcloud eventarc triggers create my-trigger --destination-run-service=my-service --event-filters=type=google.cloud.pubsub.topic.v1.messagePublished
C. gcloud storage buckets create my-trigger --location=us-central1
D. gcloud iam roles create my-trigger --project=my-project

Solution

  1. Step 1: Identify Eventarc trigger creation syntax

    The correct command uses 'gcloud eventarc triggers create' with destination and event filters.
  2. Step 2: Eliminate unrelated commands

    Options B, C, and D relate to compute, storage, and IAM, not Eventarc triggers.
  3. Final Answer:

    gcloud eventarc triggers create my-trigger --destination-run-service=my-service --event-filters=type=google.cloud.pubsub.topic.v1.messagePublished -> Option B
  4. Quick Check:

    Eventarc trigger creation uses 'gcloud eventarc triggers create' [OK]
Hint: Eventarc triggers start with 'gcloud eventarc triggers create' [OK]
Common Mistakes:
  • Using compute or storage commands instead of eventarc
  • Missing event-filters parameter
  • Incorrect destination flag
3. Given this Eventarc trigger configuration snippet:
{
  "name": "projects/my-project/locations/us-central1/triggers/my-trigger",
  "destination": {
    "cloudRunService": {
      "service": "my-service",
      "region": "us-central1"
    }
  },
  "eventFilters": [
    {"attribute": "type", "value": "google.cloud.storage.object.v1.finalized"}
  ]
}

What event will this trigger listen for?
medium
A. New objects finalized (created) in Cloud Storage buckets
B. Messages published to Pub/Sub topics
C. Compute Engine instance start events
D. Cloud SQL database updates

Solution

  1. Step 1: Analyze eventFilters attribute

    The filter type is 'google.cloud.storage.object.v1.finalized', which means when a Cloud Storage object is finalized (created or overwritten).
  2. Step 2: Match event type to options

    This corresponds to new or updated objects in Cloud Storage buckets, not Pub/Sub, Compute Engine, or Cloud SQL events.
  3. Final Answer:

    New objects finalized (created) in Cloud Storage buckets -> Option A
  4. Quick Check:

    Storage object finalized event = New objects finalized (created) in Cloud Storage buckets [OK]
Hint: Storage object finalized event type ends with '.finalized' [OK]
Common Mistakes:
  • Confusing storage events with Pub/Sub messages
  • Assuming compute or database events
  • Ignoring eventFilters attribute
4. You created an Eventarc trigger but your Cloud Run service is not receiving events. Which of the following is the most likely cause?
medium
A. The trigger was created with the wrong gcloud project set
B. The Cloud Run service is in a different region than the trigger
C. The Cloud Run service has no CPU allocated
D. The trigger's event filter type does not match any events being emitted

Solution

  1. Step 1: Check event filter correctness

    If the event filter type does not match any events, no events will be routed to the service.
  2. Step 2: Consider other options

    While region mismatch or wrong project can cause issues, the most common cause is incorrect event filter type. CPU allocation does not prevent event delivery.
  3. Final Answer:

    The trigger's event filter type does not match any events being emitted -> Option D
  4. Quick Check:

    Event filter mismatch blocks events [OK]
Hint: Check event filter matches actual event types [OK]
Common Mistakes:
  • Ignoring event filter mismatch
  • Assuming CPU allocation affects event routing
  • Not verifying project and region settings
5. You want to build an event-driven app that reacts to both Cloud Storage object creations and Pub/Sub messages using Eventarc. What is the best way to configure triggers?
hard
A. Create two separate Eventarc triggers, one for Cloud Storage events and one for Pub/Sub events, both targeting the same Cloud Run service
B. Create a single Eventarc trigger with multiple event filters for both Cloud Storage and Pub/Sub events
C. Create one trigger for Cloud Storage and configure Pub/Sub to push messages directly to Cloud Run without Eventarc
D. Use Cloud Scheduler to poll both services and send events to Cloud Run

Solution

  1. Step 1: Understand Eventarc trigger event filters

    Each Eventarc trigger supports filtering on one event type. To listen to multiple event types, separate triggers are needed.
  2. Step 2: Evaluate options

    Create a single Eventarc trigger with multiple event filters for both Cloud Storage and Pub/Sub events is invalid because a single trigger cannot filter multiple event types. Create one trigger for Cloud Storage and configure Pub/Sub to push messages directly to Cloud Run without Eventarc bypasses Eventarc for Pub/Sub, losing unified routing. Use Cloud Scheduler to poll both services and send events to Cloud Run is unrelated to Eventarc and less efficient.
  3. Final Answer:

    Create two separate Eventarc triggers, one for Cloud Storage events and one for Pub/Sub events, both targeting the same Cloud Run service -> Option A
  4. Quick Check:

    Multiple event types = multiple triggers [OK]
Hint: Use one trigger per event type for multiple events [OK]
Common Mistakes:
  • Trying to use one trigger for multiple event types
  • Bypassing Eventarc for some events
  • Using polling instead of event routing
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