我有这样的代码来获取秘密:
import {SecretManagerServiceClient} from "@google-cloud/secret-manager";
const client = new SecretManagerServiceClient();
async function getSecret(secret: String, version = "latest") {
const projectID = process.env.GOOGLE_CLOUD_PROJECT;
const [vs] = await client.accessSecretVersion({
name: `projects/${projectID}/secrets/${secret}/versions/${version}`
});
const secretValue = JSON.parse(vs.payload.data.toString());
return secretValue;
}
export {getSecret};我想用process.env.SENTRY_DNS替换await getSecrets("SENTRY_DNS"),但不能调用async函数之外的承诺(await)。
Sentry.init({
dsn: process.env.SENTRY_DNS,
environment: Config.isBeta ? "Beta" : "Main"
});
function sentryCreateError(message, contexts) {
Sentry.captureMessage(message, {
level: "error", // one of 'info', 'warning', or 'error'
contexts
});
}谷歌秘密的最佳实践是什么?我应该在"config“文件中加载一次秘密,然后从那里调用值吗?如果是这样的话,我不知道怎么做,你有一个例子吗?
发布于 2022-01-29 09:42:23
撇开代码示例(反正我不使用JS ),我会考虑几个不同的问题,这些问题的答案可能会影响设计。例如:
执行此代码的
例如,假设这将是一个云函数。下一个问题-
)。
第二种选择可能需要进一步讨论。可以异步获取这些值。在什么情况下可能有用?我认为-只在代码有其他事情要做的情况下,而等待秘密值,这些值需要(可能)做云函数的主要工作。我们能刮多少钱?-可能几毫秒的秘密管理器API调用。有什么缺点吗?-代码复杂性,就像某些人将来要维护代码一样。性能增益仍然超重吗?-在这种情况下,我们可能可以返回到上面列表中的第2项,并考虑在环境变量中存储秘密。
第一个选择呢?同样--如果性能是优先级--返回到上面的第2项,否则--代码简单性和可维护性是优先级吗?我们这里不需要任何异步工作吗?这个问题的答案可能取决于你公司/团队的技能、知识和财务预算,而不是取决于技术偏好。
一些结论性意见。我的背景、经验、预算、要求--可能与你的情况完全不同。我的假设(即代码是用于云功能的)-也可能是完全错误的。因此,我建议用一些批评来考虑我的写作,并使用只与你的具体情况相关的想法。
https://stackoverflow.com/questions/70900771
复制相似问题