Desenvolver e criar um job do Python no Cloud Run
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: Cloud Run Admin, Cloud Run Source Developer, Logs Viewer
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Acessar o IAM - Selecione o projeto.
- Clique em Conceder acesso.
-
No campo Novos principais, digite seu identificador de usuário. Normalmente, é o endereço de e-mail de uma Conta do Google.
- Na lista Selecionar papel, escolha um.
- Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.
- Clique em Salvar.
Install the Google Cloud CLI.
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
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: Cloud Run Admin, Cloud Run Source Developer, Logs Viewer
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Acessar o IAM - Selecione o projeto.
- Clique em Conceder acesso.
-
No campo Novos principais, digite seu identificador de usuário. Normalmente, é o endereço de e-mail de uma Conta do Google.
- Na lista Selecionar papel, escolha um.
- Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.
- Clique em Salvar.
Install the Google Cloud CLI.
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
-
Ative a API Cloud Run Admin e a API Cloud Build:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Depois que a API Cloud Run Admin for ativada, a conta de serviço padrão do Compute Engine será criadas automaticamente.
-
Verifique se você tem o papel de usuário da conta de serviço concedido na identidade de serviço. Por padrão, a identidade de serviço é a conta de serviço padrão do Compute Engine.
Conceder os papéis
Para conceder acesso ao recurso de identidade do serviço, use o comando
gcloud iam service-accounts add-iam-policy-binding
, substituindo as variáveis destacadas pelos valores apropriados:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --member="PRINCIPAL" \ --role="roles/iam.serviceAccountUser"
Substitua:
- SERVICE_ACCOUNT_EMAIL: o endereço de e-mail da conta de serviço
que você está usando como identidade de serviço, como:
- A conta de serviço padrão do Compute Engine:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
- Uma conta de serviço criada por você:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
- A conta de serviço padrão do Compute Engine:
- PRINCIPAL: o identificador do usuário. Normalmente, é o endereço de e-mail de uma Conta do Google.
- SERVICE_ACCOUNT_EMAIL: o endereço de e-mail da conta de serviço
que você está usando como identidade de serviço, como:
- Conceda à conta de serviço do Cloud Build o seguinte papel do IAM.
Clique para conferir os papéis necessários para a conta de serviço do Cloud Build
O Cloud Build usa automaticamente a conta de serviço padrão do Compute Engine como a conta de serviço padrão do Cloud Build para criar seu código-fonte e recurso do Cloud Run, a menos que você substitua esse comportamento. Para que o Cloud Build crie suas origens, peça ao administrador para conceder o papel Criador do Cloud Run (
roles/run.builder
) à conta de serviço padrão do Compute Engine no seu projeto:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Substitua
PROJECT_NUMBER
pelo número do projeto Google CloudePROJECT_ID
pelo ID do projeto Google Cloud. Para instruções detalhadas sobre como encontrar o ID e o número do projeto, consulte Criar e gerenciar projetos.A concessão do papel de builder do Cloud Run à conta de serviço padrão do Compute Engine leva alguns minutos para se propagar.
- Consulte os preços do Cloud Run ou estime os custos com a calculadora de preços.
Crie um novo diretório com o nome
jobs
e altere o diretório nele:mkdir jobs cd jobs
Crie um arquivo
main.py
para o código do job real. Copie nele as seguintes linhas de amostra:Os jobs do Cloud Run permitem que os usuários especifiquem o número de tarefas que o job precisa executar. Esse exemplo de código mostra como usar a variável de ambiente
CLOUD_RUN_TASK_INDEX
integrada. Cada tarefa representa uma cópia em execução do contêiner. As tarefas geralmente são executadas em paralelo. É útil usar várias tarefas se cada uma delas puder processar independentemente um subconjunto dos dados.Cada tarefa está ciente do índice armazenado na variável de ambiente
CLOUD_RUN_TASK_INDEX
. A variável de ambienteCLOUD_RUN_TASK_COUNT
integrada contém o número de tarefas fornecidas no tempo de execução do job por meio do parâmetro--tasks
.O código mostrado também mostra como repetir tarefas, usando o método integrado
CLOUD_RUN_TASK_ATTEMPT
que contém o número de vezes que essa tarefa foi repetida, começando em 0 para a primeira tentativa e aumentando em 1 a cada nova tentativa, até--max-retries
de dados.O código também permite gerar falhas como uma maneira de testar novas tentativas e gerar registros de erro para que você possa ver como eles são.
Crie um arquivo de texto chamado
Procfile
sem extensão de arquivo, contendo o seguinte:No Google Cloud console, acesse o Cloud Run:
Localize o job que você quer excluir na lista de jobs e clique na caixa de seleção para marcá-lo.
Clique em Excluir. Isso encerra todas as execuções de jobs em andamento e todas as instâncias de contêiner em execução.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Como escrever o job de amostra
Para gravar um job em Python, faça o seguinte:
Seu código está completo e pronto para ser empacotado em um contêiner.
Crie um contêiner de jobs, envie-o para o Artifact Registry e implante no Cloud Run
Importante: este guia de início rápido pressupõe que você tenha papéis de proprietário ou editor no projeto que está usando para este guia. Caso contrário, consulte o papel de desenvolvedor de origem do Cloud Run para ter acesso às permissões necessárias para implantar um recurso do Cloud Run a partir da origem.
Neste guia de início rápido, usamos a implantação a partir da origem, que cria o contêiner, faz upload dele para o Artifact Registry e implanta o job no Cloud Run:
gcloud run jobs deploy job-quickstart \ --source . \ --tasks 50 \ --set-env-vars SLEEP_MS=10000 \ --set-env-vars FAIL_RATE=0.1 \ --max-retries 5 \ --region REGION \ --project=PROJECT_ID
em que PROJECT_ID é o ID do projeto e REGION é a região, por exemplo, europe-west1
. É possível mudar os vários parâmetros para os valores que você quer usar para fins de teste. O SLEEP_MS
simula o trabalho, e FAIL_RATE
faz com que X
% das tarefas
falhem. Assim, você pode testar o paralelismo e tentar novamente tarefas com falha.
Executar um job no Cloud Run
Para executar o job que você acabou de criar:
gcloud run jobs execute job-quickstart --region REGION
Substitua REGION pela região que você usou ao criar e implantar o job, por exemplo, europe-west1
.
Limpar
Para evitar cobranças extras na sua conta do Google Cloud , exclua todos os recursos implantados com este guia de início rápido.
Excluir o repositório
O Cloud Run cobra apenas pelo tempo de execução do job. No entanto, ainda é possível receber cobranças pelo armazenamento da imagem do contêiner no Artifact Registry. Para excluir repositórios do Artifact Registry, siga as etapas em Excluir repositórios na documentação do Artifact Registry.
Excluir seu job
Os jobs do Cloud Run só geram custos quando uma tarefa de job está em execução. Para excluir o job do Cloud Run, siga uma destas etapas:
Console
Para excluir um job, siga estas etapas:
gcloud
Para excluir um job, execute o seguinte comando:
gcloud run jobs delete JOB_NAME
Substitua JOB_NAME
pelo nome do job.
Excluir o projeto de teste
A exclusão do projeto Google Cloud interrompe o faturamento de todos os recursos dele. Para liberar todos os recursos Google Cloud no seu projeto, siga estas etapas:
A seguir
Para mais informações sobre como criar um contêiner a partir do código-fonte e enviá-lo para um repositório, consulte: