DO - Functions

Support HackTricks

Basic Information

DigitalOcean Functions, também conhecido como "DO Functions," é uma plataforma de computação serverless que permite que você execute código sem se preocupar com a infraestrutura subjacente. Com DO Functions, você pode escrever e implantar seu código como "funções" que podem ser ativadas via API, requisições HTTP (se habilitado) ou cron. Essas funções são executadas em um ambiente totalmente gerenciado, então você não precisa se preocupar com escalabilidade, segurança ou manutenção.

No DO, para criar uma função, primeiro você precisa criar um namespace que será um agrupamento de funções. Dentro do namespace, você pode então criar uma função.

Triggers

A maneira de ativar uma função via REST API (sempre habilitado, é o método que o cli usa) é acionando uma requisição com um token de autenticação 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 como a ferramenta de linha de comando doctl está obtendo esse token (para que você possa replicá-lo), o seguinte comando mostra o rastreamento de rede completo:

doctl serverless connect --trace

Quando o gatilho HTTP está habilitado, uma função web pode ser invocada através desses métodos HTTP GET, POST, PUT, PATCH, DELETE, HEAD e OPTIONS.

Nas funções DO, variáveis de ambiente não podem ser criptografadas (no momento da escrita deste texto). Não consegui encontrar nenhuma maneira de lê-las a partir da CLI, mas a partir do console é direto.

URLs das funções parecem com isso: https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>

Enumeração

# 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

Não existe um endpoint de metadados do sandbox de Functions.

Support HackTricks

Last updated