如何使用Google Cloud功能定期将数据写入Google Cloud SQL

问题描述

我需要从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