terraform-serverless/service.tf (44 lines of code) (raw):
# The Cloud Run service
resource "google_cloud_run_service" "cats" {
name = local.service_name
location = var.region
autogenerate_revision_name = true
template {
spec {
service_account_name = google_service_account.cats_worker.email
containers {
image = data.external.image_digest.result.image
env {
name = "BUCKET_NAME"
value = google_storage_bucket.media.name
}
env {
name = "FUNCTION_NAME"
value = google_cloudfunctions_function.function.https_trigger_url
}
}
}
}
traffic {
percent = 100
latest_revision = true
}
depends_on = [google_project_service.run]
}
# Set service public
data "google_iam_policy" "noauth" {
binding {
role = "roles/run.invoker"
members = [
"allUsers",
]
}
}
resource "google_cloud_run_service_iam_policy" "noauth" {
location = google_cloud_run_service.cats.location
project = google_cloud_run_service.cats.project
service = google_cloud_run_service.cats.name
policy_data = data.google_iam_policy.noauth.policy_data
depends_on = [google_cloud_run_service.cats]
}
# WORKAROUND
data "external" "image_digest" {
program = ["bash", "scripts/get_latest_tag.sh", var.project, local.service_name]
}
# END WORKAROUND