Serverlose Funktionen

Last updated:
APPLICABLE PRODUCTS
  • CMS 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.

Überblick

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

Nehmen wir unser Event-Registrierungssystem als Beispiel. Schauen wir uns an, wie Sie serverlose Funktionen nutzen können, um die Registrierung zu verarbeiten und zu aktualisieren, wie viele freie Plätze es für ein Event gibt.

  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 von 1 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.

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. 

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 den .js-Dateien, die Ihre Funktionen enthalten. 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.

Serverless .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

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 list, um Ihre aktuell verfügbaren Geheimnisse nach Namen anzuzeigen.
  • hs secrets add, um ein neues Geheimnis zu erstellen.
  • hs secrets add, um ein vorhandenes Geheimnis zu aktualisieren.

Sobald sie über das CLI hinzugefügt wurden, können sie für bestimmte Funktionen oder global verfügbar gemacht werden, indem ein secrets-Array mit dem Namen des Geheimnisses hinzugefügt wird. Einmal hinzugefügt, sind sie innerhalb der Funktionen über die Umgebung zugänglich. Dies bietet Ihnen eine sichere Möglichkeit, diese Geheimnisse zu verwenden und Ihren Funktionscode in der Versionskontrolle zu speichern, ohne dass Sie befürchten müssen, dass die Geheimnisse preisgegeben werden.

Geben Sie den Wert Ihres Geheimnisses nicht über die Konsolenprotokollierung oder als Antwort zurück. Dadurch würden Ihre Geheimnisse in Ihren Protokollen oder in Front-End-Seiten, die Ihre serverlose Funktion aufrufen, offengelegt.

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.