问题描述
我需要从python中的Google Cloud函数连接到Google Cloud sql Server,并每30分钟写入一次数据。
我有一个python函数,该函数创建pandas数据框架,并使用另一个函数连接了Google Cloud sql服务器,并将此pandas数据框架写入Microsoft sql Server管理中的相应表。但是我需要每20分钟定期运行一次此功能。因此,我的想法是创建云函数,然后创建Google Cloud Scheduler工作以每20分钟运行这些python函数。但是我找不到明确的指导。 Google云文档非常混乱。任何建议表示赞赏。
解决方法
我们的项目中有类似的设置。要触发云功能,您将需要创建HTTP云功能。然后,需要使用云调度程序来触发此http云功能,该调度程序会将请求发送到创建的端点。这是我们为此使用的命令的示例:
# Create cloud function
gcloud functions deploy my_function \
--entry-point=my_entrypoint \
--runtime=python37 \
--trigger-http \
--region=europe-west1
# Set invoke permissions
gcloud functions add-iam-policy-binding my_function
--region=europe-west1 \
--member=${PROJECT_ID}@appspot.gserviceaccount.com \
--role="roles/cloudfunctions.invoker" \
--project=${PROJECT_ID}
# Deploy scheduler
gcloud scheduler jobs create http my_job \
--schedule="every 20 minutes" \
--uri="https://europe-west1-${PROJECT_ID}.cloudfunctions.net/my_function/" \
--http-method=POST \
--oidc-service-account-email="${PROJECT_ID}@appspot.gserviceaccount.com" \
--oidc-token-audience="https://europe-west1-${PROJECT_ID}.cloudfunctions.net/my_function" \
--project=${PROJECT_ID}
关于如何通过控制台完成此设置的详细说明here。