如何 rename/update 在 AWS 秘密管理器中暂存秘密标签 - java
How to rename/update stage label of secret in AWS secret manager - java
我将我的密钥存储在 aws 密钥管理器中。
旋转后它有 2 个阶段标签 AWSCURRENT 和 AWSPREVIOUS
我们可以 update/rename AWSPREVIOUS 到 TESTJK 我试过下面的代码,我没有抛出任何错误,但它没有按照我的预期进行
我期待什么
将 AWSPREVIOUS 重命名为 TESTJK 并保持秘密值不变
GetSecretValueRequest getSecretValueRequest = new GetSecretValueRequest().withSecretId(secretKey)
.withVersionStage("AWSPREVIOUS");
GetSecretValueResult getSecretValueResult = client.getSecretValue(getSecretValueRequest);
log.info("jkdata ww {}", getSecretValueResult.getSecretString());
log.info("verison id{}", getSecretValueResult.getVersionId());
UpdateSecretVersionStageRequest updateSecretVersionStageRequest = new UpdateSecretVersionStageRequest()
.withSecretId(secretKey)
.withMoveToVersionId(getSecretValueResult.getVersionId())
.withRemoveFromVersionId(getSecretValueResult.getVersionId());
client.updateSecretVersionStage(updateSecretVersionStageRequest).setName("TESTJK");
预期结果:
它会将 AWSPREVIOUS 重命名为 TESTJK,所以下次如果我使用 AWSPREVIOUS 进行查询,我会得到错误,如果我使用 TESTJK 进行查询,我应该会得到秘密值。
当前:我正在获取 AWSPREVIOUS 的值,但获取 TESTJK 的错误
com.amazonaws.services.secretsmanager.model.ResourceNotFoundException: Secrets Manager can’t find the specified secret value for staging label: TESTJK (Service: AWSSecretsManager; Status Code: 400; Error Code: ResourceNotFoundException; Request ID: 4c15706e-e1bd-424a-ba03-4914e6523a34)
这需要两次 api 请求。第一个获取 AWSPREVIOUS 的版本 ID 并将其分配给 'TESTJK':
GetSecretValueRequest getSecretValueRequest = new GetSecretValueRequest()
.withSecretId(secretKey)
.withVersionStage("AWSPREVIOUS");
GetSecretValueResult getSecretValueResult = client.getSecretValue(getSecretValueRequest);
UpdateSecretVersionStageRequest updateSecretVersionStageRequest = new UpdateSecretVersionStageRequest()
.withSecretId(secretKey)
.withVersionStage("TESTJK")
.withMoveToVersionId(getSecretValueResult.getVersionId())
client.updateSecretVersionStage(updateSecretVersionStageRequest);
此时,您可以让两个阶段与同一个 versionId 关联,或者您可以删除 AWSPREVIOUS 版本阶段:
UpdateSecretVersionStageRequest updateSecretVersionStageRequest = new UpdateSecretVersionStageRequest()
.withSecretId(secretKey)
.withVersionStage("AWSPREVIOUS")
.withRemoveFromVersionId(getSecretValueResult.getVersionId())
client.updateSecretVersionStage(updateSecretVersionStageRequest);
我将我的密钥存储在 aws 密钥管理器中。 旋转后它有 2 个阶段标签 AWSCURRENT 和 AWSPREVIOUS
我们可以 update/rename AWSPREVIOUS 到 TESTJK 我试过下面的代码,我没有抛出任何错误,但它没有按照我的预期进行
我期待什么
将 AWSPREVIOUS 重命名为 TESTJK 并保持秘密值不变
GetSecretValueRequest getSecretValueRequest = new GetSecretValueRequest().withSecretId(secretKey)
.withVersionStage("AWSPREVIOUS");
GetSecretValueResult getSecretValueResult = client.getSecretValue(getSecretValueRequest);
log.info("jkdata ww {}", getSecretValueResult.getSecretString());
log.info("verison id{}", getSecretValueResult.getVersionId());
UpdateSecretVersionStageRequest updateSecretVersionStageRequest = new UpdateSecretVersionStageRequest()
.withSecretId(secretKey)
.withMoveToVersionId(getSecretValueResult.getVersionId())
.withRemoveFromVersionId(getSecretValueResult.getVersionId());
client.updateSecretVersionStage(updateSecretVersionStageRequest).setName("TESTJK");
预期结果:
它会将 AWSPREVIOUS 重命名为 TESTJK,所以下次如果我使用 AWSPREVIOUS 进行查询,我会得到错误,如果我使用 TESTJK 进行查询,我应该会得到秘密值。
当前:我正在获取 AWSPREVIOUS 的值,但获取 TESTJK 的错误
com.amazonaws.services.secretsmanager.model.ResourceNotFoundException: Secrets Manager can’t find the specified secret value for staging label: TESTJK (Service: AWSSecretsManager; Status Code: 400; Error Code: ResourceNotFoundException; Request ID: 4c15706e-e1bd-424a-ba03-4914e6523a34)
这需要两次 api 请求。第一个获取 AWSPREVIOUS 的版本 ID 并将其分配给 'TESTJK':
GetSecretValueRequest getSecretValueRequest = new GetSecretValueRequest()
.withSecretId(secretKey)
.withVersionStage("AWSPREVIOUS");
GetSecretValueResult getSecretValueResult = client.getSecretValue(getSecretValueRequest);
UpdateSecretVersionStageRequest updateSecretVersionStageRequest = new UpdateSecretVersionStageRequest()
.withSecretId(secretKey)
.withVersionStage("TESTJK")
.withMoveToVersionId(getSecretValueResult.getVersionId())
client.updateSecretVersionStage(updateSecretVersionStageRequest);
此时,您可以让两个阶段与同一个 versionId 关联,或者您可以删除 AWSPREVIOUS 版本阶段:
UpdateSecretVersionStageRequest updateSecretVersionStageRequest = new UpdateSecretVersionStageRequest()
.withSecretId(secretKey)
.withVersionStage("AWSPREVIOUS")
.withRemoveFromVersionId(getSecretValueResult.getVersionId())
client.updateSecretVersionStage(updateSecretVersionStageRequest);