AWS Lambda:在哪里存储临时秘密数据?

AWS Lambda: where to store temporary secret data?

我正在使用带有 SQS 触发器的 AWS Lambda。我的 Lambda 函数正在从 SQS 获取数据并将其发送到外部源。此外部源需要身份验证。因此,在发送数据之前,我的函数将获取两个 AWS SSM 参数——密钥数据过期时间和 API 密钥。随着密钥数据过期,我对 Lambda 的理解——我们是否应该更新 API 密钥。

现在我开始收到这些错误:

[ERROR] ClientError: An error occurred (ThrottlingException) when calling the GetParameter operation (reached max retries: 4): Rate exceeded

我永远不知道我会在 SQS 中获取多少数据,所以,看起来有时我获取数据的频率太高了。

我的问题是 - 我该如何解决这个问题?我可以开始使用哪种 AWS 服务或方式来代替 AWS SSM?是否可以在 AWS Lamdas 之间缓存数据?

是的,您可以在 Lambda 函数中缓存数据

创建 AWS Lambda 函数时,它是在容器中配置的。 Lambda 函数中 运行 在 处理函数之外 的任何代码在首次创建容器时都将是 运行。例如,此代码可以从 SSM 检索参数并将其存储在 Python 程序中的全局变量中。

然后,当调用Lambda函数时,调用Handler函数,它可以访问全局变量。

(或者,处理函数可以检查数据是否被提取到全局变量中,而不是在配置容器时检索数据,如果没有,它可以从 SSM 中提取参数。类似 activity,但在这种情况下,它 运行 在处理程序内而不是 处理程序之外。)

要了解有关此主题的更多信息,请参阅:AWS Lambda execution environment - AWS Lambda

另一种选择是为 Parameter Store 启用更高的吞吐量限制。参见:AWS Systems Manager Now Supports Use of Parameter Store at Higher API Throughput

或者,您可以考虑使用 AWS Secrets Manager。参见:AWS Secrets Manager now supports larger size for secrets and resource polices and higher request rate for GetSecretValue API