Crie um trabalho 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.
Aceder ao IAM - Selecione o projeto.
- Clique em Conceder acesso.
-
No campo Novos responsáveis, introduza o identificador do utilizador. Normalmente, este é o endereço de email de uma Conta Google.
- Na lista Selecionar uma função, selecione uma função.
- Para conceder funções adicionais, clique em Adicionar outra função e adicione cada função adicional.
- Clique em Guardar.
-
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, 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.
Aceder ao IAM - Selecione o projeto.
- Clique em Conceder acesso.
-
No campo Novos responsáveis, introduza o identificador do utilizador. Normalmente, este é o endereço de email de uma Conta Google.
- Na lista Selecionar uma função, selecione uma função.
- Para conceder funções adicionais, clique em Adicionar outra função e adicione cada função adicional.
- Clique em Guardar.
-
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, 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 de ativar a API Cloud Run Admin, a conta de serviço predefinida do Compute Engine é criada automaticamente.
-
Certifique-se de que tem a função Utilizador da conta de serviço concedida na identidade de serviço. Por predefinição, a identidade do serviço é a conta de serviço predefinida do Compute Engine.
Conceda as funções
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 realçadas pelos valores adequados:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --member="PRINCIPAL" \ --role="roles/iam.serviceAccountUser"
Substitua o seguinte:
- SERVICE_ACCOUNT_EMAIL: o endereço de email da conta de serviço
que está a usar como identidade de serviço, como:
- A conta de serviço predefinida do Compute Engine:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
- Uma conta de serviço que criou:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
- A conta de serviço predefinida do Compute Engine:
- PRINCIPAL: o identificador do utilizador. Normalmente, este é o endereço de email de uma Conta Google.
- SERVICE_ACCOUNT_EMAIL: o endereço de email da conta de serviço
que está a usar como identidade de serviço, como:
- Conceda à conta de serviço do Cloud Build a seguinte função do IAM.
Clique para ver as funções necessárias para a conta de serviço do Cloud Build
O Cloud Build usa automaticamente a conta de serviço predefinida do Compute Engine como a conta de serviço predefinida do Cloud Build para compilar o seu código-fonte e o recurso do Cloud Run, a menos que substitua este comportamento. Para que o Cloud Build compile as suas origens, peça ao administrador para conceder a função Cloud Run Builder (
roles/run.builder
) à conta de serviço predefinida 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 seu Google Cloud número do projeto ePROJECT_ID
pelo seu Google Cloud ID do projeto. Para ver instruções detalhadas sobre como encontrar o ID e o número do projeto, consulte o artigo Criar e gerir projetos.A concessão da função de criador do Cloud Run à conta de serviço predefinida do Compute Engine demora alguns minutos a propagar.
Crie um novo diretório com o nome
jobs
e altere o diretório para este:mkdir jobs cd jobs
Crie um ficheiro
main.py
para o código do trabalho real. Copie as seguintes linhas de exemplo para o ficheiro:As tarefas do Cloud Run permitem que os utilizadores especifiquem o número de tarefas que a tarefa deve executar. Este código de exemplo mostra como usar a variável de ambiente
CLOUD_RUN_TASK_INDEX
integrada. Cada tarefa representa uma cópia em execução do contentor. Tenha em atenção que as tarefas são normalmente executadas em paralelo. A utilização de várias tarefas é útil se cada tarefa puder processar independentemente um subconjunto dos seus dados.Cada tarefa tem conhecimento do respetivo índice, armazenado na variável de ambiente
CLOUD_RUN_TASK_INDEX
. A variável de ambienteCLOUD_RUN_TASK_COUNT
incorporada contém o número de tarefas fornecidas no momento da execução do trabalho através do parâmetro--tasks
.O código apresentado também mostra como repetir tarefas, usando a variável de ambiente
CLOUD_RUN_TASK_ATTEMPT
incorporada, que contém o número de vezes que esta tarefa foi repetida, começando em 0 para a primeira tentativa e aumentando 1 para cada repetição sucessiva, até--max-retries
.O código também permite gerar falhas como forma de testar novas tentativas e gerar registos de erros para que possa ver o aspeto dos mesmos.
Crie um ficheiro de texto com o nome
Procfile
sem extensão de ficheiro, que contenha o seguinte:
Escrever a tarefa de exemplo
Para escrever um trabalho em Python:
O seu código está completo e pronto para ser incluído num contentor.
Crie um contentor de tarefas de compilação, envie-o para o Artifact Registry e implemente-o no Cloud Run
Importante: este início rápido pressupõe que tem funções de proprietário ou editor no projeto que está a usar para o início rápido. Caso contrário, consulte a função de programador de origem do Cloud Run para ver as autorizações necessárias para implementar um recurso do Cloud Run a partir da origem.
Este início rápido usa a implementação a partir da origem, que cria o contentor, carrega-o para o Artifact Registry e implementa a tarefa 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
onde PROJECT_ID é o ID do seu projeto e REGION é a sua região, por exemplo, europe-west1
. Tenha em atenção que pode alterar os vários parâmetros para os valores que quiser usar para fins de teste. SLEEP_MS
simula o trabalho e FAIL_RATE
faz com que X
% das tarefas falhem para que possa experimentar o paralelismo e tentar novamente as tarefas com falhas.
Execute uma tarefa no Cloud Run
Para executar a tarefa que acabou de criar:
gcloud run jobs execute job-quickstart --region REGION
Substitua REGION pela região que usou quando criou e implementou a tarefa, por exemplo, europe-west1
.
O que se segue?
Para mais informações sobre a criação de um contentor a partir do código-fonte e o envio para um repositório, consulte: