Usar variáveis de ambiente no Lambda para configurar valores no código
É 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.
É 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.
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 2.7, 3.6, 3.8) o caminho da biblioteca Python ($LAMBDA_RUNTIME_DIR
). -
GEM_PATH
: (Ruby) o caminho da biblioteca Ruby ($LAMBDA_TASK_ROOT/vendor/bundle/ruby/2.5.0:/opt/ruby/gems/2.5.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
: para os runtimes do .NET 6 e .NET 7, defina essa variável para ativar ou desativar 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.
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.
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.