Serverlose Funktionen

Last updated:

Bitte beachten: Wenn Sie eine serverlose Funktion als Teil eines Entwicklerprojekts erstellen, besuchen Sie stattdessen die Dokumentation der serverlosen Funktion für Entwicklerprojekte. Die folgende Dokumentation dient zum Erstellen serverloser Funktionen außerhalb der Entwicklerprojektplattform.

APPLICABLE PRODUCTS
  • Content Hub
    • Enterprise

Mit serverlosen Funktionen können Sie serverseitigen Code schreiben, der über APIs mit HubSpot und Drittanbieterdiensten interagiert. APIs, für die eine Authentifizierung erforderlich ist, können aus Sicherheitsgründen nicht für das Front-End einer Website genutzt werden – Ihre Anmeldedaten wären zugänglich und die Website damit Angriffen ausgesetzt. Serverlose Funktionen können eine Mittlerfunktion übernehmen, sodass Ihre Anmeldedaten geschützt bleiben. 

Mit serverlosen Funktionen müssen Sie keine neuen Server aufsetzen und verwalten. Der Aufwand ist viel geringer und serverlose Funktionen lassen sich einfach anpassen und skalieren, wenn ein Unternehmen wächst.

Sie können mit serverlosen Funktionen experimentieren, indem Sie einen CMS-Entwickler-Account verwenden. Um Ihre erste serverlose Funktion zu erstellen, lesen Sie den Leitfaden für den Einstieg in serverlose Funktionen.

Beispiele

Die Liste der Dinge, für die Sie serverlose Funktionen von HubSpot verwenden können, ist Ihrer Fantasie überlassen. Hier sind einige Beispiele:

  • Sammeln von Daten und Speichern in HubDB oder im CRM von HubSpot
  • Komplexe Datenberechnungen
  • Dynamische Anzeige von Daten aus anderen Systemen
  • Registrierungssysteme für Events
  • Formulareinsendungen, die Daten an andere Systeme übermitteln

Bei dem Beispiel des Event-Registrierungssystems könnten Sie serverlose Funktionen nutzen, um die Registrierung zu verarbeiten und zu aktualisieren, wie viele freie Plätze es für ein Event gibt. Der Ablauf wäre folgendermaßen:

  1. Der Website-Besucher navigiert zu Ihrer Event-Registrierungsseite, die anzeigt, dass noch 15 weitere Personen teilnehmen können. Der Besucher füllt ein benutzerdefiniertes Formular aus, um sich für die Veranstaltung anzumelden, und sendet es ab.
  2. Für diese Einsendung haben wir festgelegt, dass eine POST-Anfrage an ihrewebsite.com/_hcms/api/event/teilnehmer gesendet wird. event/teilnehmer ist Ihre serverlose Funktion.
  3. Ihre serverlose Funktion empfängt die vom Benutzer übermittelten Daten und führt ein paar Aktionen aus, bevor sie eine Antwort an den Browser zurückgibt:
  4. Übermittelt die Formularfelddaten an die HubSpot-API für die Formulareinsendung, um diese Formulareinsendungsinformationen zum CRM von HubSpot hinzuzufügen.
  5. Verwendet die HubDB-API, um 1 von der in HubDB gespeicherten Teilnehmerzahl für dieses Event abzuziehen.
  6. Sendet eine Antwort an den Webbrowser zurück.
  7. Das JavaScript auf der Seite empfängt die Antwort von der serverlosen Funktion und zeigt dem Endbenutzer eine Bestätigungsmeldung an und passt die Anzahl der verbleibenden Teilnehmerplätze an.

Die serverlosen Funktionen von HubSpot sind in JavaScript geschrieben und verwenden die NodeJS-Laufzeitumgebung. Die serverlosen Funktionen von HubSpot sind dazu gedacht, Ihrer HubSpot-Website Funktionen hinzuzufügen, z. B. die Unterstützung erweiterter Formulareinsendungen und das Abrufen von Daten aus anderen APIs. Es ist nicht als allgemeine Computerplattform gedacht, auf der Sie Code ausführen können, der nichts mit HubSpot zu tun hat.

