O blog da AWS
Recuperação de parâmetros e segredos com o Powertools para AWS Lambda (TypeScript)
Ao criar aplicativos Serverless usando o AWS Lambda, você geralmente precisa recuperar parâmetros, como detalhes da conexão do banco de dados, segredos da API ou valores de configuração global em tempo de execução. Você pode disponibilizar esses parâmetros para suas funções do Lambda por meio de armazenamentos de parâmetros seguros, escaláveis e altamente disponíveis, como o AWS Systems Manager Parameter Store ou o AWS Secrets Manager.
O utilitário de parâmetros do Powertools para AWS Lambda (TypeScript) simplifica a integração desses armazenamentos de parâmetros em suas funções do Lambda. O utilitário fornece funções de alto nível para recuperar segredos e parâmetros, integra armazenamento em cache e transformações e reduz a quantidade de código padronizado que você deve escrever.
O utilitário de parâmetros suporta os seguintes armazenamentos de parâmetros:
- Armazenamento de parâmetros do AWS Systems Manager
- Gerenciador de segredos da AWS
- AWS AppConfig
- Amazon DynamoDB
- Provedores de armazenamento de parâmetros personalizados
O utilitário de parâmetros faz parte do Powertools for AWS Lambda (TypeScript), que você pode usar nas bases de código JavaScript e TypeScript. Implementando a orientação do Serverless Applications Lens do AWS Well-Architected Framework, o Powertools fornece utilitários para facilitar a adoção das melhores práticas, como rastreamento distribuído, registro estruturado e métricas assíncronas de negócios e aplicativos.
Para obter mais detalhes, consulte a documentação do Powertools for AWS Lambda (TypeScript) no GitHub e a referência de introdução no blog.
Este blog mostra como usar o novo utilitário de parâmetros para recuperar parâmetros e segredos em suas funções do JavaScript e do TypeScript Lambda com segurança.
Introdução ao utilitário de parâmetros
Configuração inicial
O kit de ferramentas Powertools é modular, o que significa que você pode instalar o utilitário de parâmetros independentemente dos pacotes Logger, Tracing ou Metrics. Instale a biblioteca do utilitário De parâmetros em seu projeto via npm:
Além disso, você deve adicionar o cliente do AWS SDK para o armazenamento de parâmetros que você planeja usar. O utilitário de parâmetros apenas suporta o AWS SDK v3 para JavaScript, o que permite que o utilitário seja modular. Você instala somente os pacotes SDK necessários para manter o tamanho do pacote pequeno.
Em seguida, atribua as permissões apropriadas do AWS Identity and Access Management (IAM) à função de execução da função Lambda da sua função Lambda, que permitem recuperar parâmetros do armazenamento de parâmetros.
As seções a seguir ilustram como realizar as etapas mencionadas anteriormente para alguns cenários típicos de recuperação de parâmetros.
Recuperando um único parâmetro do SSM Parameter Store
Para recuperar parâmetros do SSM Parameter Store, instale o cliente AWS SDK para SSM, além do utilitário Parameters:
Para recuperar um parâmetro individual, o utilitário de parâmetros fornece a função getParameter
:
Por fim, você precisa atribuir uma política do IAM com a permissão SSM:getParameter
à sua função de execução da função Lambda. Aplique o princípio do privilégio mínimo definindo o escopo da permissão para o recurso de parâmetro específico, conforme mostrado no exemplo de política a seguir:
Ajustando o TTL do cache
Por padrão, os parâmetros recuperados são armazenados em cache na memória por 5 segundos. Esse valor em cache é usado para outras invocações da função Lambda até que ela expire. Se seu aplicativo exigir um comportamento diferente, o utilitário De parâmetros permite ajustar o tempo de vida (TTL) por meio do argumento maxAge
.
Com base no exemplo anterior, se você quiser armazenar em cache o parâmetro recuperado por 30 em vez de 5 segundos, você pode adaptar o código da função da seguinte forma:
Em outros casos, talvez você queira sempre recuperar o valor mais recente do armazenamento de parâmetros e ignorar qualquer valor em cache. Para fazer isso, defina o parâmetro forceFetch
como true
:
Para obter detalhes, consulte sempre buscando as últimas novidades na documentação do Powertools for AWS Lambda (TypeScript).
Parâmetros de decodificação armazenados no formato JSON ou base64
Se alguns de seus parâmetros estiverem armazenados em base64 ou JSON, você poderá desserializá-los por meio do argumento transform
do utilitário de parâmetros.
Considerando um parâmetro armazenado no SSM como JSON, ele pode ser recuperado e desserializado da seguinte forma:
O utilitário de parâmetros suporta o argumento transform
para todos os provedores de armazenamento de parâmetros e funções de alto nível. Para obter detalhes, consulte desserialização de valores com parâmetros de transformação.
Trabalhando com parâmetros criptografados no SSM Parameter Store
O SSM Parameter Store oferece suporte a parâmetros de string seguros criptografados por meio do AWS Key Management Service (AWS KMS). O utilitário De parâmetros permite que você recupere esses parâmetros criptografados adicionando o argumento decrypt
à sua solicitação.
Por exemplo, você pode recuperar um parâmetro criptografado da seguinte forma:
Recuperando vários parâmetros do SSM Parameter Store
Além de recuperar um único parâmetro usando getParameter, você também pode usar GetParameter
para recuperar recursivamente vários parâmetros em um caminho do SSM Parameter Store ou getParametersByName
para recuperar vários parâmetros distintos pelo nome completo.
Você também pode aplicar configurações personalizadas de armazenamento em cache, transformação ou descriptografia por parâmetro ao usar getParametersByName
. O exemplo a seguir recupera três parâmetros distintos do SSM Parameter Store com diferentes configurações de armazenamento em cache e transformação:
A recuperação de vários parâmetros exige que as permissões GetParameter
e GetParameters
estejam presentes na função de execução da função Lambda.
Recuperando segredos do Secrets Manager
Para armazenar com segurança parâmetros confidenciais, como senhas ou chaves de API para serviços externos, o Secrets Manager é uma opção adequada. Para recuperar segredos do Secrets Manager usando o utilitário de parametros, instale o cliente SDK da AWS para o Secrets Manager, além do utilitário Parameters:
Agora você pode acessar um segredo usando sua chave da seguinte forma:
Obter um segredo do Secrets Manager exige que você adicione a permissão do IAM secretsmanager:GetSecretValue
à sua função de execução da função Lambda.
Recuperando uma configuração de aplicativo do AppConfig
Se você planeja aproveitar sinalizadores de recursos (feature flags) ou configurações dinâmicas de aplicativos em seus aplicativos criados no Lambda, o AppConfig é uma opção adequada. O utilitário de parâmetros facilita a busca de configurações do AppConfig e, ao mesmo tempo, se beneficia dos recursos do utilitário, como armazenamento em cache e transformações.
Por exemplo, considerando um aplicativo AppConfig chamado my-app
com um ambiente chamado my-env
, você pode recuperar seu perfil de configuração my-configuration
da seguinte forma:
A recuperação de uma configuração exige que as permissões do IAM appconfig:GetLatestConfiguration e appconfig:StartConfigurationSession
sejam anexadas à função de execução da função Lambda.
Recuperando um parâmetro de uma tabela do DynamoDB
A baixa latência e a alta flexibilidade do DynamoDB o tornam uma ótima opção para armazenar parâmetros. Para usar o DynamoDB como armazenamento de parâmetros por meio do utilitário de parametros, instale o cliente e o pacote de utilitários do DynamoDB AWS SDK, além do utilitário Parameters.
Por padrão, o utilitário de parâmetros espera que a tabela do DynamoDB contendo os parâmetros, tenha uma chave de partição e um atributo chamado value. Por exemplo, supondo que um item com um id de my-parameter
e um valor de my-value
seja armazenado em uma tabela do DynamoDB chamada my-table
, você pode recuperá-lo da seguinte forma:
No caso de recuperar um único parâmetro do DynamoDB, a função de execução da função Lambda precisa ter a permissão do IAM dynamodb:GetItem
.
O provedor do utilitário de parâmetros do DynamoDB também pode recuperar vários parâmetros de uma tabela com uma única solicitação por meio de uma consulta do DynamoDB. Consulte o provedor DynamoDB na documentação do Powertools for AWS Lambda (TypeScript) para obter detalhes.
Conclusão
Este blog apresenta o utilitário de parâmetros do Powertools para AWS Lambda (TypeScript) e demonstra como ele é usado com diferentes armazenamentos de parâmetros. O utilitário de parâmetros permite que você recupere segredos e parâmetros em sua função Lambda do SSM Parameter Store, Secrets Manager, AppConfig, DynamoDB e armazenamentos de parâmetros personalizados. Ao usar o utilitário, você obtém acesso a funcionalidades como armazenamento em cache e transformação, além de reduzir a quantidade de código padronizado que precisa escrever para suas funções do Lambda.
Para saber mais sobre o utilitário de parâmetros e seu conjunto completo de funcionalidades, consulte a documentação do Powertools for AWS Lambda (TypeScript).
Compartilhe seu feedback sobre o Powertools for AWS Lambda (TypeScript) abrindo um issue do GitHub.
Para obter mais recursos de aprendizado Serverless, visite Serverless Land.
Este artigo foi traduzido do Blog da AWS em Inglês.
Sobre o autor
Andrea Amorosi é arquiteto sênior de soluções na AWS
Pascal Vogel é arquiteto de soluções na AWS
Tradutor
Daniel Abib é Enterprise Solution Architect na AWS, com mais de 25 anos trabalhando com gerenciamento de projetos, arquiteturas de soluções escaláveis, desenvolvimento de sistemas e CI/CD, microsserviços, arquitetura Serverless & Containers e segurança. Ele trabalha apoiando clientes corporativos, ajudando-os em sua jornada para a nuvem.