Skip to content

Commit 7be6d77

Browse files
authored
Merge branch 'main' into db-roles
2 parents 4357378 + a30c061 commit 7be6d77

File tree

3 files changed

+189
-21
lines changed

3 files changed

+189
-21
lines changed

eventarc/advanced/main.tf

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
/**
2+
* Copyright 2026 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
# [START eventarc_advanced_parent_tag]
18+
# [START eventarc_advanced_terraform_enableapis]
19+
# Enable APIs
20+
resource "google_project_service" "apis" {
21+
for_each = toset([
22+
"eventarc.googleapis.com",
23+
"eventarcpublishing.googleapis.com",
24+
"run.googleapis.com"
25+
])
26+
service = each.key
27+
disable_on_destroy = false
28+
}
29+
# [END eventarc_advanced_terraform_enableapis]
30+
31+
# [START eventarc_advanced_terraform_iam]
32+
# Used to retrieve project information later
33+
data "google_project" "project" {}
34+
35+
# Create a dedicated service account
36+
resource "google_service_account" "default" {
37+
account_id = "eventarc-advanced-sa"
38+
display_name = "Eventarc Advanced quickstart service account"
39+
}
40+
41+
# Grant permission to receive Eventarc events
42+
resource "google_project_iam_member" "eventreceiver" {
43+
project = data.google_project.project.id
44+
role = "roles/eventarc.eventReceiver"
45+
member = "serviceAccount:${google_service_account.default.email}"
46+
}
47+
48+
# Grant permission to invoke Cloud Run services
49+
resource "google_project_iam_member" "runinvoker" {
50+
project = data.google_project.project.id
51+
role = "roles/run.invoker"
52+
member = "serviceAccount:${google_service_account.default.email}"
53+
}
54+
# [END eventarc_advanced_terraform_iam]
55+
56+
# [START eventarc_advanced_terraform_deploy_run]
57+
# Deploy Cloud Run service
58+
resource "google_cloud_run_v2_service" "default" {
59+
name = "example-service"
60+
location = "us-central1"
61+
62+
deletion_protection = false # set to "true" in production
63+
64+
template {
65+
containers {
66+
# This sample container listens to HTTP requests and logs received events
67+
image = "us-docker.pkg.dev/cloudrun/container/hello"
68+
}
69+
service_account = google_service_account.default.email
70+
}
71+
72+
depends_on = [google_project_service.apis]
73+
}
74+
# [END eventarc_advanced_terraform_deploy_run]
75+
76+
# [START eventarc_advanced_terraform_bus]
77+
# Create an Eventarc Advanced bus
78+
resource "google_eventarc_message_bus" "default" {
79+
location = "us-central1"
80+
message_bus_id = "example-bus"
81+
}
82+
# [END eventarc_advanced_terraform_bus]
83+
84+
# [START eventarc_advanced_terraform_google_source]
85+
# Enable events from Google API sources
86+
resource "google_eventarc_google_api_source" "default" {
87+
location = "us-central1"
88+
google_api_source_id = "example-google-api-source"
89+
destination = google_eventarc_message_bus.default.id
90+
}
91+
# [END eventarc_advanced_terraform_google_source]
92+
93+
# [START eventarc_advanced_terraform_pipeline]
94+
# Create an Eventarc Advanced pipeline
95+
resource "google_eventarc_pipeline" "default" {
96+
location = "us-central1"
97+
pipeline_id = "example-pipeline"
98+
destinations {
99+
http_endpoint {
100+
uri = google_cloud_run_v2_service.default.uri
101+
}
102+
authentication_config {
103+
google_oidc {
104+
service_account = google_service_account.default.email
105+
}
106+
}
107+
}
108+
}
109+
# [END eventarc_advanced_terraform_pipeline]
110+
111+
# [START eventarc_advanced_terraform_enrollment]
112+
# Create an Eventarc Advanced enrollment
113+
resource "google_eventarc_enrollment" "default" {
114+
location = "us-central1"
115+
enrollment_id = "example-enrollment"
116+
message_bus = google_eventarc_message_bus.default.id
117+
destination = google_eventarc_pipeline.default.id
118+
cel_match = "message.type == 'google.cloud.workflows.workflow.v1.created'"
119+
}
120+
# [END eventarc_advanced_terraform_enrollment]
121+
# [END eventarc_advanced_parent_tag]

eventarc/basic_pubsub/main.tf

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -36,29 +36,28 @@ resource "google_project_service" "pubsub" {
3636
# [END eventarc_basic_pubsub_enableapis]
3737

3838
# [START eventarc_basic_pubsub_iam]
39-
# Used to retrieve project information later
40-
data "google_project" "project" {}
41-
4239
# Create a dedicated service account
4340
resource "google_service_account" "eventarc" {
4441
account_id = "eventarc-trigger-sa"
4542
display_name = "Eventarc trigger service account"
4643
}
44+
# [END eventarc_basic_pubsub_iam]
4745

48-
# Grant permission to invoke Cloud Run services
49-
resource "google_project_iam_member" "runinvoker" {
50-
project = data.google_project.project.id
51-
role = "roles/run.invoker"
52-
member = "serviceAccount:${google_service_account.eventarc.email}"
46+
# [START eventarc_basic_pubsub_topic]
47+
# Create a Pub/Sub topic
48+
resource "google_pubsub_topic" "default" {
49+
name = "pubsub_topic"
5350
}
5451

5552
# Grant permission to publish messages to a Pub/Sub topic
56-
resource "google_project_iam_member" "pubsubpublisher" {
57-
project = data.google_project.project.id
58-
member = "serviceAccount:${google_service_account.eventarc.email}"
59-
role = "roles/pubsub.publisher"
53+
resource "google_pubsub_topic_iam_member" "pubsubpublisher" {
54+
project = google_pubsub_topic.default.project
55+
topic = google_pubsub_topic.default.name
56+
member = "serviceAccount:${google_service_account.eventarc.email}"
57+
role = "roles/pubsub.publisher"
58+
depends_on = [google_pubsub_topic.default]
6059
}
61-
# [END eventarc_basic_pubsub_iam]
60+
# [END eventarc_basic_pubsub_topic]
6261

6362
# [START eventarc_basic_pubsub_deploy_cloud_run]
6463
# Deploy a Cloud Run service
@@ -70,22 +69,25 @@ resource "google_cloud_run_v2_service" "default" {
7069

7170
template {
7271
containers {
73-
# This container will log received events
72+
# This sample container listens to HTTP requests and logs received events
7473
image = "us-docker.pkg.dev/cloudrun/container/hello"
7574
}
7675
service_account = google_service_account.eventarc.email
7776
}
7877

7978
depends_on = [google_project_service.run]
8079
}
81-
# [END eventarc_basic_pubsub_deploy_cloud_run]
8280

83-
# [START eventarc_basic_pubsub_topic]
84-
# Create a Pub/Sub topic
85-
resource "google_pubsub_topic" "default" {
86-
name = "pubsub_topic"
81+
# Grant permission to invoke Cloud Run services
82+
resource "google_cloud_run_v2_service_iam_member" "runinvoker" {
83+
project = google_cloud_run_v2_service.default.project
84+
location = google_cloud_run_v2_service.default.location
85+
name = google_cloud_run_v2_service.default.name
86+
role = "roles/run.invoker"
87+
member = "serviceAccount:${google_service_account.eventarc.email}"
88+
depends_on = [google_cloud_run_v2_service.default]
8789
}
88-
# [END eventarc_basic_pubsub_topic]
90+
# [END eventarc_basic_pubsub_deploy_cloud_run]
8991

9092
# [START eventarc_basic_pubsub_trigger]
9193
# Create an Eventarc trigger, routing Pub/Sub events to Cloud Run
@@ -116,7 +118,7 @@ resource "google_eventarc_trigger" "default" {
116118
service_account = google_service_account.eventarc.email
117119
depends_on = [
118120
google_project_service.eventarc,
119-
google_project_iam_member.pubsubpublisher
121+
google_pubsub_topic_iam_member.pubsubpublisher
120122
]
121123
}
122124
# [END eventarc_basic_pubsub_trigger]
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/**
2+
* Copyright 2026 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
# [START datatransferessentials_parent]
18+
# [START datatransferessentials_multicloud_data_transfer_config]
19+
resource "google_network_connectivity_multicloud_data_transfer_config" "default" {
20+
name = "config"
21+
location = "europe-west1"
22+
description = "A basic multicloud data transfer config"
23+
services {
24+
service_name = "big-query"
25+
}
26+
services {
27+
service_name = "cloud-storage"
28+
}
29+
}
30+
# [END datatransferessentials_multicloud_data_transfer_config]
31+
32+
# [START datatransferessentials_destination]
33+
resource "google_network_connectivity_destination" "default" {
34+
name = "destination"
35+
location = "europe-west1"
36+
multicloud_data_transfer_config = google_network_connectivity_multicloud_data_transfer_config.default.name
37+
description = "A basic destination"
38+
ip_prefix = "10.0.0.0/8"
39+
endpoints {
40+
asn = "14618"
41+
csp = "AWS"
42+
}
43+
}
44+
# [END datatransferessentials_destination]
45+
# [END datatransferessentials_parent]

0 commit comments

Comments
 (0)