DO - Functions

Support HackTricks

Información Básica

DigitalOcean Functions, también conocido como "DO Functions," es una plataforma de computación sin servidor que te permite ejecutar código sin tener que preocuparte por la infraestructura subyacente. Con DO Functions, puedes escribir y desplegar tu código como "funciones" que pueden ser activadas a través de API, solicitudes HTTP (si están habilitadas) o cron. Estas funciones se ejecutan en un entorno completamente gestionado, por lo que no necesitas preocuparte por la escalabilidad, seguridad o mantenimiento.

En DO, para crear una función primero necesitas crear un espacio de nombres que agrupará las funciones. Dentro del espacio de nombres, puedes crear una función.

Activadores

La forma de activar una función a través de REST API (siempre habilitado, es el método que utiliza el cli) es activando una solicitud con un token de autenticación como:

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

Para ver cómo la herramienta de línea de comandos doctl obtiene este token (para que puedas replicarlo), el siguiente comando muestra el rastro de red completo:

doctl serverless connect --trace

Cuando se habilita el desencadenador HTTP, una función web se puede invocar a través de estos métodos HTTP GET, POST, PUT, PATCH, DELETE, HEAD y OPTIONS.

En las funciones de DO, las variables de entorno no se pueden cifrar (en el momento de escribir esto). No pude encontrar ninguna manera de leerlas desde la CLI, pero desde la consola es directo.

Las URL de las funciones se ven así: https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>

Enumeración

# 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

No hay un endpoint de metadatos desde el sandbox de Functions.

Apoya a HackTricks

Last updated