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/']);

Это возвращает все параметры по этому пути. Итак, попробуйте поместить ваши параметры в иерархию и получить их таким образом.

Другие вопросы по тегам