Я совершенно новый в AWS. Я разработал архитектуру, которая использует Api Gateway для вызова функции лямбда, написанной в java. Поскольку у меня есть какая-то конфигурация, я решил создать файл S3 для хранения стандартного файла конфигурации Java там и загрузить его при необходимости. Это заняло много времени, около 15 секунд, за очень маленький файл. Чтобы прочитать файл, я использую класс клиента AmazonS3Client
, есть ли у меня другие возможности?Конфигурация в ведре S3: плохая идея?
long ms = System.nanoTime();
AmazonS3Client client = new AmazonS3Client(new DefaultAWSCredentialsProviderChain());
GetObjectRequest request = new GetObjectRequest("bucket","filepath");
InputStream inputStream = client.getObject(request).getObjectContent();
try {
PropertiesConfiguration p = new PropertiesConfiguration();
p.load(inputStream);
composite.addConfiguration(p);
log.debug(String.format("Configuration read in %f mS",(System.nanoTime()-ms)/1000000f));
}catch (ConfigurationException e) {
logger.error("error reading configuration on S3:"+e);
}
Итак вопросы: если хранить файл конфигурации в s3 ведра плохая идея, где предполагается хранить конфигурацию? Является ли это нормальным? Я подумываю использовать s3 в своей архитектуре для чего-то еще, но с 15-секундным рукопожатием для файла, конечно, неприемлемо.
15s кажется довольно много !! Даже если вы считаете, что повышенная латентность в первый раз вызывается функцией лямбда, она все еще на порядок медленнее, чем должна быть. Каков размер этого файла конфигурации? –
S3, dynamodb (который утверждает, что имеет однократное миллисекундное время отклика) или все, что может хранить данные в Интернете. Хотя в идеале вы избегаете внешней конфигурации, так как ее нужно читать каждый раз. – zapl
@BrunoReis очень маленький, как вы предполагаете, это 3 линии. Время, кажется, расходуется на креацию остального вызова. –