DO - Functions

Support HackTricks

Podstawowe informacje

DigitalOcean Functions, znane również jako "DO Functions", to platforma obliczeń bezserwerowych, która pozwala uruchamiać kod bez martwienia się o infrastrukturę. Dzięki DO Functions możesz pisać i wdrażać swój kod jako "funkcje", które mogą być wyzwalane za pomocą API, żądań HTTP (jeśli włączone) lub cron. Te funkcje są wykonywane w w pełni zarządzanym środowisku, więc nie musisz się martwić o skalowanie, bezpieczeństwo ani konserwację.

W DO, aby stworzyć funkcję, najpierw musisz utworzyć przestrzeń nazw, która będzie grupować funkcje. Wewnątrz przestrzeni nazw możesz następnie utworzyć funkcję.

Wyzwalacze

Sposób wyzwalania funkcji za pomocą REST API (zawsze włączone, to metoda używana przez cli) polega na wyzwoleniu żądania z tokenem uwierzytelniającym takim jak:

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="

Aby zobaczyć, jak narzędzie doctl cli uzyskuje ten token (abyś mógł to powtórzyć), następujące polecenie pokazuje pełny ślad sieciowy:

doctl serverless connect --trace

Gdy wyzwalacz HTTP jest włączony, funkcja webowa może być wywoływana za pomocą tych metod HTTP GET, POST, PUT, PATCH, DELETE, HEAD i OPTIONS.

W funkcjach DO, zmienne środowiskowe nie mogą być szyfrowane (w momencie pisania tego tekstu). Nie mogłem znaleźć żadnego sposobu na ich odczytanie z CLI, ale z konsoli jest to proste.

Adresy URL funkcji wyglądają tak: https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>

Enumeracja

# Namespace
doctl serverless namespaces list

# Functions (need to connect to a namespace)
doctl serverless connect
doctl serverless functions list
doctl serverless functions invoke <func-name>
doctl serverless functions get <func-name>

# Logs of executions
doctl serverless activations list
doctl serverless activations get <activation-id> # Get all the info about execution
doctl serverless activations logs <activation-id> # get only the logs of execution
doctl serverless activations result <activation-id> # get only the response result of execution

# I couldn't find any way to get the env variables form the CLI

Nie ma punktu końcowego metadanych z piaskownicy Functions.

Wsparcie HackTricks

Last updated