Beschränkungen

Serverlose Funktionen sollen schnell sein und einen engen Fokus haben. Diese Geschwindigkeit macht sie zu perfekten Begleitern für das Front-End von Websites und Anwendungen, die schnelle Aufrufe und Reaktionen ermöglichen. Um die Leistung aufrechtzuerhalten, sind die serverlosen Funktionen von HubSpot auf Folgendes beschränkt:

  • 50 Geheimnisse pro Account.
  • 128 MB Speicher.
  • nicht mehr als 100 Endpunkte pro HubSpot-Account.
  • den contentType application/json beim Aufruf einer Funktion.
  • 6 MB pro Aufruf-Payload (diese Beschränkung ist oft beim Hochladen einer Datei mit einer serverlosen Funktion relevant).
  • 4 KB für die Menge der Daten, die protokolliert werden können. Wenn Sie diese Obergrenze erreichen, wird empfohlen, nach einzelnen Aktionen zu protokollieren und nicht nach der endgültigen Ausgabe.

Ausführungslimits

  • Jede Funktion hat eine maximale Ausführungszeit von 10 Sekunden.
  • Jeder Account ist auf insgesamt 600 Ausführungssekunden pro Minute beschränkt.

Das bedeutet, dass jedes dieser Szenarien innerhalb einer Minute eintreten kann:

  • Bis zu 60 Funktionsausführungen, die jeweils 10 Sekunden in Anspruch nehmen.
  • Bis zu 6.000 Funktionsausführungen, die 100 Millisekunden dauern.

Funktionen, die diese Limits überschreiten, lösen einen Fehler aus. Ausführungsanzahl und Zeitlimits geben eine 429-Antwort zurück. Die Ausführungszeit jeder Funktion wird in den Protokollen der serverlosen Funktionen berücksichtigt.

Abhängigkeiten aufteilen

Serverlose Funktionen unterstützen nicht das Aufteilen von JavaScript auf mehrere Dateien, wenn sie bereitgestellt werden. Stattdessen muss Ihre serverlose Funktion eine JavaScript-Datei enthalten, um die Funktion auszuführen. Wenn Sie eine serverlose Funktion mit mehreren JavaScript-Dateien erstellen, sollten Sie stattdessen den freigegebenen Code in die eine JavaScript-Datei kopieren oder Webpack verwenden, um Ihren Code zu bündeln. Erfahren Sie in der HubSpot-Community mehr über das Verwenden von Webpack als Lösung.

Zugriff auf serverlose Funktionen

In HubSpot werden serverlose Funktionen im Dateisystem für Entwickler gespeichert, das im Design-Managersichtbar ist. Sie können Ihre serverlosen Funktionen lokal über das CLI aufrufen und bearbeiten. 

Informationen zum Einbinden von serverlosen Funktionen in ein Entwicklerprojekt finden Sie in der Dokumentation zu grundlegenden JavaScript-Komponenten.

Ordner für serverlose Funktionen

Serverlose Funktionen von HubSpot befinden sich in einem functions-Ordner. Dieser Ordner kann beliebig benannt werden, muss aber die Endung .functions enthalten. Die in diesem Ordner gespeicherten Dateien sind nicht öffentlich zugänglich.

Berücksichtigen Sie im functions-Ordner Ihre serverless.json-Datei mit einer .js-Datei, die Ihre Funktionen enthält. Sie sollten es in Betracht ziehen, eine README-Markdown-Datei hinzuzufügen, um mitzuteilen, wozu die Funktionen dienen, wie sie funktionieren und ob Sie einen Build-Prozess haben, um sie zu erstellen.

Serverloser .functions-Ordner

Um versehentliche Änderungen innerhalb des Design-Managers zu verhindern, können Sie Ihren Ordner sperren. Um einen Ordner zu sperren, navigieren Sie zum Design-Manager, klicken Sie mit der rechten Maustaste auf den Ordner und wählen Ordner sperren aus.

