2

我将密钥存储在 aws 密钥管理器中。旋转后有 2 个阶段标签 AWSCURRENT 和 AWSPREVIOUS

我们可以将 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)
4

1 回答 1

1

这将需要两个 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);
于 2019-06-20T14:44:15.273 回答