Chamar ou invocar um serviço do Google Cloud, como funções do Cloud Run.
ou o Cloud Run do Workflows é feito por uma interface HTTP
solicitação. Os métodos de solicitação HTTP mais comuns têm um atalho
de chamada (como http.get
e http.post), mas é possível fazer
qualquer tipo de solicitação HTTP definindo o campo call
como http.request
e
especificando o tipo de solicitação usando o campo method
. Para
mais informações, consulte Fazer uma solicitação HTTP.
Para enviar solicitações autenticadas:
O fluxo de trabalho precisa estar associado a uma conta de serviço que tenha recebido um ou mais papéis do Identity and Access Management (IAM) com as permissões necessárias.
É necessário adicionar as informações de autenticação à definição do fluxo de trabalho explicitamente. Por padrão, as solicitações HTTP não contêm tokens de identidade ou acesso por motivos de segurança.
Para mais informações, consulte Conceda permissão a um fluxo de trabalho para acessar os recursos do Google Cloud.
Quando chamar um serviço
Como saber quando criar etapas em YAML ou JSON usando a sintaxe de fluxos de trabalho ou quando criar um serviço, como um serviço do Cloud Run ou uma função do Cloud Run, para fazer o trabalho?
Use o Workflows para chamar serviços do próprio fluxo de trabalho e processar os resultados, além de executar tarefas simples, como fazer uma chamada HTTP. Workflows podem invocar serviços, analisar respostas e construir e entradas para outros serviços conectados. Chamar um serviço permite que você evite o complicações de invocações extras, outras dependências e serviços serviços de chamada.
Crie serviços para fazer qualquer trabalho que seja muito complexo para os fluxos de trabalho. Por exemplo, implementar lógica de negócios reutilizável, computações complexas ou transformações que não têm suporte às expressões do Workflows e à biblioteca padrão. Um caso complicado geralmente é mais fácil de implementar no código, em vez de usar YAML ou JSON e a sintaxe de fluxos de trabalho.
Invocar serviços que são restritos à entrada interna
Workflows podem invocar funções do Cloud Run ou serviços do Cloud Run no mesmo projeto do Google Cloud com entrada restrita ao tráfego interno. Com essa configuração, estão inacessíveis na Internet, mas podem ser acessados no Workflows.
Para aplicar essas restrições, ajuste as configurações de entrada do seu
serviço ou função. O serviço do Cloud Run precisa ser
alcançado no URL run.app
, e não em um domínio personalizado. Para mais informações,
consulte Como restringir a entrada (para o Cloud Run)
e Como definir configurações de rede
(para funções do Cloud Run). Nenhuma outra alteração é necessária no fluxo de trabalho.
Usar uma conta de serviço com as permissões necessárias
Ao fazer solicitações a outros serviços do Google Cloud, seu fluxo de trabalho precisa estar associado a uma conta de serviço com as permissões corretas para acessar os recursos solicitados. Para saber qual conta de serviço está associada a um fluxo de trabalho atual, consulte Verificar uma conta de serviço associada a um fluxo de trabalho.
Ao configurar uma conta de serviço, você associa a identidade do solicitante ao recurso a que você quer conceder acesso. A identidade do solicitante é transformada em um principal do recurso e, em seguida, o papel apropriado é atribuído. O papel define quais permissões a identidade tem no contexto do recurso.
Por exemplo, para configurar uma função de recebimento do Cloud Run para aceitar
solicitações de uma função ou serviço de chamada específico, você precisa adicionar o
à conta de serviço do autor da chamada como principal na função de recebimento e conceder
principal o invocador de funções do Cloud Run (roles/cloudfunctions.invoker
)
de rede. Da mesma forma, para configurar uma conta de serviço para o Cloud Run, você
concede a ela o papel de Invocador do Cloud Run
(roles/run.invoker
). Para saber mais, consulte a
Informações de autenticação para funções do Cloud Run
ou a visão geral da autenticação do Cloud Run.
Invocar funções do Cloud Run (2ª geração)
No Cloud Run functions (2ª geração), as permissões de invocação estão disponíveis ao gerenciar
o serviço subjacente do Cloud Run. Se seu fluxo de trabalho está chamando
função do Cloud Run (2a geração), não é preciso conceder o
à conta de serviço do autor da chamada, o Invocador de funções do Cloud Run
(roles/cloudfunctions.invoker
). Em vez disso, conceda o papel de Chamador do Cloud Run (roles/run.invoker
).
Para mais informações, consulte Comparação de versões das funções do Cloud Run.
Adicionar informações de autenticação ao fluxo de trabalho
Ao fazer solicitações às funções do Cloud Run ou ao Cloud Run, o OIDC para autenticação.
Para fazer uma solicitação HTTP usando o OIDC, adicione uma seção auth
à seção args
da definição do fluxo de trabalho, depois de especificar o URL. Neste exemplo, uma
solicitação é enviada 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 padrão, ele é definido como o mesmo valor de url
. No entanto, ele precisa estar definido
para o URL raiz do serviço. Por exemplo: https://region-project.cloudfunctions.net/hello_world
.
Especificar o tipo de mídia para os dados de resposta
Se o cabeçalho Content-Type
da resposta especificar um
tipo de mídia application/json
, a resposta JSON armazenada em uma
variável será convertida automaticamente em um mapa que pode ser acessado.
Se necessário, modifique a API que está sendo chamada para especificar um
tipo de mídia application/json
para o cabeçalho de resposta
Content-Type
. Caso contrário, use as funções
json.decode
e text.encode
para
converter o corpo da resposta em um mapa. Exemplo:
json.decode(text.encode(RESPONSE_FROM_API))
Para mais informações, consulte Acessar dados de resposta HTTP salvos em uma variável.
Executar jobs do Cloud Run
Ao contrário dos serviços do Cloud Run, os jobs do Cloud Run não detectam nem veiculam solicitações HTTP. Para executar jobs do Cloud Run com um fluxo de trabalho, use o conector da API Cloud Run Admin.
Para ver um exemplo completo de execução de um job do Cloud Run que processa dados transmitidos como variáveis de ambiente para o job, consulte Executar um job do Cloud Run usando Workflows.
Para um exemplo completo de como executar um job do Cloud Run que processa dados armazenados em um bucket do Cloud Storage, o que permite usando chaves de criptografia gerenciadas pelo cliente (CMEK), consulte Executar um job do Cloud Run que processa dados de eventos no Cloud Storage.
A seguir
- Criar um endpoint HTTP para a função
- Acionar um serviço hospedado no Cloud Run
- Tutorial sobre como usar o Workflows com o Cloud Run e o Cloud Functions