【问题标题】:AWS Lambda: where to store temporary secret data?AWS Lambda:在哪里存储临时秘密数据?
【发布时间】:2020-12-09 17:04:23
【问题描述】:

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

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

[ERROR] ClientError: 发生错误 (ThrottlingException) 时 调用 GetParameter 操作(达到最大重试次数:4):速率 超过

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

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

【问题讨论】:

    标签: python amazon-web-services aws-lambda amazon-sqs


    【解决方案1】:

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

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

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

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

    要了解有关此主题的更多信息,请参阅: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

    【讨论】:

    • 看起来全局变量对我有帮助,正在测试...
    猜你喜欢
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 2012-02-24
    • 2015-06-05
    • 1970-01-01
    • 2012-11-14
    相关资源
    最近更新 更多