# Variáveis de ambiente

Uma variável de ambiente é um par chave-valor armazenado fora do código da sua função. Ela guarda um valor de configuração ou um segredo, como uma chave de API, uma credencial de banco de dados ou um token de acesso. O valor nunca entra na base de código nem em um sistema de controle de versão. Uma [função](/pt-br/documentacao/plataforma/functions/) lê o valor pela chave em tempo de execução, então um valor novo não exige nenhuma edição no código.

---

## Campos da variável

Uma variável de ambiente carrega três campos:

| Campo    | Tipo    | Descrição                                       |
| -------- | ------- | ----------------------------------------------- |
| `key`    | string  | Nome que a função passa para `Azion.env.get()`. |
| `value`  | string  | Valor retornado para essa chave.                |
| `secret` | boolean | Se o valor é confidencial.                      |

A Azion atribui um ID a cada variável quando ela é criada. A flag `--variable-id` da Azion CLI o informa em `azion describe variables`, `azion update variables` e `azion delete variables`.

As variáveis de ambiente são armazenadas na conta, e uma conta comporta no máximo 100 delas. O teto de 32 KB é medido por função, e não por conta: ele limita o tamanho total de todas as variáveis de ambiente de uma única função. Para todos os limites de Functions, consulte [Limites](/pt-br/documentacao/plataforma/functions/limites/).

---

## Acesso a partir do código da função

Uma função lê uma variável com a interface `Azion.env.get()`, que recebe a chave e retorna o valor:

```javascript
const apiToken = Azion.env.get('API_SERVICE_TOKEN');
```

A chamada retorna uma string. Uma chave que não existe retorna `undefined` em vez de um erro, e a função continua com esse valor indefinido. Um handler escrito no padrão ES Modules também recebe `env`, o objeto que carrega as variáveis de ambiente e os bindings disponíveis para a função.

Para os parâmetros, o valor de retorno e um exemplo mais longo, consulte [Interface de variáveis de ambiente](/pt-br/documentacao/devtools/runtime/api-reference/environment-variables/). O Azion Runtime também suporta `process.env` por compatibilidade com Node.js, coberto em [process](/pt-br/documentacao/devtools/runtime/node/process/).

---

## Interfaces de gerenciamento

Você cria, lista, altera e exclui variáveis de ambiente pela [API da Azion](https://api.azion.com/), com [Azion CLI](/pt-br/documentacao/devtools/cli/) e com o [Azion Terraform Provider](/pt-br/documentacao/devtools/terraform/), onde o recurso é `azion_environment_variable`.

Azion CLI carrega um subcomando por operação: `azion create variables`, `azion list variables`, `azion describe variables`, `azion update variables` e `azion delete variables`. As flags `--key`, `--value` e `--secret` definem os três campos, e o valor padrão de `--secret` é `true`. A flag `--file` lê os mesmos três campos de um arquivo JSON.

```bash
azion create variables --key "Content-Type" --value "string" --secret false
```

Uma variável cuja chave contém `password`, `pwd`, `secret`, `key`, `hash`, `encrypted`, `passcode`, `auth` ou `token` é enviada como segredo por padrão.

O comando `azion sync` lê as variáveis de um arquivo `.env` local e as envia para a sua conta. A flag `--env` define o caminho para esse arquivo, e o padrão é `.edge/.env`.

Uma alteração em uma variável não chega a uma função que já está rodando. A função passa por um novo deploy para que o novo valor tenha efeito.

Para os atributos que `azion update variables` aceita, consulte [Variables](/pt-br/documentacao/devtools/cli/recursos/variables/).

---

## Recursos relacionados

- [API de variáveis de ambiente](/pt-br/documentacao/devtools/runtime/api-reference/environment-variables.md): A sintaxe, os parâmetros e o valor de retorno de `Azion.env.get()`.
- [Instâncias de função](/pt-br/documentacao/plataforma/applications/functions-instances.md): Os Args que uma instância carrega, para a configuração que muda a cada instância.
- [Azion CLI](/pt-br/documentacao/devtools/cli.md): Todas as flags dos subcomandos `variables` e de `azion sync`.
- [Limites](/pt-br/documentacao/plataforma/functions/limites.md): O teto de 32 KB e todos os outros limites de Functions.
- [Functions](/pt-br/documentacao/plataforma/functions.md): O que é uma função e o que a invoca.
