A chamada ou a invocação de um Google Cloud serviço, como as funções do Cloud Run
ou o Cloud Run a partir dos fluxos de trabalho, é feita através de um pedido
HTTP. Os métodos de pedidos HTTP mais comuns têm um atalho de chamada (como http.get e http.post), mas pode fazer qualquer tipo de pedido HTTP definindo o campo call
como http.request
e especificando o tipo de pedido através do campo method
. Para mais informações, consulte o artigo Faça um pedido HTTP.
Para enviar pedidos autenticados:
O seu fluxo de trabalho tem de estar associado a uma conta de serviço à qual foram concedidas uma ou mais funções de gestão de identidade e de acesso (IAM) que contêm as autorizações necessárias.
Tem de adicionar explicitamente informações de autenticação à definição do fluxo de trabalho. Por predefinição, os pedidos HTTP não contêm tokens de identidade nem de acesso por motivos de segurança.
Para mais informações, consulte o artigo Conceda uma autorização de fluxo de trabalho para aceder a Google Cloud recursos.
Quando ligar para um serviço
Como sabe quando criar passos em YAML ou JSON com a sintaxe dos Workflows ou quando criar um serviço, por exemplo, um serviço do Cloud Run ou uma função do Cloud Run, para fazer o trabalho?
Criar serviços para realizar qualquer trabalho demasiado complexo para os Workflows; por exemplo, implementar lógica de negócio reutilizável, cálculos complexos ou transformações que não são suportadas pelas expressões dos Workflows e pela respetiva biblioteca padrão. Normalmente, é mais fácil implementar um caso complicado no código, em vez de usar YAML ou JSON e a sintaxe do Workflows.
Invocar serviços restritos à entrada interna
Os fluxos de trabalho podem invocar funções do Cloud Run ou serviços do Cloud Run no mesmo Google Cloud projeto que tenham a entrada restrita ao tráfego interno. Com esta configuração, os seus serviços não são acessíveis a partir da Internet, mas podem ser acedidos a partir de fluxos de trabalho.
Para aplicar estas restrições, tem de ajustar as definições de entrada do seu serviço ou função. Tenha em atenção que o serviço Cloud Run tem de ser
acessível no respetivo URL run.app
e não num domínio personalizado. Para mais informações,
consulte Restrinja a entrada na rede (para o Cloud Run)
e Configure as definições de rede
(para as funções do Cloud Run). Não são necessárias outras alterações ao seu fluxo de trabalho.
Use uma conta de serviço com as autorizações necessárias
Quando faz pedidos a outros serviços Google Cloud , o seu fluxo de trabalho tem de estar associado a uma conta de serviço que tenha as autorizações corretas para aceder aos recursos pedidos. Para saber que conta de serviço está associada a um fluxo de trabalho existente, consulte o artigo Valide a conta de serviço associada de um fluxo de trabalho.
Quando configura uma conta de serviço, associa a identidade solicitante ao recurso ao qual quer dar acesso. Torna a identidade solicitante um principal do recurso e, em seguida, atribui-lhe a função adequada. A função define as autorizações que a identidade tem no contexto do recurso.
Por exemplo, para configurar uma função do Cloud Run para receber pedidos de uma função ou um serviço de chamada específico, tem de adicionar a conta de serviço do autor da chamada como um principal na função de receção e conceder a esse principal a função de invocador das funções do Cloud Run (roles/cloudfunctions.invoker
). Da mesma forma, para configurar uma conta de serviço para o Cloud Run, concede a essa conta de serviço a função de invocador do Cloud Run (roles/run.invoker
). Para saber mais, consulte o artigo
Controlo de acesso com a IAM
ou a vista geral da autenticação do Cloud Run.
Invocar funções do Cloud Run
Nas funções do Cloud Run, as autorizações de invocação estão disponíveis através da gestão do serviço do Cloud Run subjacente. Se o seu fluxo de trabalho estiver a invocar um serviço de funções do Cloud Run, não precisa de conceder à conta de serviço do autor da chamada a função de invocador do Cloud Functions (roles/cloudfunctions.invoker
). Em alternativa, tem de conceder a função Cloud Run Invoker (roles/run.invoker
).
Para mais informações, consulte o artigo Compare as funções do Cloud Run.
Adicione informações de autenticação ao seu fluxo de trabalho
Quando fizer pedidos a funções do Cloud Run ou ao Cloud Run, use o OIDC para autenticar.
Para fazer um pedido HTTP através do OIDC, adicione uma secção auth
à secção args
da definição do fluxo de trabalho, depois de especificar o URL. Neste exemplo, é enviado um pedido para invocar uma função do 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" } } } } ]
audience
pode ser usado para especificar o público-alvo do OIDC para o token.
Por predefinição, está definido para o mesmo valor que url
. No entanto, deve ser definido para o URL raiz do seu serviço. Por exemplo: https://region-project.cloudfunctions.net/hello_world
.
Especifique o tipo de suporte para os dados de resposta
Se o cabeçalho Content-Type
da resposta especificar um
application/json
tipo de suporte, a resposta JSON armazenada numa
variável é convertida automaticamente num mapa acessível.
Se necessário, modifique a API que está a ser chamada para especificar um
application/json
tipo de suporte para o Content-Type
cabeçalho de resposta. Caso contrário, pode usar as funções
json.decode
e text.encode
para
converter o corpo da resposta num mapa. Por exemplo:
json.decode(text.encode(RESPONSE_FROM_API))
Para mais informações, consulte o artigo Aceda aos dados de resposta HTTP guardados numa variável.
Executar tarefas do Cloud Run
Ao contrário dos serviços do Cloud Run, os trabalhos do Cloud Run não ouvem nem servem pedidos HTTP. Para executar tarefas do Cloud Run a partir de um fluxo de trabalho, use o conetor da API Cloud Run Admin.
Para ver um exemplo completo da execução de uma tarefa do Cloud Run que processa dados transmitidos como variáveis de ambiente para a tarefa, consulte Executar uma tarefa do Cloud Run usando fluxos de trabalho.
Para ver um exemplo completo da execução de uma tarefa do Cloud Run que processa dados armazenados num contentor do Cloud Storage, o que lhe permite encriptar os dados através de chaves de encriptação geridas pelo cliente (CMEK), consulte o artigo Executar uma tarefa do Cloud Run que processa dados de eventos no Cloud Storage.