如何将 Secret Manager 与第二代 Cloud Firestore 触发器结合使用?

che*_*pus 1 firebase google-cloud-functions google-cloud-firestore google-secret-manager

我正在将第一代Cloud Firestore 触发器迁移到第二代。

但是,我不知道如何从第二代 Cloud Trigger 中访问 Google 的 Secret Manager。

存在通过使用传递到函数的依赖项数组中的实用程序来访问第二代云函数中的机密的文档。defineSecret但是,此方法不适用于第二代云触发器,因为没有选项参数来传递依赖项数组。

用一个片段来解释我正在尝试做的事情:

import { onDocumentCreated } from 'firebase-functions/v2/firestore';
import { defineSecret } from 'firebase-functions/params';

const apiKey = defineSecret('API_KEY');

const onUserCreated = onDocumentCreated(
  'users/{userId}',
  async (event) => {
    //  access apiKey secret 
  }
);
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。谢谢。

小智 5

您可以传递DocumentOptions对象作为第一个参数,它基本上是EventHandlerOptions的扩展,用于使用以下代码设置机密:

import * as admin from "firebase-admin";
admin.initializeApp();
import { onDocumentWritten } from "firebase-functions/v2/firestore";
import { defineSecret } from "firebase-functions/params";

const discordApiKey = defineSecret("DISCORD_API_KEY");

export const writetofirestore = onDocumentWritten({
  document: "users/{userId}",
  secrets: [discordApiKey] // you can provide secrets like this 
}, (event) => { 
  const apiKey = discordApiKey.value(); // use secret like this
});
Run Code Online (Sandbox Code Playgroud)

参考:firestore.onDocumentWritten()