2015-11-16 3 views
0

Я совершенно новый в 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-секундным рукопожатием для файла, конечно, неприемлемо.

+1

15s кажется довольно много !! Даже если вы считаете, что повышенная латентность в первый раз вызывается функцией лямбда, она все еще на порядок медленнее, чем должна быть. Каков размер этого файла конфигурации? –

+2

S3, dynamodb (который утверждает, что имеет однократное миллисекундное время отклика) или все, что может хранить данные в Интернете. Хотя в идеале вы избегаете внешней конфигурации, так как ее нужно читать каждый раз. – zapl

+0

@BrunoReis очень маленький, как вы предполагаете, это 3 линии. Время, кажется, расходуется на креацию остального вызова. –

ответ

-1

В этом случае, я думаю, вы должны попытаться сохранить его с помощью EBS. Но это будет стоить вам больше, потому что EBS оптимизирован для ввода-вывода, а хранилище EBS организовано в тома, и как только том EBS подключается к серверу, он обрабатывается как локальный диск.

+2

Lambda не работает с EBS, потому что функции Lambda выполняются «где-то в облаке» (например, кластер лямбда-рабочей группы amazon), работает только EBS на известных экземплярах EC2, которые вы явно не имеете в случае лямбда. – zapl

+0

Спасибо, моя вина, я забыл, что он использует Лямбда в этом случае, извините. – codeaholicguy

+0

@zapl Итак, я думаю, что в этом случае perharp будет лучше, если мы будем использовать базу данных ключей для конфигурации хранилища, не так ли? – codeaholicguy

Смежные вопросы