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 imagesPARAMETERS_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ãokms:Decrypt
para a chave KMS.
Uso da extensão do Lambda para parâmetros e segredos da AWS
-
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.
-
Conceda permissões ao perfil de execução do Lambda para poder acessar segredos:
-
Permissão
secretsmanager:GetSecretValue
para o segredo. Consulte Exemplo: permissão para recuperar valores de segredos individuais. -
(Opcional) 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ãokms:Decrypt
para a chave KMS. -
É possível usar o controle de acesso por atributo (ABAC) com a função do Lambda para permitir um acesso mais granular aos segredos na conta. Para ter mais informações, consulte Controle o acesso a segredos usando o controle de acesso por atributo (ABAC) .
-
-
Configure o cache com variáveis de ambiente do Lambda.
-
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 comoAWS_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')}
-
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 emversionStage
.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 emversionId
.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
eSECRETS_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
ounone
. Defina comodebug
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.