Правильное использование UpdateSecretRequest в java SDK от Amaon

#java #amazon-web-services

#java #amazon-веб-сервисы

Вопрос:

Я использую приведенный ниже код для обновления секрета в службе secret manager от Amazon. Вскоре после обновления секретного значения я получаю секрет из AWS, и это не самое последнее обновленное значение. Приведенный ниже код не создает исключений. Я ищу рекомендации по подтверждению успешного обновления AWS secret manager.

 public void updateSecretValue(String fullAwsKey, String keyValue) {
    UpdateSecretRequest updateSecretRequest = new UpdateSecretRequest ().withSecretId(fullAwsKey);
    updateSecretRequest.setSecretString(keyValue);
    
    AWSSecretsManager client = buildAWSSecretsManager();
    try {
        performUpdate(updateSecretRequest, client);
    } catch (SdkClientException e) {
        throw new RuntimeException(e);
    } finally {
        client.shutdown();
    }
}

protected void performUpdate(UpdateSecretRequest updateSecretRequest, AWSSecretsManager client) {
    boolean processed = false;
    int tryCount = 0;
    while (!processed) {
        UpdateSecretResult result = client.updateSecret(updateSecretRequest);
        if (result.getSdkHttpMetadata().getHttpStatusCode() == 200) {
            processed = true;
        } else {
            tryCount  ;
            if (tryCount >= 5) {
                throw new RuntimeException("performUpdate, unable to update secret: "   result.toString());
            }
        }
    }
}
 

Ответ №1:

Вы используете более старый API версии V1. Amazon рекомендует использовать AWS SDK для Java 2.x, который представляет собой серьезную переработку базы кода 1.11.x, построенной поверх Java 8 . Java SDK 2.x обладает улучшенной согласованностью, простотой использования и строгой неизменяемостью. Он также поддерживает неблокирующий ввод-вывод и возможность подключения другой реализации HTTP во время выполнения.

Вот примеры Secret Manager V2:

https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javav2/example_code/secretsmanager/src/main/java/com/example/secrets

Если вы не знакомы с запуском и запуском API-интерфейсов V2, пожалуйста, обратитесь к этому разделу, в котором это объясняется:

Начните работу с AWS SDK для Java 2.x