serverless.json

Bitte beachten: Serverlose Funktionen, die in Entwicklerprojekten enthalten sind, wurden ab Plattformversion 2023.2 aktualisiert, einschließlich eines neuen serverless.json-Schemas. Erfahren Sie mehr über die Versionierung der Projektplattform.

serverless.json ist die Konfigurationsdatei der serverlosen Funktion, die die Laufzeitumgebung und alle Umgebungsvariablen angibt, die Sie in Ihren Funktionen verwenden möchten.

Diese Datei regelt auch die Weiterleitung Ihrer Endpunkte. Sie geben die Endpunktpfade an, die Sie Ihren function.js-Dateien zuordnen möchten. Ein Beispiel dafür, wie Ihre serverless.json-Datei aussehen sollte, finden Sie im Referenzleitfaden für serverlose Funktionen.

Function.js

Ihre eigentliche serverlose Funktion kann beliebig benannt werden, solange es sich um eine .js-Datei handelt. Damit Ihre serverlose Funktion funktioniert, muss sie einem Endpunkt zugeordnet werden, der in der serverless.json-Datei definiert ist. Zur Fehlerbehebung empfiehlt es sich, die .js-Datei ähnlich wie den Endpunktnamen in der serverless.json-Konfigurationsdatei zu benennen. 

Geheimnisse

Wenn Sie einen von einer serverlosen Funktion vorgenommenen Aufruf authentifizieren, sollten Sie zur Sicherheit Geheimnisse verwenden, um API-Schlüssel, Zugriffstoken von privaten Apps und andere Authentifizierungsinformationen speichern. Dies ermöglicht eine Authentifizierung, ohne Ihren Schlüssel oder Zugriffstoken offenzulegen.

Um Geheimnisse zu erstellen und zu verwalten, können Sie HubSpot CLI-Befehle verwenden, z. B.:

  • hs secrets add, um ein neues Geheimnis zu erstellen.
  • hs secrets list, um Ihre aktuell verfügbaren Geheimnisse nach Namen anzuzeigen.
  • hs secrets add, um ein vorhandenes Geheimnis zu aktualisieren.

Sobald sie über das CLI hinzugefügt wurden, können sie Funktionen zur Verfügung gestellt werden, indem ein secrets-Array mit dem Namen des Geheimnisses hinzugefügt wird. Auf diese Weise können Sie Ihren Funktionscode in der Versionskontrolle speichern und Geheimnisse verwenden, ohne sie preiszugeben. Sie sollten jedoch niemals den Wert Ihres Geheimnisses durch Konsolenprotokollierung oder als Antwort zurückgeben, da dies das Geheimnis in Protokollen oder auf Frontend-Seiten preisgibt, die Ihre serverlose Funktion aufrufen.

Bitte beachten: Aufgrund der Zwischenspeicherung kann es etwa eine Minute dauern, bis aktualisierte geheime Werte angezeigt werden. Wenn Sie gerade ein Geheimnis aktualisiert haben, aber immer noch den alten Wert sehen, überprüfen Sie es nach etwa einer Minute erneut.

Anzeigen von Protokollen für serverlose Funktionen

Zur Unterstützung bei der Fehlersuche in Ihren serverlosen Funktionen verfügt das CLI über den hs logs-Befehl, mit dem Sie die Protokolle Ihrer Funktion anzeigen können. Neben den Antworten auf die einzelnen Funktionsaufrufe, dem Zeitpunkt der Ausführung und der Ausführungszeit wird auch jede console.log-Anweisung in den Funktionsprotokollen angezeigt. Führen Sie bei Geheimnissen nicht eine Konsolenprotokollierung (console.log) wie bei API-Schlüsseln durch.


War dieser Artikel hilfreich?
Dieses Formular dient dazu, Feedback zu unserer Entwicklerdokumentation zu sammeln. Wenn Sie uns Ihre Meinung zu HubSpot-Produkten mitteilen möchten, teilen Sie diese bitte im Ideenforum der Community.