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

Snowflake容器服务中FastAPI返回Snowflake UI而非API响应问题

SPCS部署FastAPI后调用端点返回Snowflake默认UI而非JSON响应

环境

  • 平台:Snowflake Snowpark Container Services(SPCS)
  • 框架:FastAPI(Python)
  • 容器状态:RUNNING
  • 端点状态:PUBLIC端点可访问

容器配置

spec:
  containers:
    - name: main
      image: /my_db/my_schema/image_repository/my_img:v1
      env:
        PYTHONUNBUFFERED: "1"
        TOKEN: "changeme"
        SERVER_PORT: 8080
      resources:
        requests:
          memory: 2Gi
          cpu: 1000m
        limits:
          memory: 4Gi
          cpu: 2000m
      readinessProbe:
        port: 8080
        path: /healthz
  endpoints:
    - name: fastapi-endpoint
      port: 8080
      public: true

预期行为

向https://my-endpoint.snowflakecomputing.app/api/data发送POST请求,请求体如下:

{
    "image": "base64_image_string",
    "bill_no": "1000",
    "sheet_no": "466432",
    "attempt": "5"
}

应返回JSON响应:

{
    "status": "failed",
    "message": "Not Detected",
    "bill_no": "100017119874",
    "sheet_no": "466432",
    "crop_image_path": ""
}

实际行为

调用端点时收到Snowflake UI HTML页面(登录表单或默认界面),而非预期的FastAPI JSON响应。

已完成排查

  • ✅ 服务状态为RUNNING
  • ✅ 通过SHOW SERVICE CONTAINERS确认容器健康
  • ✅ 端点可访问且返回200状态码
  • ✅ FastAPI应用启动成功(日志无错误)
  • ✅ 健康检查端点/healthz日志显示正常,但Postman调用仍返回相同HTML响应
  • ✅ 容器和端点均正确配置了端口8080

解决方法

1. 补全端点路径前缀

SPCS公共端点需要附加固定服务路径前缀,格式为/services/<账户标识>/<数据库>/<Schema>/<服务名>,直接访问根路径会被路由到Snowflake默认UI。

  • 拼接完整请求路径:https://my-endpoint.snowflakecomputing.app/services/<你的账户标识>/<my_db>/<my_schema>/<你的服务名>/api/data
  • 执行DESCRIBE SERVICE <服务名>可获取完整前缀信息。

2. 修正FastAPI绑定地址

若FastAPI仅绑定127.0.0.1,容器内部可访问但SPCS反向代理无法转发请求。修改启动代码:

if __name__ == "__main__":
    import uvicorn
    import os
    uvicorn.run("main:app", host="0.0.0.0", port=int(os.getenv("SERVER_PORT", 8080)))

3. 检查认证与权限设置

Snowflake可能对未授权请求重定向到登录页,即使端点标记为PUBLIC:

  • 确保请求携带正确的Snowflake认证令牌(如JWT),或配置服务允许匿名访问(需符合安全策略)。
  • 核查服务的网络ACL和权限规则,确认PUBLIC端点未被限制访问。

4. 验证容器内端口监听情况

进入容器执行netstat -tulpn或ss -tulpn,确认FastAPI确实在8080端口监听;同时检查环境变量SERVER_PORT是否被应用正确读取。

内容的提问来源于stack exchange,提问作者Sudhanshu Joshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:35:13