Boa tarde! Estou com muita dificuldade em configurar um job/ scheduler para rodar alguns scripts em python que estão dentro do cloud shell editor e populam tabelas dentro do bigquery, esses scripts autenticam automaticamente pois já estão dentro da conta que estou logada. Já tentei criar função no Cloud Functions, tentei criar um arquivo Shell, e não funciona. Acredito que deve ter uma maneira muito simples de executar isso, mas sou iniciante em GCP e está bem difícil de fazer funcionar. Então se alguém puder me ajudar com um passo a passo dessa execução e se esse realmente é o melhor caminho, eu agradeço.
Hi, Juliana. I have recently set up a Google Cloud Function and set up a weekly trigger with Cloud Scheduler to call that function.
I am sure you can find some tutorials on YouTube, but here some tricks that will help you:
- pay attention to the default Cloud Function and try to imitate the structure on your own
- using python my function looks like this, even though I do not use the request parameter:
def main(request):
# YOUR CODE
- remember to add your dependencies on a
requirements.txt
file - before setting Cloud Scheduler, assure your function works as expected. So go to the testing tab of the Cloud Function and perform some tests. Also, output/log the variables so that you can find any error. I usually use something like
print(f'Var:{var}')
- for the Cloud Scheduler you will need to look for the trigger that look something like
[https://{region}-{projectId}.cloudfunctions.net/{cloudFunctionId}
](https://{region}-{projectId}.cloudfunctions.net/{cloudFunctionId}`) . Select HTTP POST method - maybe you will have to set up a Service Account that will run the function
I hope you can succeed
Bom dia! Muito obrigada pela sua ajuda! O caminho que eu estava tentando era criar um tópico no Pub/Sub usando a conta de serviço com o final compute@developer.gserviceaccount.com, depois eu criei a function e no arquivo main.py eu criei uma função principal:
def bonificacao_lideres(event, context):
e atualizei o arquivo requirements.txt com as dependências:
functions-framework==3.*
google-auth
google-auth-oauthlib
pandas
datetime
pandas
google-api-python-client
google-cloud-bigquery
O problema que está ocorrendo é justamente na function, por algum motivo ela apresenta erros. Eu tenho um json de autenticação no google drive que não está dando certo (já rodei o script pelo cloud shell e está funcionando normalmente). Você acha que o melhor caminho é ir direto com a o método HTTP passando a url da function? O que pode estar errado no código?
O Scheduler está funcionando, não apresenta erros, mas não executa o que está no script.
Agradeço se puder dar uma olhada ou me mandar um modelo de como eu devo incluir os arquivos na function.
Obrigada!