Invoca funciones de Cloud Run o Cloud Run

Llamar o invocar a un servicio de Google Cloud, como Cloud Run Functions o Cloud Run desde Workflows se realiza a través de una solicitud para cada solicitud. Los métodos de solicitud HTTP más comunes tienen un acceso directo de llamada (como http.get y http.post), pero puedes hacer que cualquier tipo de solicitud HTTP. Para ello, establece el campo call en http.request y y especifica el tipo de solicitud con el campo method. Para Para obtener más información, consulta Realiza una solicitud HTTP.

Para enviar solicitudes autenticadas, haz lo siguiente:

  • El flujo de trabajo debe estar asociado con una cuenta de servicio que se le haya otorgado uno o más roles de Identity and Access Management (IAM) que contengan los roles permisos.

  • Debes agregar de forma explícita la información de autenticación a tu flujo de trabajo definición. De forma predeterminada, las solicitudes HTTP no contienen tokens de identidad ni de acceso. por motivos de seguridad.

Para obtener más información, consulta Otorga permiso a un flujo de trabajo para acceder a los recursos de Google Cloud.

Cuándo llamar a un servicio

¿Cómo sabes cuándo crear pasos en YAML o JSON con los Workflows? la sintaxis o cuándo crear un servicio, por ejemplo, un servicio de Cloud Run o una función de Cloud Run, que haga el trabajo?

Usar Workflows para llamar a servicios desde el flujo de trabajo mismo y administrar los resultados y ejecutar tareas simples, como realizar una llamada HTTP. Workflows pueden invocar servicios, analizar respuestas y crear para otros servicios conectados. Llamar a un servicio te permite evitar las complicaciones de invocaciones adicionales, dependencias adicionales y servicios servicios de llamadas.

Crear servicios para hacer cualquier trabajo que sea demasiado complejo para Workflows como, por ejemplo, implementar lógica empresarial reutilizable, cálculos complejos transformaciones que no son compatibles con las expresiones de Workflows y sus biblioteca estándar. Por lo general, un caso complicado es más fácil de implementar en el código en lugar de usar YAML o JSON y la sintaxis de Workflows.

Invoca servicios que estén restringidos a entrada interna

Workflows pueden invocar funciones de Cloud Run o servicios de Cloud Run en el mismo proyecto de Google Cloud con entrada restringida al tráfico interno. Con esta configuración, tus a los servicios no se puede acceder desde Internet, pero se puede acceder a ellos desde Workflows.

Para aplicar estas restricciones, debes ajustar la configuración de entrada de tu servicio o función. Ten en cuenta que el servicio de Cloud Run a la que se accedió en su URL run.app y no en un dominio personalizado. Para obtener más información, consulta Restringe la entrada (para Cloud Run) y Cómo establecer la configuración de red (para Cloud Run Functions). No es necesario realizar otros cambios en tu flujo de trabajo.

Usa una cuenta de servicio con los permisos necesarios

Cuando realices solicitudes a otros servicios de Google Cloud, tu flujo de trabajo debe asociarse con una cuenta de servicio que tenga los permisos correctos para acceder los recursos solicitados. Para saber qué cuenta de servicio está asociada con un flujo de trabajo existente, consulta Verifica la cuenta de servicio asociada de un flujo de trabajo.

Cuando configuras una cuenta de servicio, se asocia la identidad solicitante con el recurso al que deseas darle acceso; haces que la identidad solicitante sea una principal del recurso y, luego, asignarle el rol adecuado. El rol define qué permisos tiene la identidad en el contexto del recurso.

Por ejemplo, para configurar una función receptora de Cloud Run para que acepte solicitudes de una función o servicio de llamada específico, debes agregar el de servicio del emisor como una principal en la función receptora y otorga esa el invocador de funciones de Cloud Run (roles/cloudfunctions.invoker) en el área de la seguridad en la nube. De manera similar, para configurar una cuenta de servicio para Cloud Run, debes otorga a esa cuenta de servicio el invocador de Cloud Run (roles/run.invoker). Para obtener más información, consulta la información de autenticación para las funciones de Cloud Run o la descripción general de la autenticación de Cloud Run.

Invoca funciones de Cloud Run (2ª gen..)

En Cloud Run Functions (2ª gen..), los permisos de invocación están disponibles mediante la administración el servicio subyacente de Cloud Run. Si tu flujo de trabajo invoca un Cloud Run (2ª gen..), no es necesario que otorgues a la cuenta de servicio del emisor. El invocador de Cloud Run Functions (roles/cloudfunctions.invoker). En su lugar, debes otorgar el acceso Rol de Invocador de Cloud Run (roles/run.invoker).

Para obtener más información, consulta Comparación de versiones de funciones de Cloud Run.

Agrega la información de autenticación a tu flujo de trabajo

Cuando hagas solicitudes a Cloud Run Functions o Cloud Run, usa OIDC para la autenticación.

Para realizar una solicitud HTTP con OIDC, agrega una sección auth a la sección args de la definición de tu flujo de trabajo, después de que especifiques la URL. En este ejemplo, un para invocar una función de Cloud Run:

YAML

  - step_A:
      call: http.get
      args:
          url: https://us-central1-project.cloudfunctions.net/functionA
          query:
              firstNumber: 4
              secondNumber: 6
              operation: sum
          auth:
              type: OIDC
              audience: OIDC_AUDIENCE
    

JSON

    [
      {
        "step_A": {
          "call": "http.get",
          "args": {
            "url": "https://us-central1-project.cloudfunctions.net/functionA",
            "query": {
              "firstNumber": 4,
              "secondNumber": 6,
              "operation": "sum"
            },
            "auth": {
              "type": "OIDC",
              "audience": "OIDC_AUDIENCE"
            }
          }
        }
      }
    ]
      
El parámetro audience se puede usar para especificar el público de OIDC para el token. De forma predeterminada, se establece en el mismo valor que url. Sin embargo, debe configurarse como la URL raíz de tu servicio. Por ejemplo: https://region-project.cloudfunctions.net/hello_world.

Especifica el tipo de medio para los datos de respuesta

Si el encabezado Content-Type de la respuesta especifica un tipo de medio application/json, la respuesta JSON que se almacena en un variable se convierte automáticamente en un mapa al que se puede acceder.

Si es necesario, modifica la API a la que se llama para especificar un Tipo de medio application/json para Content-Type encabezado de respuesta. De lo contrario, puedes usar el json.decode y las funciones text.encode para y convertir el cuerpo de la respuesta en un mapa. Por ejemplo:

json.decode(text.encode(RESPONSE_FROM_API))

Para obtener más información, consulta Accede a los datos de respuesta HTTP guardados en una variable.

Ejecuta trabajos de Cloud Run

A diferencia de los servicios de Cloud Run, Los trabajos de Cloud Run no escuchan ni entregar solicitudes HTTP. Para ejecutar trabajos de Cloud Run desde un flujo de trabajo, usa el Conector de la API de Cloud Run Admin.

Para ver un ejemplo de extremo a extremo de la ejecución de un trabajo de Cloud Run que procesa datos que se pasaron al trabajo como variables de entorno, consulta Ejecuta un trabajo de Cloud Run con Workflows.

Para ver un ejemplo de extremo a extremo de la ejecución de un trabajo de Cloud Run que procesa datos almacenados en un bucket de Cloud Storage, lo que te permite encriptar los datos con claves de encriptación administradas por el cliente (CMEK), consulta Ejecuta un trabajo de Cloud Run que procese datos de eventos en Cloud Storage.

¿Qué sigue?