Trabalhar com variáveis de ambiente no Lambda
É possível usar variáveis de ambiente para ajustar o comportamento da função sem atualizar o código. Uma variável de ambiente é um par de strings armazenadas na configuração específica da versão de uma função. O runtime do Lambda disponibiliza variáveis de ambiente para o código e define variáveis de ambiente adicionais que contêm informações sobre a função e a solicitação de invocação.
nota
Para aumentar a segurança, recomendamos que você use o AWS Secrets Manager em vez de variáveis de ambiente para armazenar as credenciais do banco de dados e outras informações confidenciais, como chaves de API ou tokens de autorização. Para obter mais informações, consulte Criar e gerenciar segredos com o AWS Secrets Manager.
As variáveis de ambiente não são avaliadas antes da invocação da função. Qualquer valor definido é considerado uma string literal e não expandido. Execute a avaliação da variável no seu código de função.
Criar variáveis de ambiente no Lambda
É possível configurar variáveis de ambiente no Lambda usando o console do Lambda, a AWS Command Line Interface (AWS CLI), o AWS Serverless Application Model (AWS SAM) ou um AWS SDK.
Exemplo de cenário para variáveis de ambiente
Você pode usar variáveis de ambiente para personalizar o comportamento da função no ambiente de teste e no ambiente de produção. Por exemplo, você pode criar duas funções com o mesmo código, mas configurações diferentes. Uma função se conecta a um banco de dados de teste e a outra se conecta a um banco de dados de produção. Nessa situação, você usa variáveis de ambiente para transmitir o nome do host e outros detalhes de conexão do banco de dados para a função.
O exemplo a seguir mostra como definir o host do banco de dados e o nome do banco de dados como variáveis de ambiente.
![Variáveis de ambiente no console do Lambda](images/console-env.png)
Se quiser que o ambiente de teste gere mais informações de depuração do que o ambiente de produção, você poderá definir uma variável de ambiente para configurar o ambiente de teste para usar um registro em log mais detalhado ou um rastreamento mais detalhado.
Por exemplo, em seu ambiente de teste, você pode definir uma variável de ambiente com a chave LOG_LEVEL
e um valor indicando um nível de log de depuração ou rastreamento. No código da sua função do Lambda, você pode então usar essa variável de ambiente para definir o nível do log.
Os exemplos de código a seguir em Python e Node.js ilustram como você pode fazer isso. Esses exemplos pressupõem que sua variável de ambiente tenha um valor de DEBUG
em Python ou debug
em Node.js.
Recuperar variáveis de ambiente do Lambda
Para recuperar variáveis de ambiente em seu código de função, use o método padrão para a sua linguagem de programação.
O Lambda armazena as variáveis de ambiente de forma segura, criptografando-as em repouso. É possível configurar o Lambda para usar uma chave de criptografia diferente, criptografar valores de variáveis de ambiente no lado do cliente ou definir variáveis de ambiente em um modelo do AWS CloudFormation com o AWS Secrets Manager.
Variáveis de ambiente com runtime definido
Os runtimes do Lambda definem diversas variáveis de ambiente durante a inicialização. A maioria das variáveis de ambiente fornece informações sobre a função ou o runtime. As chaves para essas variáveis de ambiente são reservadas e não podem ser definidas na configuração de sua função.
Variáveis de ambiente reservadas
-
_HANDLER
: o local do handler configurado na função. -
_X_AMZN_TRACE_ID
— OCabeçalho do X-Ray. Essa variável de ambiente muda a cada invocação.-
Essa variável de ambiente não está definida para runtimes somente para sistema operacional (a família
provided
de runtime). Você pode definir_X_AMZN_TRACE_ID
para runtimes personalizados usando o cabeçalho da respostaLambda-Runtime-Trace-Id
do Próxima invocação. -
Nas versões 17 e posteriores do runtime do Java, essa variável de ambiente não é usada. Em vez disso, o Lambda armazena informações de rastreamento na propriedade
com.amazonaws.xray.traceHeader
do sistema.
-
-
AWS_DEFAULT_REGION
: a Região da AWS padrão onde a função do Lambda é executada. -
AWS_REGION
: a Região da AWS onde a função do Lambda é executada. Se estiver definido, esse valor substituiráAWS_DEFAULT_REGION
.-
Para obter mais informações sobre como usar as variáveis de ambiente da Região da AWS com AWS SDKs, consulte Região da AWS no Guia de referência de SDKs e ferramentas da AWS.
-
-
AWS_EXECUTION_ENV
: o identificador de runtime, prefixado porAWS_Lambda_
(por exemplo,AWS_Lambda_java8
). Essa variável de ambiente não está definida para runtimes somente para sistema operacional (a famíliaprovided
de runtime). -
AWS_LAMBDA_FUNCTION_NAME
: o nome da função. -
AWS_LAMBDA_FUNCTION_MEMORY_SIZE
: a quantidade de memória disponível para a função em MB. -
AWS_LAMBDA_FUNCTION_VERSION
: a versão da função que está sendo executada. -
AWS_LAMBDA_INITIALIZATION_TYPE
: o tipo de inicialização da função, que éon-demand
,provisioned-concurrency
ousnap-start
. Para obter informações, consulte Configurar a simultaneidade provisionada ou Aprimoramento da performance de inicialização com o Lambda SnapStart. -
AWS_LAMBDA_LOG_GROUP_NAME
,AWS_LAMBDA_LOG_STREAM_NAME
: o nome do grupo Amazon CloudWatch Logs e do fluxo do para a função. As variáveis de ambienteAWS_LAMBDA_LOG_GROUP_NAME
eAWS_LAMBDA_LOG_STREAM_NAME
não estão disponíveis nas funções do Lambda SnapStart. -
AWS_ACCESS_KEY
,AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
,AWS_SESSION_TOKEN
: as chaves de acesso obtidas da função de execução da função. -
AWS_LAMBDA_RUNTIME_API
: (runtime personalizado) o host e a porta da API de runtime. -
LAMBDA_TASK_ROOT
: o caminho para o código da função do Lambda. -
LAMBDA_RUNTIME_DIR
: o caminho para bibliotecas de runtime.
As variáveis de ambiente adicionais a seguir não são reservadas e podem ser estendidas na configuração de sua função.
Variáveis de ambiente não reservadas
-
LANG
: a localidade do runtime (en_US.UTF-8
). -
PATH
: o caminho de execução (/usr/local/bin:/usr/bin/:/bin:/opt/bin
). -
LD_LIBRARY_PATH
: o caminho da biblioteca do sistema (/var/lang/lib:/lib64:/usr/lib64:$LAMBDA_RUNTIME_DIR:$LAMBDA_RUNTIME_DIR/lib:$LAMBDA_TASK_ROOT:$LAMBDA_TASK_ROOT/lib:/opt/lib
). -
NODE_PATH
: (Node.js) o caminho da biblioteca Node.js (/opt/nodejs/node12/node_modules/:/opt/nodejs/node_modules:$LAMBDA_RUNTIME_DIR/node_modules
). -
PYTHONPATH
: (Python) o caminho da biblioteca Python ($LAMBDA_RUNTIME_DIR
). -
GEM_PATH
: (Ruby) o caminho da biblioteca Ruby ($LAMBDA_TASK_ROOT/vendor/bundle/ruby/3.3.0:/opt/ruby/gems/3.3.0
). -
AWS_XRAY_CONTEXT_MISSING
: para o rastreamento do X-Ray, o Lambda define isso comoLOG_ERROR
para evitar a execução de erros de runtime no X-Ray SDK. -
AWS_XRAY_DAEMON_ADDRESS
: para o rastreamento do X-Ray, o endereço IP e a porta do daemon do X-Ray. -
AWS_LAMBDA_DOTNET_PREJIT
(.NET): defina esta variável para habilitar ou desabilitar otimizações específicas de runtime do .NET. Os valores incluemalways
,never
eprovisioned-concurrency
. Para ter mais informações, consulte Configurar a simultaneidade provisionada para uma função. -
TZ
: o fuso horário do ambiente (:UTC
). O ambiente de execução usa o NTP para sincronizar o relógio do sistema.
Os valores de exemplo mostrados refletem os runtimes mais recentes. A presença de variáveis específicas ou seus valores pode variar nos runtimes anteriores.