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 AWS Secrets Manager segredos em AWS Lambda funções
Você pode usar a extensão Lambda de AWS parâmetros e segredos para recuperar e armazenar segredos AWS Secrets Manager em funções do 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 ligar para o Secrets Manager APIs, 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 AWS cliente. Para obter informações sobre como configurar o AWS cliente, consulte a referência de configurações no Guia de referência do AWS SDK e das ferramentas. 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 obter mais informações, consulte Usando um AWS Secrets Manager VPC endpoint.
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 de Chave gerenciada pela AWS
aws/secretsmanager
, a função de execução também precisará dekms:Decrypt
permissão para a chave KMS.
Para usar a extensão Lambda de AWS parâmetros e segredos
-
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 o AWS CLI para adicionar a camada, precisará do ARN da extensão. Para obter uma lista de ARNs, consulte AWS Parâmetros e segredos da extensão Lambda ARNs no Guia do AWS Systems Manager 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
, a função de execução também precisará dekms:Decrypt
permissão 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 obter 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 -
AWS Parâmetros e segredos Variáveis de ambiente da extensão Lambda
É 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.