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 o AWS Parâmetros e segredos da extensão Lambda para recuperar e armazenar em cache AWS Secrets Manager segredos nas 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 ManagerAPIs, 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 Integração do Parameter Store com extensões Lambda no AWS Systems Manager Guia do usuário.
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 HTTP endpoint local, a porta localhost 2773, ao ambiente Lambda. Você pode 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 paraARM, você deve usar a arm64
arquitetura da 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 é compatível ARM com as 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 (Cingapura), Ásia-Pacífico (Hyderabad) 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 AWS SDKGuia de referência de ferramentas e ferramentas. Se sua função Lambda for executada em umVPC, você precisará criar um VPC endpoint para que a extensão possa fazer chamadas para o Secrets Manager. Para obter mais informações, consulte Uso de um endpoint da VPC do AWS Secrets Manager.
Permissões obrigatórias:
A função de execução do Lambda deve ter
secretsmanager:GetSecretValue
permissão para o segredo.Se o segredo for criptografado com uma chave gerenciada pelo cliente em vez do Chave gerenciada pela AWS
aws/secretsmanager
, a função de execução também precisa dekms:Decrypt
permissão para a KMS chave.
Para usar o AWS Parâmetros e segredos da extensão Lambda
-
Adicione o AWS camada chamada AWS Parâmetros e segredos da extensão Lambda para sua função. Para obter instruções, consulte Adicionar camadas às funções no Lambda Developer Guide. Se você usar o AWS CLI para adicionar a camada, você precisa ARN da extensão. Para obter uma lista deARNs, consulte AWS Parâmetros e segredos da extensão ARNs Lambda no AWS Systems Manager Guia do usuário.
-
Conceda permissões à função 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 do Chave gerenciada pela AWS
aws/secretsmanager
, a função de execução também precisa dekms:Decrypt
permissão para a KMS chave. -
Você pode usar o Attribute Based Access Control (ABAC) com a função Lambda para permitir um acesso mais granular aos segredos na conta. Para ter mais informações, consulte Exemplo: Controlar o acesso a segredos usando etiquetas e Exemplo: Limitar o acesso a identidades com etiquetas que correspondam às etiquetas dos segredos.
-
-
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 HTTP GET solicitações:
-
Para recuperar um segredo
secretId
, use o nome ARN ou do segredo.GET: /secretsmanager/get?secretId=
secretId
-
Para recuperar o valor secreto anterior ou uma versão específica por meio do rótulo de teste, para
secretId
, use o nome ARN ou do segredo e paraversionStage
, use o rótulo de teste.GET: /secretsmanager/get?secretId=
secretId
&versionStage=AWSPREVIOUS
Para recuperar uma versão secreta específica por ID, para
secretId
, use o nome ARN ou da chave secreta e paraversionId
, use a ID da versão.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
Você pode 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 HTTP servidor 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 HTTP clientes 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
-
TTLde 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
TTLde 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.