Zum Hauptinhalt springen

Variablen in Google Cloud Storage schreiben

Was dieses Beispiel tut​

Dieses Beispiel zeigt, wie das Payload des Web-Service-Moduls (Prozessvariablen) als JSON-Datei in Google Cloud Storage gespeichert wird. Es ist ein nützliches Muster, wenn Sie eine Kopie jeder Chat-Einreichung für Analysen, Audits oder die Weiterverarbeitung aufbewahren möchten.

Jede Anfrage erstellt eine JSON-Datei mit den aktuellen Prozessvariablen. Der Dateiname ist ein Zeitstempel, sodass keine Datei überschrieben wird.

Warum eine Cloud Function verwenden?​

Eine Google Cloud Function bietet eine sichere Ausführungsumgebung direkt neben Google Cloud Storage. Sie können das Beispiel später erweitern, z. B. um die Daten vor dem Speichern zu transformieren oder weitere Google-Cloud-APIs aufzurufen.

Voraussetzungen​

  • Ein Google-Cloud-Projekt mit aktivierter Abrechnung.
  • Ein Cloud-Storage-Bucket in diesem Projekt.
  • Die Node.js-Laufzeit 18 (oder neuer), die die benötigten Bibliotheken mitbringt.

Bereitstellen der Cloud Function​

  1. Erstellen Sie im Google Cloud Console eine neue Cloud Function und wählen Sie einen Namen.
  2. Erlauben Sie nicht authentifizierte Aufrufe. Die Authentifizierung erfolgt im Funktionscode über einen Authorization-Header, sodass die Funktions-URL für sich genommen kein Sicherheitsrisiko darstellt. Veröffentlichen Sie die URL nicht.
  3. Fügen Sie die Umgebungsvariablen in der Funktionskonfiguration hinzu:
    • BUCKET_NAME: der Name Ihres Cloud-Storage-Buckets.
    • AUTH_SECRET: ein geheimer Wert, den Sie auch als Authorization-Header im Web-Service-Modul setzen.
  4. Fügen Sie den folgenden Code in index.js ein.
const { Storage } = require('@google-cloud/storage');
const functions = require('@google-cloud/functions-framework');

const bucketName = process.env.BUCKET_NAME || '';
const authSecret = process.env.AUTH_SECRET || '';

functions.http('writeVariablesToStorage', async (req, res) => {
const { authorization } = req.headers || {};

// set the Authorization header like this in the Web Service module
if (authSecret && authorization !== `Bearer ${authSecret}`) {
res.status(403).send('Forbidden');
return;
}

// req.body contains:
// req.body.params - params set in the web service module config
// req.body.variables - variables of the process instance / customer

const vars = req && req.body ? req.body.variables : null;
if (!vars) {
res.status(400).send('Missing variables');
return;
}

const storage = new Storage();
const bucket = storage.bucket(bucketName);
const fileName = `${Date.now()}.json`;

await bucket.file(fileName).save(JSON.stringify(vars), {
contentType: 'application/json',
});

res.status(200).send({ ok: true, file: fileName });
});

Verwendung in LoyJoy​

  1. Fügen Sie Ihrem Prozess ein Web-Service-Modul hinzu.
  2. Geben Sie die URL Ihrer bereitgestellten Funktion ein.
  3. Setzen Sie den Authorization-Header auf Bearer <AUTH_SECRET> mit demselben Wert wie in der Funktionskonfiguration.
  4. Veröffentlichen und testen: Nachdem das Modul ausgeführt wurde, erscheint die JSON-Datei mit den aktuellen Variablen in Ihrem Bucket.
hinweis

Dies ist Beispielcode. Prüfen Sie Bucket-Namen, Berechtigungen und Authentifizierung in Ihrer eigenen Google-Cloud-Umgebung, bevor Sie ihn produktiv verwenden.

Verwandte Seiten​