AWS Secrets Manager机密的最大版本数



我有一个计划的lambda fn,它可以跟踪有效的Auth Bearer令牌。每当此令牌无效或即将过期时(例如每月一次(,它都会更新secrets管理器的secret值。

我不使用任何类型的旋转,只是使用节点sdkputSecretValue更新机密值(也使用updateSecret尝试过(。

在将此代码投入生产一段时间后,它开始出现以下故障:

{
"errorType": "LimitExceededException",
"errorMessage": "You exceeded the maximum number of versions for a secret (arn:aws:secretsmanager:us-east-1:myARN)",
"trace": [
"LimitExceededException: You exceeded the maximum number of versions for a secret (arn:aws:secretsmanager:us-east-1:myARN)",

我对版本跟踪不感兴趣,我只想无限期地存储那个字符串,直到我必须更新它的值等等。我应该使用另一种解决方案吗?

由于这是生产问题,您可以应用以下快速解决方法,直到您的永久解决方案可用为止;

执行AWS CLIupdate-secret-version-stage以弃用不需要的版本,这将使它们有资格在后台被AWS Secrets Manager删除。您可能需要编写一个小脚本来批量执行这样一个不需要的版本。

若要抨击某个版本的机密,请参阅AWS的此文档。

对于永久解决方案,有几种选择,其中一些如下;

  1. 使用AWS SDK/neneneba API调用构建逻辑来弃用基础设施或应用程序代码中不需要的版本。

  2. 如果您在生产中有一些计划的自动化,您可以使用用于解决问题的相同批处理/作业脚本。

  3. 代替AWS Secrets Manager,切换到使用具有加密值的AWS Systems Manager的参数存储。

Secrets Manager具有暂存标签(指向机密版本的标签(和弃用版本(任何没有暂存标签的版本(的概念。doc@amitd指出,如果你想弃用一个有标签的版本,就需要删除暂存标签。

但是,如果没有为机密分配暂存标签(无论如何只能有20个(,则不需要删除它们。事实上,秘密管理器会自动清理除最后100个版本外的所有秘密。只有当创建新版本的机密的速度快于清理速度时,才会出现您描述的错误消息。如果像你说的那样,它们每个月只创建一次,那就不应该发生这种情况。

将日志添加到lambda中(如果还没有(,并在cloudwatch中查看它们,看看这种情况是否比预期的更频繁。您也可以查看您的Cloud Trail日志,查看对Secrets Manager的呼叫。

最新更新