如何有效地为 firebase 云函数存储令牌?

How to store Token for firebase cloud functions efficiently?

我有一个 firebase 云函数,它使用 express 中间件生成一个 authToken,它通过路由向上传递。

这个令牌持续 24 小时,所以我不想用过多的请求向服务发送垃圾邮件。因此,我想在重新生成之前将结果缓存一段时间。

我考虑了两种方法。

  1. 查看如何在生成令牌时缓存 axios 请求。
  2. 使用 Firebase Secret Manager 存储值。

在研究 axios 缓存时,我已经使用了秘密管理器,所以并行实现了这两个。

秘密管理员

目前我已经实现了 secret manager 来存储和更新令牌,当我需要外部令牌时 API,我可以从 secret manager 中获取它..

我有一个计划的作业,然后创建一个新令牌,然后在添加新令牌之前禁用所有以前的秘密版本。

创建token是通过axios调用外部的auth端点实现的API.

Axios 缓存 在了解如何为云功能上的 express 运行 启用缓存时。我目前的印象是它涉及添加另一层复杂性,例如 CDN 或 Redis 解决方案。

我还看到了中间缓存解决方案,例如 https://github.com/AlbinoDrought/cachios,它看起来像是利用了某种本地内存。我认为这意味着分布在不同 regions/instances 中的云功能将拥有自己独特的本地缓存。我不知道这是否是一个问题。但是我会认为在配置和设置方面比说 redis 更轻量级吗?

我的问题 是,我希望这不是基于 SO 的意见。但是

使用秘密管理器真的是个坏主意吗?鉴于秘密经理通常是我认为围绕不经常改变的长期价值观而设计的。还是完全没问题,如果我每天有 2 个请求,那么每年可能有 2x365 个版本针对秘密管理器进行记录,这些版本必须时不时地进行整理。是我不知道的含义吗?

或者启用某种 CDN 或快速缓存层是一种更标准的方法吗?如果是这样,是否有关于专门针对 google Firebase 云功能的简单快速缓存层的任何指导?

每天 2 个请求就可以了。请在此处查看有关轮换密钥的文档:https://cloud.google.com/secret-manager/docs/rotation-recommendations

请注意,它表明,在方法 2 和 3 中,有效的用例包括在每次启动时获取秘密,以及连续获取秘密。 2 次/天的频率低于这两者。