gpt4 book ai didi

google-cloud-functions - 将 Google Secret Manager 与 Firebase Functions 和 Stripe 结合使用(顶级)

转载 作者:行者123 更新时间:2023-12-03 08:05:44 27 4
gpt4 key购买 nike

你好,

对 TS 相当陌生,一般来说只有一点后端经验,所以如果我完全不明白这个想法,我很抱歉。

所以我真的很喜欢使用 Google Secret Manager 而不是 Firebase 函数的自定义环境配置的想法。

下面都是在我的函数目录中的 config.ts 中完成的。

我需要初始化 strip 。传统教程说要做类似以下示例的操作:

import Stripe from 'stripe';
export const stripeSecret = functions.config().stripe.secret;

const stripe = new Stripe(stripeSecret, {apiVersion: '2020-08-27'});

我认为将其更改为以下内容是理想的:

import Stripe from 'stripe'
import {SecretManagerServiceClient} from '@google-cloud/secret-manager';
export async function getSecret(name:string){
const [version] = await secrets.accessSecretVersion({
name: `projects/example/secrets/${name}/versions/latest`,
});
return version.payload?.data?.toString();
}

export const stripeSecret = await getSecret("Stripe-API")
const stripe = new Stripe(stripeSecret, {apiVersion: '2020-08-27'});

但这会导致顶层异步/等待的问题。

我有哪些选择以及最佳实践是什么?

最佳答案

Google Secret Manager 是一个有用的实用程序,下面是使用 Secret Manager 时的一些最佳实践。

您可以尝试使用以下方法来创建和使用 secret :

  1. 从本地项目目录的根目录中,运行以下命令:

    firebase 函数: secret :设置 SECRET_NAME

  2. 输入 SECRET_NAME 的值。

    CLI 回显成功消息并警告您必须部署功能以使更改生效。

  3. 在部署之前,请确保您的函数代码允许函数使用 runWith 参数访问 key :

        exports.processPayment = functions
// Make the secret available to this function
.runWith({ secrets: ["SECRET_NAME"] })
.onCall((data, context) => {
const myBillingService = initializeBillingService(
// reference the secret value
process.env.SECRET_NAME);
// Process the payment});
  • 部署云功能:

    firebase 部署 --only 函数

  • 您还可以像访问任何其他环境变量一样访问它。相反,如果另一个未在 runWith 中指定 secret 的函数尝试访问该 secret ,它将收到一个未定义的值:

    要查看完整的最佳实践列表,请访问下一个链接 [1],要了解有关管理 secret 版本的更多信息,请查看下一个链接 [2]。

    [1] https://cloud.google.com/secret-manager/docs/best-practices

    [2] https://cloud.google.com/secret-manager/docs/managing-secret-versions

    关于google-cloud-functions - 将 Google Secret Manager 与 Firebase Functions 和 Stripe 结合使用(顶级),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72431999/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com