Each event source, event target, and Eventarc trigger has its own ___location. Sometimes, these locations must match; at other times, they can be different. For more information, see Eventarc locations.
Source ___location
The ___location of the event source often dictates the trigger ___location. In the
following example, since the Cloud Storage bucket is in the europe-west1
region, the trigger must also be located in europe-west1
.
gcloud eventarc triggers create trigger-storage \
--destination-run-service=hello \
--destination-run-region=us-central1 \
--___location=europe-west1 \
--event-filters="type=google.cloud.storage.object.v1.finalized" \
--event-filters="bucket=my-bucket-in-europe-west1-region" \
--service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com
Target ___location
When deploying your event target (for example, a Cloud Run service),
you choose a supported region as its ___location. Typically, for latency and data
locality reasons, you want this to be in the same region as your event source.
However, it is not a requirement and in the preceding example, the event source
is in europe-west1
while the --destination-run-region
flag indicates that
the event target is in us-central1
.
Trigger ___location
Additionally, the type of Eventarc trigger you create impacts the
___location of the trigger which is specified through the --___location
flag:
Cloud Audit Logs
Using Cloud Audit Logs triggers, you can connect any event source that emits audit logs to an event target. Cloud Audit Logs triggers are available in single-region locations and you can also create a global Eventarc trigger; however, triggers are not supported in dual-region and multi-region locations.
The ___location of the event source dictates the trigger ___location. Typically,
this is a single-region ___location. For example, to capture Cloud Storage
events from a bucket in the europe-west1
region with an audit logs trigger,
create a trigger in the same ___location:
gcloud eventarc triggers create trigger-auditlog \
--destination-run-service=hello \
--destination-run-region=us-central1 \
--___location=europe-west1 \
--event-filters="type=google.cloud.audit.log.v1.written" \
--event-filters="serviceName=storage.googleapis.com" \
--event-filters="methodName=storage.objects.create" \
--service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com
As there's no filtering by bucket when you use a Cloud Audit Logs
trigger, this will match all buckets in the europe-west1
region. (To filter
by bucket, you can instead use a direct Cloud Storage trigger.)
Or, to match a dual-region or multi-region bucket such as eu
, you can
create a trigger with a global
___location and this will match all buckets in
all regions for which the event filters match:
gcloud eventarc triggers create trigger-storage \
--destination-run-service=hello \
--destination-run-region=us-central1 \
--___location=global \
--event-filters="type=google.cloud.storage.object.v1.finalized" \
--event-filters="bucket=my-bucket-in-europe-west1-region" \
--service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com
Cloud Storage
Cloud Storage triggers respond to events inside a Cloud Storage bucket—object creation, deletion, archiving, and metadata updates. Cloud Storage triggers are available in single-region, dual-region, and multi-region locations; you cannot create a global Eventarc trigger.
The ___location of the Cloud Storage bucket dictates the ___location of
the Eventarc trigger, and they must match. In the following
example, the trigger ___location matches that of the Cloud Storage
bucket (the eu
multi-region ___location):
gcloud eventarc triggers create trigger-storage \
--destination-run-service=hello \
--destination-run-region=us-central1 \
--___location=eu \
--event-filters="type=google.cloud.storage.object.v1.finalized" \
--event-filters="bucket=my-bucket-in-eu-multi-region" \
--service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com
If the bucket and trigger regions don't match, you will see an error similar to the following:
ERROR: (gcloud.eventarc.triggers.create) INVALID_ARGUMENT: The request was
invalid: Bucket "my-bucket-in-eu-multi-region" ___location "eu" does not match
trigger ___location "europe-west1". Try again by creating the trigger in "eu".
Pub/Sub
A Pub/Sub trigger connects a Pub/Sub topic to an event target. Pub/Sub triggers are only available in single-region locations and you cannot create a global Eventarc trigger.
Although Pub/Sub topics are global and not tied to a
single region, when you create a Pub/Sub trigger, you
must specify a region for it using the --___location
flag:
gcloud eventarc triggers create trigger-pubsub \
--destination-run-service=hello \
--destination-run-region=us-central1 \
--___location=us-central1 \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
--transport-topic=projects/your-projectid/topics/your-topic
Eventarc configures geofencing so that Pub/Sub events persist only in the specified ___location. You can also use regional Pub/Sub service endpoints to publish to the topic so that all of the data stays in a single region.
What's next
- To learn how to route events across Google Cloud projects, see the tutorial.