Para llamar o invocar un Google Cloud servicio, como funciones de Cloud Run
o Cloud Run desde Workflows, se utiliza una solicitud HTTP. Los métodos de solicitud HTTP más habituales tienen un acceso directo de llamada (como http.get y http.post), pero puedes hacer cualquier tipo de solicitud HTTP configurando el campo call en http.request y especificando el tipo de solicitud mediante el campo method. Para obtener más información, consulta Hacer una solicitud HTTP.
Para enviar solicitudes autenticadas, sigue estos pasos:
Tu flujo de trabajo debe estar asociado a una cuenta de servicio a la que se le hayan concedido uno o varios roles de gestión de identidades y accesos (IAM) que contengan los permisos necesarios.
Debes añadir explícitamente la información de autenticación a la definición de tu flujo de trabajo. 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 Conceder permiso a un flujo de trabajo para acceder a recursos Google Cloud .
Cuándo llamar a un servicio
¿Cómo sabes cuándo crear pasos en YAML o JSON con la sintaxis de Workflows o cuándo crear un servicio (por ejemplo, un servicio o una función de Cloud Run) para hacer el trabajo?
Crea servicios para realizar cualquier trabajo que sea demasiado complejo para los flujos de trabajo. Por ejemplo, implementar lógica empresarial reutilizable, cálculos complejos o transformaciones que no sean compatibles con las expresiones de los flujos de trabajo y su biblioteca estándar. Normalmente, es más fácil implementar un caso complejo en el código que usar YAML o JSON y la sintaxis de Workflows.
Invocar servicios restringidos a la entrada interna
Los workflows pueden invocar funciones o servicios de Cloud Run del mismo Google Cloud proyecto que tengan el tráfico de entrada restringido al tráfico interno. Con esta configuración, no se puede acceder a tus servicios desde Internet, pero sí desde los flujos de trabajo.
Para aplicar estas restricciones, debe ajustar la configuración de entrada de su servicio o función. Ten en cuenta que se debe acceder al servicio de Cloud Run a través de su URL run.app y no a través de un dominio personalizado. Para obtener más información, consulta Restringir el acceso de red (en Cloud Run) y Configurar los ajustes de red (en Cloud Functions). No es necesario que hagas ningún otro cambio en tu flujo de trabajo.
Usar una cuenta de servicio con los permisos necesarios
Cuando hagas solicitudes a otros servicios de Google Cloud , tu flujo de trabajo debe estar asociado a una cuenta de servicio que tenga los permisos correctos para acceder a los recursos solicitados. Para saber qué cuenta de servicio está asociada a un flujo de trabajo, consulta Verificar la cuenta de servicio asociada a un flujo de trabajo.
Al configurar una cuenta de servicio, asocias la identidad solicitante al recurso al que quieres darle acceso (es decir, conviertes la identidad solicitante en un principal del recurso) y, a continuación, le asignas el rol adecuado. El rol define los permisos que tiene la identidad en el contexto del recurso.
Por ejemplo, para configurar una función de Cloud Run receptora de forma que acepte solicitudes de una función o un servicio de llamada específicos, debes añadir la cuenta de servicio de la función o el servicio de llamada como principal en la función receptora y conceder a ese principal el rol Invocador de funciones de Cloud Run (roles/cloudfunctions.invoker). Del mismo modo, para configurar una cuenta de servicio para Cloud Run, debes concederle el rol Invocador de Cloud Run (roles/run.invoker). Para obtener más información, consulta Control de acceso con IAM o la introducción a la autenticación de Cloud Run.
Invocar funciones de Cloud Run
En Cloud Run Functions, los permisos de invocación se pueden gestionar mediante el servicio de Cloud Run subyacente. Si tu flujo de trabajo invoca un servicio de funciones de Cloud Run, no es necesario que concedas a la cuenta de servicio del llamador el rol Invocador de Cloud Functions (roles/cloudfunctions.invoker). En su lugar, debe conceder el rol Invocador de Cloud Run (roles/run.invoker).
Para obtener más información, consulta Comparar funciones de Cloud Run.
Añadir información de autenticación a tu flujo de trabajo
Cuando hagas solicitudes a funciones de Cloud Run o a Cloud Run, usa OIDC para autenticarte.
Para hacer una solicitud HTTP mediante OIDC, añade una sección auth a la sección args de la definición de tu flujo de trabajo después de especificar la URL. En este ejemplo, se envía una solicitud 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":