# Cloud Run Module Cloud Run management, with support for IAM roles and optional Eventarc trigger creation. ## Examples ### Traffic split This deploys a Cloud Run service with traffic split between two revisions. ```hcl module "cloud_run" { source = "./modules/cloud-run" project_id = "my-project" name = "hello" revision_name = "green" containers = [{ image = "us-docker.pkg.dev/cloudrun/container/hello" command = null args = null env = null env_from = null ports = null resources = null volume_mounts = null }] traffic = { "blue" = 25 "green" = 75 } } # tftest:modules=1:resources=1 ``` ### Eventarc trigger (Pub/Sub) This deploys a Cloud Run service that will be triggered when messages are published to Pub/Sub topics. ```hcl module "cloud_run" { source = "./modules/cloud-run" project_id = "my-project" name = "hello" containers = [{ image = "us-docker.pkg.dev/cloudrun/container/hello" command = null args = null env = null env_from = null ports = null resources = null volume_mounts = null }] pubsub_triggers = [ "topic1", "topic2" ] } # tftest:modules=1:resources=3 ``` ### Eventarc trigger (Audit logs) This deploys a Cloud Run service that will be triggered when specific log events are written to Google Cloud audit logs. ```hcl module "cloud_run" { source = "./modules/cloud-run" project_id = "my-project" name = "hello" containers = [{ image = "us-docker.pkg.dev/cloudrun/container/hello" command = null args = null env = null env_from = null ports = null resources = null volume_mounts = null }] audit_log_triggers = [ { service_name = "cloudresourcemanager.googleapis.com" method_name = "SetIamPolicy" } ] } # tftest:modules=1:resources=2 ``` ### Service account management To use a custom service account managed by the module, set `service_account_create` to `true` and leave `service_account` set to `null` value (default). ```hcl module "cloud_run" { source = "./modules/cloud-run" project_id = "my-project" name = "hello" containers = [{ image = "us-docker.pkg.dev/cloudrun/container/hello" command = null args = null env = null env_from = null ports = null resources = null volume_mounts = null }] service_account_create = true } # tftest:modules=1:resources=2 ``` To use an externally managed service account, pass its email in `service_account` and leave `service_account_create` to `false` (the default). ```hcl module "cloud_run" { source = "./modules/cloud-run" project_id = "my-project" name = "hello" containers = [{ image = "us-docker.pkg.dev/cloudrun/container/hello" command = null args = null env = null env_from = null ports = null resources = null volume_mounts = null }] service_account = "cloud-run@my-project.iam.gserviceaccount.com" } # tftest:modules=1:resources=1 ``` ## Variables | name | description | type | required | default | |---|---|:---: |:---:|:---:| | containers | Containers | list(object({...})) | ✓ | | | name | Name used for cloud run service | string | ✓ | | | project_id | Project id used for all resources. | string | ✓ | | | *audit_log_triggers* | Event arc triggers (Audit log) | list(object({...})) | | null | | *iam* | IAM bindings for Cloud Run service in {ROLE => [MEMBERS]} format. | map(list(string)) | | {} | | *ingress_settings* | Ingress settings | string | | null | | *labels* | Resource labels | map(string) | | {} | | *prefix* | Optional prefix used for resource names. | string | | null | | *pubsub_triggers* | Eventarc triggers (Pub/Sub) | list(string) | | null | | *region* | Region used for all resources. | string | | europe-west1 | | *revision_name* | Revision name | string | | null | | *service_account* | Service account email. Unused if service account is auto-created. | string | | null | | *service_account_create* | Auto-create service account. | bool | | false | | *traffic* | Traffic | map(number) | | null | | *volumes* | Volumes | list(object({...})) | | null | | *vpc_connector_config* | VPC connector configuration. Set `create_config` attributes to trigger creation. | object({...}) | | null | ## Outputs | name | description | sensitive | |---|---|:---:| | service | Cloud Run service | | | service_account | Service account resource. | | | service_account_email | Service account email. | | | service_account_iam_email | Service account email. | | | service_name | Cloud Run service name | | | vpc_connector | VPC connector resource if created. | |