如何使用Python Lambda的AWS Secrets Manager缓存



我正在参考aws-secretsmanager-caching-python文档,并试图从机密管理器缓存检索到的机密。但是,由于某种原因,我总是超时,没有任何有用的错误来进一步解决此问题。如果我从机密管理器中检索机密(无需缓存(,我就可以正确地检索机密。

我在lambda函数中的主要函数如下:

import botocore
import botocore.session
from aws_secretsmanager_caching import SecretCache, SecretCacheConfig
from cacheSecret import getCachedSecrets

def lambda_handler(event, context):
result = getCachedSecrets()
print(result)

我创建了cacheSecret如下。

from aws_secretsmanager_caching import SecretCache
from aws_secretsmanager_caching import InjectKeywordedSecretString, InjectSecretString
cache = SecretCache()
@InjectKeywordedSecretString(secret_id='my_secret_name', cache=cache, secretKey1='keyname1', secretKey2='keyname2')
def getCachedSecrets(secretKey1, secretKey2):
print(secretKey1)
print(secretKey2)
return secretKey1

在上述代码中,my_secret_name是在秘密管理器中创建的秘密的名称,secretKey1secretKey1是具有字符串值的秘密密钥名称。

错误:{"errorMessage":"2021-03-31T15:29:08.598Z 01f5ded3-7658-4zb5-ae66-6f300098a6e47任务在3.00秒后超时";}

有人能建议一下上面需要解决的问题吗。此外,我不确定在哪里定义secret_name,即密钥名称,以防我们不使用decorator。

lambda需要在3秒内ack响应,但代码可能会运行更长时间。可以在函数配置中配置超时:https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html

最新更新