如何从Node.js以编程方式创建云运行服务?

如何从Node.js以编程方式创建云运行服务?,node.js,google-api,google-cloud-run,Node.js,Google Api,Google Cloud Run,我正在尝试使用googleapis客户端库从firebase函数创建一个新的云运行服务。以下代码: const auth = new google.auth.GoogleAuth({ projectId, scopes: ['https://www.googleapis.com/auth/cloud-platform'] }); const authClient = await auth.getClient(); const result = await goo

我正在尝试使用
googleapis
客户端库从firebase函数创建一个新的云运行服务。以下代码:

  const auth = new google.auth.GoogleAuth({
    projectId,
    scopes: ['https://www.googleapis.com/auth/cloud-platform']
  });
  const authClient = await auth.getClient();

  const result = await google.run({
    version: 'v1',
    auth: authClient
  }).namespaces.services.create({
    parent: `namespaces/${projectId}`,
    requestBody: {
      metadata: {
        name: 'asdf'
      },
      spec: {
        template: {
          spec: {
            containers: [
              {
                image: 'gcr.io/graph-4d1ec/graph@sha256:80c764961657d7e2fe548b3886c4662c55c9b5ac881aad5a74cce2d1f97895b8',
                env: [
                  { name: 'URL', value: url }
                ]
              }
            ]
          }
        },
        traffic: [{ percent: 100, latestRevision: true }]
      }
    }
  }, {})
产生一个错误:

Error: The request has errors
    at Gaxios._request (/srv/node_modules/gaxios/build/src/gaxios.js:85:23)
    at <anonymous>
    at process._tickDomainCallback (internal/process/next_tick.js:229:7)
错误:请求有错误
在Gaxios._请求时(/srv/node_modules/Gaxios/build/src/Gaxios.js:85:23)
在
在进程中。_tickDomainCallback(internal/process/next_tick.js:229:7)
没有提供关于此请求有何问题的进一步信息


我做错了什么?

最值得注意的是,默认情况下使用的API客户端库指向
run.googleapis.com

但是,在使用
namespaces.services.create
时,您需要一个区域api端点,例如
us-central1-run.googleapis.com
。我不熟悉Node.js,但您需要将API端点从默认值更改为该值

你真是太幸运了,我在5分钟前刚刚发布了一篇博文,解释了
gcloud run deploy
是如何在封面下工作的,详细介绍了API调用、如何进行更新等。文章最后链接了示例Go代码,供你学习。请注意,“更新”云运行服务还有其他一些复杂的地方需要理解,所以请务必查看博客文章


此外,为了调试您遇到的问题,我假设(同样,我对Node.js一无所知)您可能会在
result
对象中找到更多信息,该对象存储了一些错误值或http响应代码或正文

我试着设置
wait google.run({…,rootUrl:'us-central1-run.googleapis.com')
,从库的代码看,这似乎是正确的参数,但现在我发现
404找不到
。我想你需要https://,并且可能需要一个尾部的
/
。你能在中间插入一个<代码> MITMyPosivs/COD>并为你的应用程序设置HTTPSYPROVER EVVAR来捕获你的应用程序的流量吗?这与我的博客文章相结合,可以帮助您进行调试。因为您直接使用API调用,所以不能期望太多的原谅,一切都必须准确。是的,很抱歉,我忘记在我的评论中添加
https://
,但我实际上用它进行了尝试。我还尝试复制请求
gcloud--log http run deploy…
makes,还是相同的问题。您复制的请求中的错误消息是什么?正如我所说,我已经在Go中重新实现了这一点,并公开了示例代码。我建议你研究一下。