Executar um fluxo de trabalho usando as bibliotecas de cliente do Cloud
Neste guia de início rápido, mostramos como executar um fluxo de trabalho e conferir os resultados da execução usando as bibliotecas de cliente do Cloud.
Para mais informações sobre como instalar as bibliotecas de cliente do Cloud e configurar o ambiente de desenvolvimento, consulte a Visão geral das bibliotecas de cliente do Workflows.
É possível concluir as etapas a seguir usando a Google Cloud CLI no terminal ou no Cloud Shell.
Antes de começar
As restrições de segurança definidas pela sua organização podem impedir que você conclua as etapas a seguir. Para informações sobre solução de problemas, consulte Desenvolver aplicativos em um ambiente restrito de Google Cloud .
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Se este guia estiver usando um projeto atual, verifique se você tem as permissões necessárias para concluir o guia. Se você criou um projeto, já tem as permissões necessárias.
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative a API Workflows:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador do Service Usage (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.gcloud services enable workflows.googleapis.com
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Se este guia estiver usando um projeto atual, verifique se você tem as permissões necessárias para concluir o guia. Se você criou um projeto, já tem as permissões necessárias.
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative a API Workflows:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador do Service Usage (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.gcloud services enable workflows.googleapis.com
-
Configure a autenticação:
-
Verifique se você tem o papel do IAM de criação de contas de serviço
(
roles/iam.serviceAccountCreator) e o papel de administrador do IAM do projeto (roles/resourcemanager.projectIamAdmin). Saiba como conceder papéis. -
Crie a conta de serviço:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Substitua
SERVICE_ACCOUNT_NAMEpor um nome para a conta de serviço. -
Conceda o papel do IAM
roles/logging.logWriterà conta de serviço:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/logging.logWriter
Substitua:
SERVICE_ACCOUNT_NAME: o nome da conta de serviço.PROJECT_ID: o ID do projeto em que você criou a conta de serviço
-
Verifique se você tem o papel do IAM de criação de contas de serviço
(
- Se necessário, faça o download e instale a ferramenta de gerenciamento de código-fonte Git.
Para saber mais sobre papéis e permissões de conta de serviço, consulte Conceder uma permissão de fluxo de trabalho para acessar recursos doGoogle Cloud .
Funções exigidas
Para conseguir as permissões necessárias a fim de concluir o guia de início rápido, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
-
Usuário da conta de serviço (
roles/iam.serviceAccountUser) -
Administrador do Workflows (
roles/workflows.admin)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Implantar um fluxo de trabalho de amostra
Depois de definir um fluxo de trabalho, implante-o para que ele fique disponível para execução. A etapa de implantação também valida a execução do arquivo de origem.
O fluxo de trabalho a seguir envia uma solicitação para uma API pública e retorna a resposta da API.
Crie um arquivo de texto com o nome de arquivo
myFirstWorkflow.yamlcom o seguinte conteúdo:Depois de criar o fluxo de trabalho, implante-o, mas não execute-o:
gcloud workflows deploy myFirstWorkflow \ --source=myFirstWorkflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=CLOUD_REGION
Substitua
CLOUD_REGIONpor um local compatível para o fluxo de trabalho. A região padrão usada nos exemplos de código éus-central1.
Acessar o exemplo de código
Você pode clonar o exemplo de código do GitHub.
Clone o repositório do app de amostra na máquina local:
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Altere para o diretório que contém o código de amostra do Workflows:
C#
cd dotnet-docs-samples/workflows/api/Workflow.Samples/
Go
cd golang-samples/workflows/executions/
Java
cd java-docs-samples/workflows/cloud-client/
Node.js
cd nodejs-docs-samples/workflows/quickstart/
Python
cd python-docs-samples/workflows/cloud-client/
Confira o código de amostra. Cada app de exemplo faz o seguinte:
- Configura as bibliotecas de cliente do Cloud para o Workflows.
- Executa um fluxo de trabalho.
- Pesquisa a execução do fluxo de trabalho (usando a espera exponencial) até que ela seja encerrada.
- Exibe os resultados da execução.
C#
Go
Java
Node.js
Python
Executar o exemplo de código
É possível executar o exemplo de código e o fluxo de trabalho. Quando um fluxo de trabalho é executado, a definição implantada associada a ele também é.
Para executar a amostra, primeiro instale as dependências:
C#
dotnet restore
Go
go mod download
Java
mvn compile
Node.js
npm install -D tsx
Python
pip3 install -r requirements.txt
Execute o script:
C#
GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME dotnet run
Go
GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME go run .
Java
GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME mvn compile exec:java -Dexec.mainClass=com.example.workflows.WorkflowsQuickstart
Node.js
npx tsx index.js
Python
GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME python3 main.py
Substitua:
PROJECT_ID: o nome do projeto Google CloudCLOUD_REGION: o local do fluxo de trabalho (padrão:us-central1)WORKFLOW_NAME: o nome do fluxo de trabalho (padrão:myFirstWorkflow)
O resultado será o seguinte:
Execution finished with state: SUCCEEDED Execution results: ["Thursday","Thursday Night Football","Thursday (band)","Thursday Island","Thursday (album)","Thursday Next","Thursday at the Square","Thursday's Child (David Bowie song)","Thursday Afternoon","Thursday (film)"]
Transmitir dados em uma solicitação de execução
Dependendo da linguagem da biblioteca de cliente, também é possível transmitir um argumento de ambiente de execução em uma solicitação de execução. Exemplo:
C#
Go
Java
// Creates the execution object
CreateExecutionRequest request =
CreateExecutionRequest.newBuilder()
.setParent(parent.toString())
.setExecution(Execution.newBuilder().setArgument("{\"searchTerm\":\"Friday\"}").build())
.build();
Node.js
// Execute workflow
try {
const createExecutionRes = await client.createExecution({
parent: client.workflowPath(projectId, location, workflow),
execution: {
argument: JSON.stringify({"searchTerm": "Friday"})
}
});
const executionName = createExecutionRes[0].name;
Python
Para mais informações sobre como transmitir argumentos de ambiente de execução, consulte Transmitir argumentos de ambiente de execução em uma solicitação de execução.
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud e os recursos.
Exclua o fluxo de trabalho que você criou:
gcloud workflows delete myFirstWorkflowQuando for perguntado se você quer continuar, digite
y:
O fluxo de trabalho será excluído.