【问题标题】:How to rename/update stage label of secret in AWS secret manager - java如何在 AWS 秘密管理器中重命名/更新秘密的阶段标签 - java
【发布时间】:2019-11-03 08:52:17
【问题描述】:

我将密钥存储在 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)

【问题讨论】:

    标签: amazon-web-services aws-secrets-manager


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 2020-10-01
      • 2022-11-22
      • 2020-12-04
      • 2021-03-15
      • 2022-08-16
      • 2023-02-07
      • 2021-01-19
      • 2020-10-13
      • 2019-12-03
      相关资源
      最近更新 更多