AWS Parameter Store получать несколько параметров намного медленнее, чем получать по одному за раз?
Я отлаживал это некоторое время, и я не могу понять, почему и найти какую-то логику в этом случае.
Я храню некоторые параметры в Simple Systems Management, такие параметры, как jirahost, jirapassword, jirausername и такие!
AWSSimpleSystemsManagement ssmClient = (AWSSimpleSystemsManagement)((AWSSimpleSystemsManagementClientBuilder)((AWSSimpleSystemsManagementClientBuilder) AWSSimpleSystemsManagementClientBuilder.standard()).withRegion("us-east-1")).build();
GetParametersRequest paramRequest = new GetParametersRequest();
paramRequest.withNames(jiraHost, jiraUsername, jiraPassword, jiraIssueType, jiraProjectKey).setWithDecryption(true);
GetParametersResult paramResult = ssmClient.getParameters(paramRequest);
это код, который я использую для получения нескольких параметров из хранилища параметров.
Затем я использую Google Guavas StopWatch для измерения времени, и это займет более 7 секунд, чтобы получить их все!
Затем я попытался вызвать только один параметр:
AWSSimpleSystemsManagement simpleSystemsManagementClient = (AWSSimpleSystemsManagement)((AWSSimpleSystemsManagementClientBuilder)((AWSSimpleSystemsManagementClientBuilder) AWSSimpleSystemsManagementClientBuilder.standard()).withRegion("us-east-1")).build();
GetParameterRequest parameterRequest = new GetParameterRequest();
parameterRequest.withName(parameterKey).setWithDecryption(true);
GetParameterResult parameterResult = simpleSystemsManagementClient.getParameter(parameterRequest);
Используя секундомер снова, это займет не более 300 мс!?
Можете ли вы увидеть то, что я не могу? Самый простой выход - вызвать метод с одним параметром несколько раз, но я действительно хочу выяснить, что происходит.
Надеюсь, вы можете помочь мне
2 ответа
Это было просто время разминки Амазонки. каждый раз, когда я обновлял свою лямбду, первый раз вызывая функцию, это было так медленно.
После этого это так же быстро, как всегда.
Вы можете запросить все параметры по пути, а не называть их по отдельности.
Вот пример, который я использовал в PHP:
$result = $ssm_client->GetParametersByPath(['Path' => '/inventory-app/']);
Это возвращает все параметры по этому пути. Итак, попробуйте поместить ваши параметры в иерархию и получить их таким образом.