你的逻辑归你所有
Fóir 不托管你的代码。你编写函数,将其托管在任何能提供 HTTP 服务的地方,并把它的 URL 注册为操作,Fóir 就会调用它,在重试可能有帮助时重试,并保留每次运行的记录。
HTTP 契约
对操作的调用是带 JSON 请求体的 HTTP POST,因此任何能提供 HTTP 服务并验证已签名令牌的语言都可以。已发布的 SDK 辅助工具支持 JavaScript 和 TypeScript。使用其他语言时,你需要自行实现请求和令牌校验。端点必须可公开路由,保存时以及调用时,环回地址、私有地址和云元数据地址都会被拒绝。本地开发时,foir operations dev 会把项目的分发转发到你的机器,而无需将其暴露出去。
每次调用携带的令牌
每次调用都在 X-Foir-Token 标头中携带一个已签名的短期令牌,作用域限定于这一次分发。你的函数用 Fóir 公布的密钥来验证它。令牌恰好携带该操作声明的能力,例如读取某个模型的记录或写入另一个模型的记录。你的函数不持有 API 密钥,而是用令牌构建客户端,并以该操作的身份调用 Fóir。
读取机密
同一个令牌还能让你的函数读取项目的机密。需要某个机密时,它通过 getSecret 获取,Fóir 发出的请求中不会代入任何内容。例外是模板化操作:此时由 Fóir 自己调用第三方 API,你的代码不会运行。这时 Fóir 会从保管库把机密填入发出的请求。
重试与运行记录
可通过再次尝试修复的失败,例如端点无法访问或服务器错误,会被重试,默认三次。客户端错误或拒绝则不会。重试次数用尽的运行会进入死信队列,你可以在其中检查、重试或忽略。每次执行都会连同状态、时长、结果或错误、触发方式和重试次数一并存储。同一负载可能不止一次到达,因此请把处理程序写成幂等的。