使用 AWS SDK for Python(boto3)中的 Secrets Manager 客户端,执行以下代码示例,以在 Lambda 函数中实现缓存密钥的最佳实践:
import boto3
import json
import os
# Create a Secrets Manager client
session = boto3.session.Session()
client = session.client(
service_name='secretsmanager',
region_name=os.environ['AWS_REGION']
)
def get_secret():
# Cache the secret for 5 minutes to avoid unnecessary API calls
cache_time = 300
# Check if the secret exists in Lambda's environment variables
cached_secret = os.environ.get('MY_SECRET')
if cached_secret:
# Parse and return the cached secret
return json.loads(cached_secret)
else:
# Retrieve the secret from Secrets Manager
secret_name = "my/secret/name"
secret_response = client.get_secret_value(SecretId=secret_name)
# Parse the JSON string in the secret and store it in an environment variable
secret_value = json.loads(secret_response['SecretString'])
os.environ['MY_SECRET'] = json.dumps(secret_value)
# Set the environment variable to expire after the cache_time has elapsed
os.environ['MY_SECRET_EXPIRATION'] = str(int(time.time() + cache_time))
return secret_value
这个示例在调用 Lambda 函数时检查是否已经缓存了密钥,如果有,则会从缓存中返回密钥。如果没有,则从 Secrets Manager 中检索密钥并将其存储在 Lambda 的环境变量中。同时,记录一个过期时间戳,并将它存储在环境变量中,以便在缓存导致过期时及时删除环境变量。
上一篇:AWSSecretsManager中的TypeScript错误,类型“string|undefined不能赋值给类型“string。
下一篇:AWSSecretsManager:凭据错误:在配置中缺少凭据,如果使用AWS_CONFIG_FILE,请设置AWS_SDK_LOAD_CONFIG=1。