如何在GitHub Actions的.yaml文件中定义Google Cloud Function主题触发器?
如何在GitHub Actions部署Google Cloud Function时配置主题触发器
要将原本HTTP触发的Cloud Function改为Pub/Sub主题触发,只需修改GitHub Actions配置文件中deploy步骤的参数,同时明确主题资源路径并确保权限到位,具体操作如下:
一、修改GitHub Actions配置文件
保留原有配置的name、on、jobs/deploy的runs-on、permissions、steps/checkout、auth部分不变,仅在google-github-actions/deploy-cloud-functions步骤的with字段中添加触发器相关参数:
- id: "deploy" uses: "google-github-actions/deploy-cloud-functions@v0" with: # Name of the Cloud Function, same as the entry point name name: "${FUNCTION_NAME}" # Runtime to use for the function runtime: "nodejs16" # 指定触发器类型为Pub/Sub trigger_type: "pubsub" # 替换为你的Pub/Sub主题完整资源路径 trigger_resource: "projects/[你的GCP项目ID]/topics/[你的主题名称]"
二、获取Pub/Sub主题的完整资源路径
trigger_resource需要填写主题的完整资源标识,获取方式有两种:
- 使用gcloud命令行:在本地或Cloud Shell执行以下命令(替换
[主题名称]和[项目ID]):
执行后会返回类似gcloud pubsub topics describe [主题名称] --project=[项目ID] --format="value(name)"projects/my-gcp-project/topics/my-topic的完整路径。 - 通过Google Cloud控制台:进入Pub/Sub主题列表,点击目标主题,在"详情"页的"资源名称"字段中复制完整路径。
三、确保服务账号权限
用于GitHub Actions认证的服务账号(即配置中的github-actions-service-account@${PROJECT_NAME}.iam.gserviceaccount.com)需要具备以下权限:
roles/cloudfunctions.developer:用于部署Cloud Function并配置触发器roles/pubsub.publisher:允许Cloud Function订阅Pub/Sub主题
你可以在GCP IAM控制台中给该服务账号添加上述角色。
内容的提问来源于stack exchange,提问作者aroundtheworld
相关产品推荐
相关产品推荐

