es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo crear una Cloud Function desencadenada por PubSub con ordenación de mensajes utilizando terraform.

Estoy tratando de crear una Cloud Function que sea desencadenada desde una suscripción de PubSub, pero necesito habilitar el ordenamiento de mensajes. Sé que debo usar el bloque event_trigger en el bloque google_cloudfunctions_function, al crear una función vinculada a una suscripción. Sin embargo, esto no parece funcionar con enable_message_ordering como se describe en PubSub. Cuando uso la configuración de envío de la suscripción en push config, no sé cómo puedo vincular el punto final a la función.

Entonces, ¿hay alguna forma en que pueda vincular la función a una suscripción con ordenamiento de mensajes habilitado? ¿Puedo usar simplemente la URL interna de la función como la URL de la configuración de envío?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para vincular una Función de Nube (Cloud Function) a una suscripción con habilitación de ordenamiento de mensajes, puedes usar el bloque event_trigger en el bloque google_cloudfunctions_function. Sin embargo, como mencionaste, enable_message_ordering no está soportado en este bloque.

    En su lugar, puedes crear la Función de Nube sin el disparador de eventos y luego agregar manualmente la suscripción creando una suscripción de empuje (push subscription) y vinculándola a la URL interna del punto final HTTP de la Función de Nube. Esto se puede hacer utilizando el recurso google_pubsub_subscription en Terraform.

    Primero, crea la Función de Nube sin el bloque event_trigger:

    resource "google_cloudfunctions_function" "my_function" {
      name        = "mi-funcion"
      runtime     = "nodejs14"
      source_archive_bucket = google_storage_bucket.my_bucket.name
      source_archive_object = "function.zip"
      entry_point = "miFuncion"
      timeout = "60s"
    }
    

    Luego, crea una suscripción de empuje (push subscription) vinculada a la URL interna del punto final HTTP de la Función de Nube:

    resource "google_pubsub_topic" "my_topic" {
      name = "mi-topic"
    }
    
    resource "google_pubsub_subscription" "my_subscription" {
      name = "mi-suscripcion"
      topic = google_pubsub_topic.my_topic.name
      push_config {
        push_endpoint = google_cloudfunctions_function.my_function.https_trigger_url
      }
      expiration_policy {
        ttl = "1209600s"
      }
      retries = 5
    }
    

    Ten en cuenta que la URL interna del punto final HTTP de la Función de Nube se accede a través de google_cloudfunctions_function.my_function.https_trigger_url.

    Una vez que hayas creado la suscripción de empuje (push subscription) en Terraform, se habilitará el ordenamiento de mensajes para la suscripción y la Función de Nube se activará con los mensajes ordenados.

Comments are closed.