繁体   English   中英

用于部署第 2 代云功能的云构建:INVALID_ARGUMENT

[英]Cloud build for deploying Gen 2 Cloud Functions: INVALID_ARGUMENT

我希望通过云构建将一些代码部署到云功能。 总体目标是通过使用 eventarc 更改谷歌云存储来触发云 function gen 2。

我能够通过终端进行部署。 当我在我的 cloudbuild.yaml 中应用相同的 arguments 并希望通过 cloudbuild 部署我的云功能时,我继续收到以下错误:

ERROR: (gcloud.functions.deploy) INVALID_ARGUMENT: Trigger event type must be specified.

这是我在终端中运行的(正确部署):

gcloud functions deploy FUNCTION_NAME\
--gen2 \
--runtime=python310 \
--region=REGION \
--source=. \
--entry-point=ENTRY_POINT_NAME \
--trigger-event-filters="type=google.cloud.storage.object.v1.finalized" \
--trigger-event-filters="bucket=BUCKET_NAME" \
--run-service-account=SERVICE_ACCOUNT \
--trigger-location=us

下面是我在 cloudbuild.yaml 中的内容(引发上面列出的错误):

  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    args:
      - gcloud
      - functions
      - deploy
      - FUNCTION_NAME
      - --gen2
      - --runtime=python310
      - --region=REGION
      - --source=.
      - --entry-point=ENTRY_POINT_NAME
      - --trigger-event-filters="type=google.cloud.storage.object.v1.finalized"
      - --trigger-event-filters="bucket=BUCKET_NAME"
      - --run-service-account=SERVICE_ACCOUNT
      - --trigger-location=us

我的主要困惑是为什么两者之间的行为会有所不同。

任何帮助是极大的赞赏!

我推荐两件事

  • 使用云构建器CloudSDK而不是您当前的
  • 在您的 args 列表中删除 gcloud,因为它是您的云构建器容器的默认入口点
  - name: 'gcr.io/cloud-builders/gcloud'
    args:
      - functions
      - deploy
      - FUNCTION_NAME
      - --gen2
      - --runtime=python310
      - --region=REGION
      - --source=.
      - --entry-point=ENTRY_POINT_NAME
      - --trigger-event-filters="type=google.cloud.storage.object.v1.finalized"
      - --trigger-event-filters="bucket=BUCKET_NAME"
      - --run-service-account=SERVICE_ACCOUNT
      - --trigger-location=us

我最终使用云构建构建了第 2 代 function,方法是使用此处为第 1 代列出的 arguments。我不确定这是否是预期的行为,但最终结果是我想要的第 2 代 ZC1C425268E683894 cloud1450 触发器创建的事件存储变化。 下面是我最终使用的 cloudbuild.yaml:

- name: 'gcr.io/cloud-builders/gcloud'
args:
  - functions
  - deploy
  - FUNCTION_NAME
  - --gen2
  - --runtime=python310
  - --region=REGION
  - --source=.
  - --entry-point=ENTRY_POINT_NAME
  - --trigger-event=google.storage.object.finalize
  - --trigger-resource=BUCKET_NAME
  - --run-service-account=SERVICE_ACCOUNT
  - --trigger-location=us

我遇到了同样的错误,我没有使用第一代标志,而是能够使用python39作为运行时环境来部署 function。 请尝试以下:

- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
  args:
    - gcloud
    - functions
    - deploy
    - FUNCTION_NAME
    - --gen2
    - --runtime=python39
    - --region=REGION
    - --source=.
    - --entry-point=ENTRY_POINT_NAME
    - --trigger-event-filters="type=google.cloud.storage.object.v1.finalized"
    - --trigger-event-filters="bucket=BUCKET_NAME"
    - --run-service-account=SERVICE_ACCOUNT
    - --trigger-location=us

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM