Use segredos do AWS Secrets Manager em funções do AWS Lambda - AWS Secrets Manager

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use segredos do AWS Secrets Manager em funções do AWS Lambda

É possível usar a extensão do Lambda para parâmetros e segredos da AWS para recuperar e armazenar em cache os segredos do AWS Secrets Manager em funções Lambda sem usar um SDK. Recuperar um segredo armazenado em cache é mais rápido do que recuperá-lo do Secrets Manager. Como há um custo para chamar APIs do Secrets Manager, usar um cache pode reduzir seus custos. A extensão pode recuperar segredos do Secrets Manager e parâmetros do Parameter Store. Para obter informações sobre o Parameter Store, consulte Parameter Store integration with Lambda extensions (Integração do Parameter Store com as extensões do Lambda) no Guia do usuário do AWS Systems Manager.

Uma extensão do Lambda corresponde a um processo complementar que aumenta os recursos de uma função Lambda. Para obter mais informações, consulte Lambda extensions (Extensões do Lambda) no Guia do desenvolvedor do Lambda. Para obter informações sobre o uso da extensão em uma imagem de contêiner, consulte Working with Lambda layers and extensions in container images. O Lambda registra informações de execução sobre a extensão em conjunto com a função usando o Amazon CloudWatch Logs. Por padrão, a extensão registra uma quantidade mínima de informações no CloudWatch. Para registrar mais detalhes em log, defina a variável de ambiente PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL para debug.

Para fornecer o cache na memória para parâmetros e segredos, a extensão expõe um endpoint HTTP local, a porta 2773 do host local, ao ambiente do Lambda. É possível configurar a porta ao definir a variável de ambiente PARAMETERS_SECRETS_EXTENSION_HTTP_PORT.

O Lambda cria instâncias separadas correspondentes ao nível de simultaneidade requerido por sua função. Cada instância é isolada e mantém o próprio cache local dos dados de configuração. Para obter mais informações sobre as instâncias e a simultaneidade do Lambda, consulte Managing concurrency for a Lambda function (Gerenciamento da simultaneidade para uma função Lambda) no Guia do desenvolvedor do Lambda.

Para adicionar a extensão para ARM, você deve usar a arquitetura arm64 para sua função Lambda. Para obter mais informações, consulte Arquiteturas de conjuntos de instruções do Lambda no Guia do desenvolvedor do Lambda. A extensão oferece suporte para ARM nas seguintes regiões: Ásia-Pacífico (Mumbai), Leste dos EUA (Ohio), Europa (Irlanda), Europa (Frankfurt), Europa (Zurique), Leste dos EUA (Norte da Virgínia), Europa (Londres), Europa (Espanha), Ásia-Pacífico (Tóquio), Oeste dos EUA (Oregon), Ásia-Pacífico (Singapura), Ásia-Pacífico (Haiderabade) e Ásia-Pacífico (Sydney).

A extensão usa um cliente da AWS. Para obter informações sobre como configurar o cliente da AWS, consulte a Referência de configurações no Guia de referência do SDK e das ferramentas da AWS. Se sua função do Lambda for executada em uma VPC, será necessário criar um endpoint da VPC para que a extensão possa fazer chamadas para o Secrets Manager. Para ter mais informações, consulte Uso de um endpoint da VPC do AWS Secrets Manager.

Permissões obrigatórias:

  • O perfil de execução do Lambda deve ter a permissão secretsmanager:GetSecretValue para o segredo.

  • Se o segredo for criptografado com uma chave gerenciada pelo cliente em vez da Chave gerenciada pela AWS aws/secretsmanager, o perfil de execução também precisará da permissão kms:Decrypt para a chave KMS.

Uso da extensão do Lambda para parâmetros e segredos da AWS
  1. Adicione a camada AWS, de nome Extensão do Lambda Parâmetros e Segredos da AWS, à sua função. Para obter instruções, consulte Adição de camadas às funções no Guia do desenvolvedor do Lambda. Se você usar a AWS CLI para adicionar a camada, precisará do ARN da extensão. Para obter uma lista de ARNs, consulte AWSParameters and Secrets Lambda Extension (Parâmetros e extensão do Secrets Lambda) ARNs no AWS Systems Manager Guia do usuário.

  2. Conceda permissões ao perfil de execução do Lambda para poder acessar segredos:

  3. Configure o cache com variáveis de ambiente do Lambda.

  4. Para recuperar segredos do cache de extensão, primeiro você precisa adicionar o X-AWS-Parameters-Secrets-Token ao cabeçalho da solicitação. Defina o token como AWS_SESSION_TOKEN, fornecido pelo Lambda para todas as funções em execução. O uso desse cabeçalho indica que o chamador está no ambiente do Lambda.

    O exemplo de Python, a seguir, mostra como adicionar o cabeçalho.

    import os headers = {"X-Aws-Parameters-Secrets-Token": os.environ.get('AWS_SESSION_TOKEN')}
  5. Para recuperar um segredo na função Lambda, use uma das seguintes solicitações GET do HTTP:

    • Para recuperar um segredo, use o ARN ou nome completo do segredo em secretId.

      GET: /secretsmanager/get?secretId=secretId
    • Para recuperar o valor do segredo anterior ou uma versão específica por meio de um rótulo de preparação, use o ARN ou o nome do segredo em secretId e use o rótulo de preparação em versionStage.

      GET: /secretsmanager/get?secretId=secretId&versionStage=AWSPREVIOUS
    • Para recuperar uma versão específica do segredo por ID, use o ARN ou o nome do segredo em secretId e use o ID da versão em versionId.

      GET: /secretsmanager/get?secretId=secretId&versionId=versionId
    exemplo Recuperar um segredo (Python)

    O exemplo de Python, a seguir, mostra como recuperar um segredo e analisar o resultado usando json.loads.

    secrets_extension_endpoint = "http://localhost:" + \ secrets_extension_http_port + \ "/secretsmanager/get?secretId=" + \ <secret_name> r = requests.get(secrets_extension_endpoint, headers=headers) secret = json.loads(r.text)["SecretString"] # load the Secrets Manager response into a Python dictionary, access the secret

Variáveis de ambiente da extensão do Lambda para parâmetros e segredos da AWS

É possível configurar a extensão com as seguintes variáveis de ambiente.

Para obter informações sobre como usar variáveis de ambiente, consulte Usar variáveis de ambiente do Lambda no Guia do desenvolvedor do Lambda.

PARAMETERS_SECRETS_EXTENSION_CACHE_ENABLED

Defina como true (verdadeiro) para armazenar parâmetros e segredos em cache. Defina como false (falso) para não realizar armazenamento em cache. O padrão é true (verdadeiro).

PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE

O número máximo de segredos e parâmetros a serem armazenados em cache. Deve ser um valor de zero a mil. Um valor de zero significa que não há armazenamento em cache. Essa variável será ignorada se SSM_PARAMETER_STORE_TTL e SECRETS_MANAGER_TTL forem zero. O padrão é mil.

PARAMETERS_SECRETS_EXTENSION_HTTP_PORT

A porta para o servidor HTTP local. A padrão é 2773.

PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL

O nível de registro em log que a extensão fornece: debug, info, warn, error ou none. Defina como debug para visualizar a configuração do cache. O padrão é info.

PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS

Número máximo de conexões para clientes HTTP que a extensão usa para fazer solicitações ao Parameter Store ou ao Secrets Manager. Essa é uma configuração por cliente. O padrão é três.

SECRETS_MANAGER_TIMEOUT_MILLIS

Tempo limite para solicitações ao Secrets Manager em milissegundos. Um valor de zero significa que não há tempo limite. O padrão é 0.

SECRETS_MANAGER_TTL

A TTL de um segredo no cache em segundos. Um valor de zero significa que não há armazenamento em cache. O máximo é 300 segundos. Essa variável será ignorada se PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE for zero. O padrão é 300 segundos.

SSM_PARAMETER_STORE_TIMEOUT_MILLIS

Tempo limite para solicitações ao Parameter Store em milissegundos. Um valor de zero significa que não há tempo limite. O padrão é 0.

SSM_PARAMETER_STORE_TTL

A TTL de um parâmetro no cache em segundos. Um valor de zero significa que não há armazenamento em cache. O máximo é 300 segundos. Essa variável será ignorada se PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE for zero. O padrão é 300 segundos.