# DO - Funktionen {{#include ../../../banners/hacktricks-training.md}} ## Grundlegende Informationen DigitalOcean Functions, auch bekannt als "DO Functions", ist eine serverlose Computing-Plattform, die es Ihnen ermöglicht, **Code auszuführen, ohne sich um die zugrunde liegende Infrastruktur kümmern zu müssen**. Mit DO Functions können Sie Ihren Code als "Funktionen" schreiben und bereitstellen, die über **API**, **HTTP-Anfragen** (wenn aktiviert) oder **Cron** **ausgelöst** werden können. Diese Funktionen werden in einer vollständig verwalteten Umgebung ausgeführt, sodass Sie sich **keine Sorgen** um Skalierung, Sicherheit oder Wartung machen müssen. Um in DO eine Funktion zu erstellen, müssen Sie zuerst **einen Namensraum erstellen**, der **Funktionen gruppiert**.\ Innerhalb des Namensraums können Sie dann eine Funktion erstellen. ### Auslöser Der Weg, **eine Funktion über die REST API auszulösen** (immer aktiviert, es ist die Methode, die die CLI verwendet), besteht darin, eine Anfrage mit einem **Authentifizierungstoken** wie: ```bash curl -X POST "https://faas-lon1-129376a7.doserverless.co/api/v1/namespaces/fn-c100c012-65bf-4040-1230-2183764b7c23/actions/functionname?blocking=true&result=true" \ -H "Content-Type: application/json" \ -H "Authorization: Basic MGU0NTczZGQtNjNiYS00MjZlLWI2YjctODk0N2MyYTA2NGQ4OkhwVEllQ2t4djNZN2x6YjJiRmFGc1FERXBySVlWa1lEbUxtRE1aRTludXA1UUNlU2VpV0ZGNjNqWnVhYVdrTFg=" ``` Um zu sehen, wie das **`doctl`** CLI-Tool dieses Token erhält (damit Sie es replizieren können), zeigt der **folgende Befehl die vollständige Netzwerkverfolgung:** ```bash doctl serverless connect --trace ``` **Wenn der HTTP-Trigger aktiviert ist**, kann eine Webfunktion über diese **HTTP-Methoden GET, POST, PUT, PATCH, DELETE, HEAD und OPTIONS** aufgerufen werden. > [!CAUTION] > In DO-Funktionen können **Umgebungsvariablen nicht verschlüsselt werden** (zum Zeitpunkt dieses Schreibens).\ > Ich konnte keine Möglichkeit finden, sie über die CLI zu lesen, aber über die Konsole ist es ganz einfach. **Funktions-URLs** sehen so aus: `https://.doserverless.co/api/v1/web//default/` ### Enumeration ```bash # Namespace doctl serverless namespaces list # Functions (need to connect to a namespace) doctl serverless connect doctl serverless functions list doctl serverless functions invoke doctl serverless functions get # Logs of executions doctl serverless activations list doctl serverless activations get # Get all the info about execution doctl serverless activations logs # get only the logs of execution doctl serverless activations result # get only the response result of execution # I couldn't find any way to get the env variables form the CLI ``` > [!CAUTION] > Es **gibt keinen Metadaten-Endpunkt** von der Functions-Sandbox. {{#include ../../../banners/hacktricks-training.md}}