DO - Functions

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

DigitalOcean Functions, znane również jako "DO Functions", to platforma obliczeniowa bezserwerowa, która umożliwia uruchamianie kodu bez konieczności martwienia się o infrastrukturę. Dzięki DO Functions możesz pisać i wdrażać swój kod jako "funkcje", które mogą być wywoływane za pomocą API, żądań HTTP (jeśli są włączone) lub crona. 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 utworzyć 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 wywołania funkcji za pomocą REST API (zawsze włączony, jest to metoda używana przez interfejs wiersza poleceń) polega na wywołaniu żądania z tokenem uwierzytelniającym 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 wiersza poleceń doctl uzyskuje ten token (abyś mógł go odtworzyć), następujące polecenie pokazuje pełny ślad sieciowy:

doctl serverless connect --trace

Kiedy włączony jest wyzwalacz HTTP, funkcję sieciową można wywołać 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 znalazłem sposobu na odczytanie ich za pomocą 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>

Wyliczanie

# 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 w sandboxie Functions.

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated