Я храню свои ключи в диспетчере ключей 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)
Для этого потребуется два запроса API. Первый берет идентификатор версии AWSPREVIOUS и назначает его «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);
На этом этапе вы можете оставить оба этапа связанными с одним и тем же идентификатором версии или удалить этап версии AWSPREVIOUS:
UpdateSecretVersionStageRequest updateSecretVersionStageRequest = new UpdateSecretVersionStageRequest()
.withSecretId(secretKey)
.withVersionStage("AWSPREVIOUS")
.withRemoveFromVersionId(getSecretValueResult.getVersionId())
client.updateSecretVersionStage(updateSecretVersionStageRequest);