如何配置仅允许内部流量的Google Cloud Function每日19:30 IST定时运行?
实现Google Cloud Function每日IST19:30定时运行并限制内部流量的步骤
一、配置每日定时触发(IST 19:30)
Google Cloud Scheduler支持直接指定时区,无需手动转换UTC,操作步骤如下:
控制台操作
- 打开Google Cloud Console,进入「Cloud Functions」页面,找到目标函数。
- 切换到「触发器」标签页,点击「添加触发器」。
- 触发器类型选择「Cloud Scheduler」,选择与函数一致的区域。
- 频率输入Cron表达式:
30 19 * * *(对应每日19:30),时区选择「Asia/Kolkata」(即IST时区)。 - 选择用于触发的服务账号(可使用默认App Engine服务账号,或自定义服务账号),确保该账号后续具备函数调用权限。
- 点击「保存」完成触发器配置。
gcloud命令行操作
执行以下命令(替换占位符为实际信息):
gcloud scheduler jobs create http daily-function-trigger \ --schedule="30 19 * * *" \ --time-zone="Asia/Kolkata" \ --uri=https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME \ --http-method=POST \ --service-account=SERVICE_ACCOUNT_EMAIL
二、设置Ingress为「仅允许内部流量」
控制台操作
- 在函数详情页点击「编辑」按钮。
- 滚动到「连接」区域,在「Ingress settings」下拉菜单中选择「Allow internal traffic only」。
- 点击「部署」保存更改。
gcloud命令行操作
执行以下命令更新函数配置:
gcloud functions deploy FUNCTION_NAME \ --region=REGION \ --ingress-settings=internal-only
三、关键权限配置(必做)
由于Ingress限制为内部流量,必须确保Cloud Scheduler使用的服务账号具备调用函数的权限:
控制台操作
- 进入IAM与管理页面,找到触发器使用的服务账号。
- 点击账号旁的「编辑」按钮,添加「Cloud Functions Invoker」角色。
- 保存权限设置。
gcloud命令行操作
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/cloudfunctions.invoker"
内容的提问来源于stack exchange,提问作者Mohan Prasath
相关产品推荐
相关产品推荐

