Modal
连接
从终端连接Modal。传入--help查看Modal接受的标志,在无头环境中再加上--no-browser。
polylane cloud connect --provider modal来自你的Modal设置的令牌ID和令牌密钥。
Modal通过在你的Modal设置中创建的令牌连接。一个Modal令牌恰好解析到一个工作区,所以一个令牌连接一个工作区。令牌在存储前加密,智能体永远看不到它们。
- 打开Modal,进入Settings → Tokens。
- 点击New token,复制token ID(以
ak-开头)和token secret(以as-开头)两个值。 - 把两个值粘贴到Polylane中。
- Polylane验证这一对值并开始同步。
Polylane发现你的环境,以及每个环境中的应用、函数(包括Web端点)、运行中的沙箱、卷、密钥、队列和dict。密钥只按名称映射:Modal永远不会暴露密钥值。
Modal没有只读令牌选项,所以令牌带有创建它的账户的权限。Polylane在同步期间只从Modal读取。
故障排除
“Invalid token”错误
- 令牌ID和令牌密钥都是必需的;任何一个单独都无法验证身份。
- 检查该令牌没有在Modal的设置中被撤销。
- 确认你复制了完整的值,包括
ak-和as-前缀。
缺少资源
- 函数通过它们的应用被发现,所以从未部署过的应用没有可显示的函数。
- 已结束的沙箱会被跳过:只有运行中的才会出现。
- 触发一次手动同步,以便比下一次计划同步更早刷新。
指标和成本
- 应用带有两张图表:每个时间桶的stderr日志行数,以及每小时的计量支出。对于其他一切,Modal只报告瞬时仪表值,所以函数、沙箱和卷没有自己的图表。
- stderr计数是日志行数而不是失败次数:一个Python回溯就是好几行。
- Modal保留日志24小时,所以图表永远不会追溯到比这更早。
- 支出按应用归属,且Modal只在一个小时结束后才落定该小时,所以最新的一小时在稳定之前读数偏低。
从CI作业或任何其他没有浏览器的环境连接Modal。
连接Modal不需要浏览器:控制台调用的同一个端点可以放进CI作业。一次经过身份验证的POST创建连接并启动第一次同步。
前提条件
- 一个具有
cloud_accounts:write和cloud_accounts:read权限范围的Polylane API密钥。参见API密钥与OAuth。 - 你的工作区ID,以
ws_开头。用同一个密钥从GET /v1/workspaces读取它。 - 一对来自Settings → Tokens的Modal令牌:令牌ID(以
ak-开头)和令牌密钥(以as-开头)。
创建连接
curl -X POST https://api.polylane.com/v1/cloud_accounts \
-H "x-api-key: $POLYLANE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"provider": "modal",
"workspaceId": "ws_0abc123",
"tokenId": "ak-...",
"tokenSecret": "as-..."
}'
该令牌恰好解析到一个Modal工作区,所以一次调用连接一个工作区。
响应列出已连接的内容,第一次同步已经在运行。精简为流程其余部分读取的两个字段:
{
"success": true,
"result": {
"provider": "modal",
"accounts": [{ "id": "acc_34gky74ibc92h8t2efn8csrh", "status": "syncing" }],
"failures": []
}
}
已经连接的账户会落在failures而不是accounts中,所以重复调用永远不会产生重复的连接。
等待第一次同步
按id轮询每个返回的账户,直到status达到ready(注册时为new,资源流入时为syncing):
until [ "$(curl -s "https://api.polylane.com/v1/cloud_accounts/$WORKSPACE_ID/$ACCOUNT_ID" \
-H "x-api-key: $POLYLANE_API_KEY" | jq -r '.result.status')" = "ready" ]; do
sleep 15
done
给循环一个截止时间,让失败的连接使作业失败而不是挂起。账户变为ready后,它的资源已在拓扑中,Polylane已经开始它的第一次检查。
从API断开连接
删除连接会停止所有同步和检查,并删除Polylane持有的凭据。该调用需要cloud_accounts:delete权限范围:
curl -X DELETE "https://api.polylane.com/v1/cloud_accounts/$WORKSPACE_ID/$ACCOUNT_ID" \
-H "x-api-key: $POLYLANE_API_KEY"
然后按下方Disconnect所述在提供商侧撤销Modal凭据。
断开连接
断开连接会停止所有同步和检查,并删除Polylane持有的凭据。 Polylane在Modal中设置的一切也会被移除;不会留下任何东西。
polylane cloud disconnect <id>工具
5智能体可以在线程中执行的操作。
支持的资源
10会出现在你的基础设施图中的资源类型。