当前位置: 首页 > 知识库问答 >
问题:

AWS机密管理器更新

龙浩博
2023-03-14

是否有任何可能的方法,我可以更新AWS秘密管理器中的密钥/值,而不必检索当前值,然后更新它们?

我找到的当前解决方案首先从secrets Manager中检索值:

original_secret = client.get_secret_value(SecretId="my_first_secret")
updated_secret = original_secret.update({"UPDATE_KEY": "update_value"})
client.update_secret(SecretId="my_secret_name", SecretString=json.dumps(updated_secret))

但我不想检索秘密值。首选语言是Python。

共有1个答案

范楚
2023-03-14

遗憾的是,您不能这样做,因为secrets值实际上是不可变的。相反,所谓的“更新”只是创建秘密的新版本的过程:

更新机密中的加密机密值时,将创建该机密的新版本。新版本自动接收临时标签awscurrent。

AWS控制台将转储此过程,因为它使您看起来可以就地“更新”机密值。相反,它只是复制当前版本,更新其值,并创建秘密值的新版本。所有这些都是在后端完成的,所以您看不到这个。

所以您必须用Python做同样的事情。获取机密值的当前版本,在本地更新该值,并创建该值的新版本。

 类似资料:
  • 使用Secrets Manager提供的默认代码和必要的IAM角色,我可以在我的lambda中从Secrets Manager中读取API密钥: 这个Lambda能够成功地从Secrets Manager中检索和打印API密钥。 为了与EC2实例通信,我有一个带有助手层和一些简单测试代码的Lambda: null 我想我已经把范围缩小到VPC了。第一个Lambda只是打印出秘密工作完美,直到我把它

  • 我使用CloudFormation模板创建了一个秘密,如下所示: 当我删除CloudFormation堆栈时,我希望秘密会以7天保留策略的“待定删除”状态存在,因为这是AWS的规定。

  • 我有一个Django应用程序,可以从AWS秘密管理器中获取DB秘密。它包含所有DB参数,如用户名、密码、主机、端口等。当我在EC2上启动Django应用程序时,它会成功地从秘密管理器中检索秘密并建立一个DB连接。 现在的问题是我有一个密码循环策略设置30天。为了测试流量,目前,我已经设置为1天。每次密码旋转,我的Django应用程序就会失去DB连接。因此,我必须手动重新启动应用程序,以允许应用程序

  • 我们在AWS环境中部署了完整的应用程序,我们发现AWS秘密管理器是存储数据库和其他一些组件的秘密的正确选择。

  • 对此有以下查询: 是否可以知道lambda函数缓存这些秘密的位置? 如果talend作业执行时机密发生更改,如何确保talend作业将更新后的值用于机密? 如何确保正在使用机密的最新值。

  • 我创造了一个“其他类型的秘密”。我还在这个模板中添加了一个作为give的lambda函数。现在,当我试图立即旋转时,它会说“Fail to Rotion the secret”test_secret_Rothing“以前的旋转没有完成。将重新尝试该旋转。”轮转的时间是一天,即使第二天我看到分泌物也没有更新。我只是添加了那个lambda函数。我需要定义任何参数或任何其他lambda设置吗。我还在文档