AWS 秘密管理器更新
AWS Secret Manager Update
是否有任何可能的方法可以在 AWS Secret Manager 中更新 key/values 而无需检索当前值然后更新它们?
我找到的当前解决方案首先从机密管理器中检索值:
original_secret = client.get_secret_value(SecretId="my_first_secret")
然后对它们进行更新,运行 update-secret 命令:
updated_secret = original_secret.update({"UPDATE_KEY": "update_value"})
client.update_secret(SecretId="my_secret_name", SecretString=json.dumps(updated_secret))
但我不想检索秘密值。
首选语言是 python.
您可以使用 put_secret_value()
:
import boto3
client = boto3.client('secretsmanager')
# Create secret
client.create_secret(
Name='foo',
SecretString='bar'
)
# Update secret
client.put_secret_value(
SecretId='foo',
SecretString='bar2'
)
遗憾的是你不能这样做,因为秘密值事实上不可变。相反,您所谓的“更新”只是 creating 秘密的 新版本 的过程:
When you update the encrypted secret value in a secret, you create a new version of the secret. The new version automatically receives the staging label AWSCURRENT.
AWS 控制台转储此过程,因为它看起来您可以就地“更新”密钥的值。相反,它只是复制当前版本,更新它的值,并创建一个新版本的秘密值。这一切都在后台完成,所以你看不到这个。
但是使用 AWS CLI,您可以列出密钥值版本 和 list-secret-version-ids. If you do this, you will see that you never update any secret values directly, you just keep creating new versions of it with a past value still present (only one past value is kept). You can always retrieve the old version using --version-id
in get-secret-value。
所以你必须对 python 做同样的事情。获取当前版本的密钥值,在本地更新它,并创建一个新版本的值。
是否有任何可能的方法可以在 AWS Secret Manager 中更新 key/values 而无需检索当前值然后更新它们?
我找到的当前解决方案首先从机密管理器中检索值:
original_secret = client.get_secret_value(SecretId="my_first_secret")
然后对它们进行更新,运行 update-secret 命令:
updated_secret = original_secret.update({"UPDATE_KEY": "update_value"})
client.update_secret(SecretId="my_secret_name", SecretString=json.dumps(updated_secret))
但我不想检索秘密值。 首选语言是 python.
您可以使用 put_secret_value()
:
import boto3
client = boto3.client('secretsmanager')
# Create secret
client.create_secret(
Name='foo',
SecretString='bar'
)
# Update secret
client.put_secret_value(
SecretId='foo',
SecretString='bar2'
)
遗憾的是你不能这样做,因为秘密值事实上不可变。相反,您所谓的“更新”只是 creating 秘密的 新版本 的过程:
When you update the encrypted secret value in a secret, you create a new version of the secret. The new version automatically receives the staging label AWSCURRENT.
AWS 控制台转储此过程,因为它看起来您可以就地“更新”密钥的值。相反,它只是复制当前版本,更新它的值,并创建一个新版本的秘密值。这一切都在后台完成,所以你看不到这个。
但是使用 AWS CLI,您可以列出密钥值版本 和 list-secret-version-ids. If you do this, you will see that you never update any secret values directly, you just keep creating new versions of it with a past value still present (only one past value is kept). You can always retrieve the old version using --version-id
in get-secret-value。
所以你必须对 python 做同样的事情。获取当前版本的密钥值,在本地更新它,并创建一个新版本的值。