【问题标题】:google cloud function deploy start failing谷歌云功能部署开始失败
【发布时间】:2020-05-21 05:24:06
【问题描述】:

今天开始,我无法使用 gcloud cli 部署云功能。

这是我部署云功能的 gloud 命令:

gcloud functions deploy chatbot_api_gateway_002_test --runtime python37 --trigger-http --entry-point process --set-env-vars VERIFICATION_TOKEN=sometokenhere,PUBSUB_TOPIC=entrypointfunction001,GOOGLE_CLOUD_PROJECT=cs-be-dev,DEST_URL=__undefined_yet__,DEST_URLS_TIMEOUT=2 --memory=2GB --region=asia-northeast1

我收到一个错误:

部署功能(可能需要一段时间 - 最多 2 分钟)...失败。

错误:(gcloud.functions.deploy) OperationError: code=3, message=Build failed: Build has timed out

我曾经在 1 小时前使用相同的脚本,但现在 - 团队中没有人能够部署云功能并遇到相同的错误。

在 stackdrive 日志中我只看到这个:

 {
 insertId: "rr5a8qctoo"  
 logName: "projects/be-dev/logs/cloudaudit.googleapis.com%2Factivity"  

operation: {
  id: "operations/c2F0YWNzLWJlLWRldi9hc2lhLW5vcnRoZWFzdDEvY2hhdGJvdF9hcGlfZ2F0ZXdheV8wMDJfdGVzdC9SMGdpR0ZRWk13aw"   
  last: true   
  producer: "cloudfunctions.googleapis.com"   
 }

protoPayload: {
  @type: "type.googleapis.com/google.cloud.audit.AuditLog"   

authenticationInfo: {
   principalEmail: "myemail@domain.com"    
  }
  methodName: "google.cloud.functions.v1.CloudFunctionsService.CreateFunction"   

requestMetadata: {

destinationAttributes: {
   }

requestAttributes: {
   }
  }
  resourceName: "projects/be-dev/locations/asia-northeast1/functions/chatbot_api_gateway_002_test"   
  serviceName: "cloudfunctions.googleapis.com"   

status: {
   code: 3    
   message: "INVALID_ARGUMENT"    
  }
 }
 receiveTimestamp: "2020-02-05T09:53:42.771914617Z"  

resource: {

labels: {
   function_name: "chatbot_api_gateway_002_test"    
   project_id: "be-dev"    
   region: "asia-northeast1"    
  }
  type: "cloud_function"   
 }
 severity: "ERROR"  
 timestamp: "2020-02-05T09:53:42.153Z"  
}

有什么解决方法的建议吗?

【问题讨论】:

  • 不是一个真正的答案,所以提前道歉 - 从今天下午开始,似乎有相当多的人遇到了类似的问题(包括我自己)。因此,我认为谷歌方面存在问题。除了从谷歌云控制台“发送反馈”之外,我认为没有什么可做的。虽然如果有人找到任何解决方案,我很乐意听到任何解决方案!
  • @Besperk - 对,这有点吓人 - 我们怀疑这是 google 方面的问题 - 但根据 google 云仪表板(status.cloud.google.com/summary)- 在过去 24 小时内没有发生中断。

标签: google-cloud-platform google-cloud-functions gcloud


【解决方案1】:

它读取message: "INVALID_ARGUMENT",因此任何参数都可能不正确(更改日志有时会列出重大更改)。请参阅gcloud functions deploy 并进行比较;例如:

允许的值为:128MB、256MB、512MB、1024MB 和 2048MB。

因此2GB 最终可能是INVALID_ARGUMENT,而(NAME : --region=REGION) 也被声明为位置参数。尝试使用--verbosity=infodebug 获得更多输出:

gcloud functions deploy \
    chatbot_api_gateway_002_test \
    --region=asia-northeast1 \
    --runtime python37
    --trigger-http \
    --memory=2048MB \
    --verbosity=info

--entry-point 通常是函数的目录名称,
例如。 helloworldfunctions/helloworld/main.py 作为入口点。

【讨论】:

  • 谢谢!我们可以从这个答案中得到两件事:1)--memory 2)--verbosity 参数作为最佳实践。但是,这不应该完全解决问题,但可以帮助理解问题。 --memory=MEMORY 函数可以使用的内存量限制。允许的值为:128MB、256MB、512MB、1024MB 和 2048MB。默认情况下,新功能限制为 256MB 内存。将更新部署到现有函数时,除非您指定此标志,否则该函数将保持其旧的内存限制。 --verbosity=info
  • --entry-point 应该是您想要部署的功能。在这个问题的情况下应该是“过程”
【解决方案2】:

错误:(gcloud.functions.deploy) OperationError: code=3, message=Build failed: Build has timed out

我希望您提出两种不同的解决方法,可以解决您在部署期间 Cloud Functions 超时的问题。

这可能是因为timeout 标志设置为低,或者部署占用的时间超过了timeout 标志中指定的值,从而导致云函数部署失败。

  1. 使用gcloud functions deploy 时,您可以使用--timeout 标志以秒为单位指定超时。

    here 所述,它将以秒为单位设置函数执行时间。它默认为现有功能,但在您的情况下,默认为 60 秒,因为您正在创建一个新功能。如果您觉得 60 秒不足以部署您的代码,请尝试增加该值。

    记住不能超过 540 秒。

   gcloud functions deploy … --timeout [VALUE_SECONDS]
  1. 鉴于您在部署期间遇到此超时问题,您可以配置 Cloud SDK 的特定方面的行为以解决您的问题。

    here 所述,使用命令gcloud config set 将仅在您的活动配置中设置指定的属性。为了增加总超时时间,您可以使用cloud_buil_timeout,如here 所述,在部署期间等待Docker 构建完全完成。

    总结一下,你可以尝试运行以下命令:

   gcloud config set app/cloud_build_timeout VALUE

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2019-01-30
    • 1970-01-01
    • 2020-10-19
    • 2017-08-15
    • 2021-02-26
    • 2018-09-14
    • 2020-05-21
    • 1970-01-01
    • 2022-09-01
    相关资源
    最近更新 更多