You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cloud Task调用Cloud Run返回UNKNOWN状态问题(已解决:域名差异)

更新

生成的主机名与Google文档略有差异:
不是 https://SERVICE_IDENTIFIER.run.app
而是 https://SERVICE_IDENTIFIER.a.run.app

问题已关闭


问题描述

我有一个运行正常的Cloud Run服务,同时有一个能正常创建Cloud Task的类,所有请求外部资源的HTTP任务都能执行。但创建请求Cloud Run服务的HTTP任务时,任务创建成功,调度时却返回UNKNOWN响应状态。日志显示任务已运行(失败),但Cloud Run服务未收到任何请求。手动用相同负载请求同一URL可正常工作。

凭据/安全配置

  • Cloud Run服务为公开访问
  • Cloud Run服务与Cloud Task使用相同服务账号创建
  • 服务账号拥有以下角色:
    • Cloud Datastore User
    • Cloud Run Invoker
    • Cloud Run Service Agent
    • Cloud Tasks Enqueuer
    • Cloud Tasks Service Agent
    • Service Account OpenID Connect Identity Token Creator
    • Service Account User

创建Cloud Task的代码

protected async Task CreateTaskAsync(
    Uri uri, // 指向我的Cloud Run服务的URI,格式为https://SERVICE_IDENTIFIER.run.app/my/path
    DateTime runDate,
    string payload, // JSON数据
    HttpMethod method = HttpMethod.Post
)
{
    var task = new Google.Cloud.Tasks.V2.Task {
        HttpRequest = new HttpRequest {
            HttpMethod = method,
            Url = uri.ToString(),
            Body = ByteString.CopyFromUtf8(payload),
            Headers = { { "Content-Type", "application/json" } },
            // 查资料后尝试添加OIDC token,但无效果
            OidcToken = new OidcToken
            {
                ServiceAccountEmail = Constants.ServiceConfiguration.ServiceAccount ,
                Audience = Constants.ServiceConfiguration.Host
            }
        },
        ScheduleTime = Timestamp.FromDateTime(runDate),
    };
    
    
    var projectId = Constants.ServiceConfiguration.ProjectId;
    _queueName = new QueueName(projectId, Location, BotQueueName);

    _tasksClient = CloudTasksClient.Create();
    await _tasksClient.CreateTaskAsync(_queueName, task);
}

Cloud Task日志

{
  "insertId": $INSERT_ID$,
  "jsonPayload": {
    "task": $TASK_NAME$,
    "@type": "type.googleapis.com/google.cloud.tasks.logging.v1.TaskActivityLog",
    "taskCreationLog": {
      "targetType": "HTTP",
      "status": "OK",
      "scheduleTime": "2022-11-21T07:00:00Z",
      "targetAddress": "POST https://SERVICE_IDENTIFIER.run.app/my/path"
    }
  },
  "resource": {
    "type": "cloud_tasks_queue",
    "labels": { ... }
  },
  "timestamp": "2022-11-20T22:27:09.397470874Z",
  "severity": "INFO",
  "logName": $LOG_NAME$,
  "receiveTimestamp": "2022-11-20T22:27:10.010639079Z"
},
{
  "insertId": $INSERT_ID$,
  "jsonPayload": {
    "attemptResponseLog": {
      "maxAttempts": 0,
      "attemptDuration": "0.031349s",
      "status": "UNKNOWN",
      "responseCount": "0",
      "targetAddress": "POST https://SERVICE_IDENTIFIER.run.app/my/path",
      "targetType": "HTTP",
      "dispatchCount": "1",
      "scheduleTime": "2022-11-21T07:00:00Z"
    },
    "@type": "type.googleapis.com/google.cloud.tasks.logging.v1.TaskActivityLog",
    "task": $TASK_NAME$
  },
  "resource": {
    "type": "cloud_tasks_queue",
    "labels": { ... }
  },
  "timestamp": "2022-11-20T22:33:10.367512625Z",
  "severity": "ERROR",
  "logName": $LOG_NAME$,
  "receiveTimestamp": "2022-11-20T22:33:11.022774614Z"
}

我尝试为服务账号添加角色、为任务添加OIDC token、使用不同HTTP方法发送请求,但均无效果。使用相同负载请求外部URL的任务可正常执行。


内容的提问来源于stack exchange,提问作者Chernyshev Ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 05:05:16