正在考虑使用 SSM Parameter Store SDK 来获取 lambda 函数的秘密。我还使用epsagon来包装异步处理函数。Epsagon 需要用一些秘密进行初始化,然后用于包装处理函数:
import * as epsagon from 'epsagon'
epsagon.init({
token: EPSAGON_ACCOUNT_TOKEN,
})
export const lambdaHandler = epsagon.lambdaWrapper(async (event) => {
// do stuff
})
开始使用aws-parameter-cache
从 SSM 参数存储中获取配置值,但由于它们是通过 API 调用解析的,因此需要await
完全解析这些值。
import { ssmParameter } from 'aws-parameter-cache'
const param = ssmParameter({ name: 'foo' })
const value = await param.value; // <-- can only be done inside an async function (nodejs12)
由于我们在 nodejs12 中还没有顶级等待,有没有办法解决处理函数之外的变量?是否可以等待 API 调用await param.value
完成,以便我可以使用存储在 SSM 参数存储中的值初始化 epsagon?
import * as epsagon from 'epsagon'
import { ssmParameter } from 'aws-parameter-cache'
const ssmParam = ssmParameter({ name: 'epsagonToken' })
const epsagonToken = await ssmParam.value // fails since outside of async func
epsagon.init({
token: epsagonToken,
})
export const lambdaHandler = epsagon.lambdaWrapper(async (event) => {
const epsagonToken = await ssmParam.value // works here but too late
})
这会在nodejs 14.3.0 中使用顶级等待“正常工作”吗?自定义运行时?
或者可能是某种形式的永不拒绝的顶级异步函数,例如对此的最佳答案:how-can-i-use-async-await-at-the-top-level?
需要处理程序作为顶级异步函数的回调——从我读过的内容来看,这基本上是顶级异步在 14.3 中的工作方式。寻找将所有秘密存储在 SSM 参数存储中并减少 cf 模板 ENV 变量映射的方法。