跳转至

应用管理

应用是 Hyac 中的运行边界。一个应用包含函数、依赖、环境变量、数据库账号、对象存储空间和运行时容器。日常使用时,建议按业务系统、项目或隔离需求创建不同应用。

应用管理

应用管理页用于创建应用、查看应用 ID、启动或暂停应用,并进入应用工作台。截图中的 iEmSSuBk 是当前测试环境的应用 ID。

应用和访问域名

每个应用都有一个 app_id。部署完成后,函数访问域名由 app_id 和主域名组成:

https://<app_id>.<DOMAIN_NAME>/<function_id>

例如:

https://demo.example.com/hello

这里 demo 是应用 ID,example.com 是部署时设置的 DOMAIN_NAMEhello 是函数 ID。

创建应用

进入“应用管理”页面后,可以创建新的应用。创建应用后,系统会为它准备独立的运行资源:

  • 独立的函数集合。
  • 独立的应用数据库。
  • 独立的 RustFS/S3 兼容对象存储 Bucket。
  • 独立的运行时容器,容器名为 hyac-app-runtime-<app_id小写>

创建后建议立即确认:

  • 应用 ID 是否便于识别,且适合作为子域名前缀。
  • 当前用户是否拥有该应用访问权限。
  • 需要的环境变量、依赖和 CORS 策略是否已经配置。

选择当前应用

控制台中的函数、数据库、对象存储、仪表盘和日志都依赖当前应用。切换应用后,这些页面会展示新应用的数据。

如果页面显示为空,先检查当前应用是否正确。很多“找不到函数”“对象为空”“日志为空”的问题,本质上都是应用上下文不一致。

运行时容器

Hyac 不会为每个应用常驻一个运行时容器。应用第一次收到函数请求时,Server 会通过 Docker 创建对应容器:

hyac-app-runtime-<app_id小写>

容器启动后会加载:

  • 当前应用的函数代码。
  • 当前应用的公共函数。
  • 当前应用的环境变量。
  • 当前应用的 Python 依赖。
  • 当前应用的数据库连接和对象存储上下文。

当 Server 关闭或应用被停止时,运行时容器会被清理。调试时可以通过 Docker 日志查看真实执行输出。

CORS 和外部调用

如果函数需要被浏览器页面直接调用,需要正确配置 CORS。CORS 设置属于应用级配置,会影响当前应用下所有函数。

建议:

  • 内部系统调用时只允许明确的业务域名。
  • 本地调试时可以临时放宽来源。
  • 不要在生产环境长期使用过宽的跨域策略。

应用存储

每个应用会关联自己的对象存储空间。函数代码中推荐通过 ctx.cloud.storage() 访问当前应用的 Bucket,控制台“对象存储”页面也会展示同一空间中的文件。旧入口 ctx.s3 仍保持兼容。

这种设计可以避免不同应用之间误读或误写文件。

常见问题

应用域名打不开

检查三件事:

  • DOMAIN_NAME 是否正确。
  • DNS 是否包含 *.<DOMAIN_NAME> 泛解析。
  • Traefik 是否正常监听 80443

生产环境使用 docker-compose.yml 和 ACME 证书;开发环境建议使用 .env.devdocker-compose.dev.yml*.localhost 本地证书。

函数首次调用返回 502

这通常表示运行时容器未能启动或健康检查失败。查看:

docker logs -f hyac_server
docker logs -f hyac-app-runtime-<app_id小写>