DO - Functions

Support HackTricks

Basic Information

DigitalOcean Functions, également connu sous le nom de "DO Functions", est une plateforme de calcul sans serveur qui vous permet de faire fonctionner du code sans avoir à vous soucier de l'infrastructure sous-jacente. Avec DO Functions, vous pouvez écrire et déployer votre code sous forme de "fonctions" qui peuvent être déclenchées via API, requêtes HTTP (si activées) ou cron. Ces fonctions sont exécutées dans un environnement entièrement géré, donc vous n'avez pas à vous soucier de la mise à l'échelle, de la sécurité ou de la maintenance.

Dans DO, pour créer une fonction, vous devez d'abord créer un espace de noms qui sera un groupe de fonctions. À l'intérieur de l'espace de noms, vous pouvez ensuite créer une fonction.

Triggers

La façon de déclencher une fonction via REST API (toujours activée, c'est la méthode utilisée par le cli) est de déclencher une requête avec un jeton d'authentification comme :

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

Pour voir comment l'outil cli doctl obtient ce jeton (afin que vous puissiez le reproduire), la commande suivante montre la trace réseau complète :

doctl serverless connect --trace

Lorsque le déclencheur HTTP est activé, une fonction web peut être invoquée via ces méthodes HTTP GET, POST, PUT, PATCH, DELETE, HEAD et OPTIONS.

Dans les fonctions DO, les variables d'environnement ne peuvent pas être chiffrées (au moment de la rédaction de ce document). Je n'ai trouvé aucun moyen de les lire depuis la CLI, mais depuis la console, c'est simple.

Les URL des fonctions ressemblent à ceci : https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>

Énumération

# 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

Il n'y a pas de point de terminaison de métadonnées dans le sandbox des Functions.

Supportez HackTricks

Last updated