@@ -1503,16 +1503,16 @@ resource "google_project_iam_member" "service_account_workflow_act_as_binding" {
15031503}
15041504
15051505# 15. functions/refresh_materialized_view
1506+ # Cloud Function for refresh_materialized_view
15061507resource "google_cloudfunctions2_function" "refresh_materialized_view" {
1507- name = local . function_refresh_materialized_view_config . name
1508- description = local . function_refresh_materialized_view_config . description
1508+ name = " refresh-materialized-view- ${ var . environment } "
1509+ description = " Function to refresh materialized views asynchronously. "
15091510 location = var. gcp_region
15101511 depends_on = [google_secret_manager_secret_iam_member . secret_iam_member ]
1511- project = var. project_id
15121512
15131513 build_config {
15141514 runtime = var. python_runtime
1515- entry_point = local . function_refresh_materialized_view_config . entry_point
1515+ entry_point = " refresh_materialized_view_function "
15161516 source {
15171517 storage_source {
15181518 bucket = google_storage_bucket. functions_bucket . name
@@ -1522,29 +1522,34 @@ resource "google_cloudfunctions2_function" "refresh_materialized_view" {
15221522 }
15231523
15241524 service_config {
1525- available_memory = local. function_refresh_materialized_view_config . memory
1526- timeout_seconds = local. function_refresh_materialized_view_config . timeout
1527- available_cpu = local. function_refresh_materialized_view_config . available_cpu
1528- max_instance_request_concurrency = local. function_refresh_materialized_view_config . max_instance_request_concurrency
1529- max_instance_count = local. function_refresh_materialized_view_config . max_instance_count
1530- min_instance_count = local. function_refresh_materialized_view_config . min_instance_count
1525+ environment_variables = {
1526+ PROJECT_ID = var.project_id
1527+ QUEUE_NAME = google_cloud_tasks_queue.refresh_materialized_view_queue.name
1528+ LOCATION = var.gcp_region
1529+ FUNCTION_URL = " https://${ google_cloudfunctions2_function . refresh_materialized_view . name } .cloudfunctions.net"
1530+ }
1531+ available_memory = " 512Mi"
1532+ timeout_seconds = 60
1533+ available_cpu = 1
1534+ max_instance_request_concurrency = 10
1535+ max_instance_count = 5
1536+ min_instance_count = 0
15311537 service_account_email = google_service_account. functions_service_account . email
1532- ingress_settings = local . function_refresh_materialized_view_config . ingress_settings
1538+ ingress_settings = " ALLOW_ALL "
15331539 vpc_connector = data. google_vpc_access_connector . vpc_connector . id
15341540 vpc_connector_egress_settings = " PRIVATE_RANGES_ONLY"
1535-
1536- dynamic "secret_environment_variables" {
1537- for_each = local. function_refresh_materialized_view_config . secret_environment_variables
1538- content {
1539- key = secret_environment_variables. value [" key" ]
1540- project_id = var. project_id
1541- secret = " ${ upper (var. environment )} _${ secret_environment_variables . value [" key" ]} "
1542- version = " latest"
1543- }
1544- }
15451541 }
15461542}
15471543
1544+ # IAM entry for invoking the refresh_materialized_view function
1545+ resource "google_cloudfunctions2_function_iam_member" "refresh_materialized_view_invoker" {
1546+ project = var. project_id
1547+ location = var. gcp_region
1548+ cloud_function = google_cloudfunctions2_function. refresh_materialized_view . name
1549+ role = " roles/cloudfunctions.invoker"
1550+ member = " serviceAccount:${ google_service_account . functions_service_account . email } "
1551+ }
1552+
15481553# Task queue to invoke refresh_materialized_view function
15491554resource "google_cloud_tasks_queue" "refresh_materialized_view_queue" {
15501555 name = " refresh-materialized-view-queue-${ var . environment } "
0 commit comments