Есть ли dsl для AWS EC2? - PullRequest
3 голосов
/ 19 января 2012

Я рассматриваю использование облачных сервисов Amazon (EC2, S3 и т. Д.) Для хостинга.Я смотрел на метаданные JSON, которые можно указывать для настройки различных экземпляров, и сложность меня беспокоит.Существует ли dsl, который будет генерировать допустимые метаданные JSON и, что более важно, проверять записи?

Ответы [ 4 ]

3 голосов
/ 29 февраля 2012

К сожалению, я нарисовал пустую после поиска этого недавно.Я использую Amazon Web Services CloudFormation (это метаданные JSON, о которых вы говорите?).

Существует несколько проблем с файлами JSON CloudFormation:

  1. I 'm более 1500 строк, и невозможно прочитать,
  2. Вы не можете выразить все, что API дает вам, особенно в области виртуальных частных облаков,
  3. Существует множество ошибок, которыенапример, Elastic Load Balancers теряют информацию HTTPS, тратя много времени.

Так что я использовал прямые вызовы API в Scala с использованием Java API.Это на самом деле очень хорошо.

Java API имеет разновидность «сеттеров», начинающихся с with, которые возвращают this, поэтому они могут быть объединены в цепочку.В Scala вы можете использовать их, чтобы действовать как DSL бедняка.Таким образом, вы можете делать такие вещи, как

val updateRequest = new UpdateAutoScalingGroupRequest()
                    .withAutoScalingGroupName(group.getAutoScalingGroupName)
                    .withAvailabilityZones(subnetAZsOfOurVPC)
                    .withVPCZoneIdentifier(subnetNamesOfOurVPC)

as.updateAutoScalingGroup(updateRequest)

Другие вещи в Scala легко реализовать с помощью API Java.Например, сгруппируйте все свои подсети по VPC на карте, просто выполните

val subnetsByVPC = ec2.describeSubnets(new DescribeSubnetsRequest).getSubnets.groupBy(_.getVpcId)
2 голосов
/ 13 июня 2014

Если кто-то все еще ищет AWS CloudFormation DSL - мы использовали Ruby DSL для CloudFormation :

https://github.com/bazaarvoice/cloudformation-ruby-dsl

  • Этот аккуратный проект предоставляет инструмент для преобразования существующих шаблонов CloudFormation в Ruby DSL
  • . Он будет генерировать действительный вывод JSON
  • Проверка записей шаблона Ruby аналогична проверке обычного шаблона CloudFormation (см. cfn-validate-template )
  • Ваш шаблон становится кодом Ruby, поэтому легко использовать повторно используемые модули (DRY)
  • Вы можете определять локальные переменные
  • Вы можете иметь комментарии в своем шаблоне DSL
  • Значительно улучшенная читаемость
  • Значительно уменьшенный размер шаблона DSL

Тело шаблона запроса CloudFormation ограничения размера раздражают - мы должны загрузить наши большие шаблоны CloudFormation на S3, а затем создавать / обновлять стеки, используя их URL-адреса S3.

0 голосов
/ 18 июля 2014

У меня есть шаблоны CloudFormation свыше 3000 строк.Я обнаружил, что размещение комментариев в JSON очень помогает !!Вы просто должны раздеть его перед использованием.Существует валидатор, который проверяет шаблон и удаляет комментарии: http://cloudformation -validation.com /

0 голосов
/ 31 августа 2012

Сейчас есть, хотя я еще не использовал его: Гроб CoffeeScript DSL для CloudFormation.

Если вы не говорите о CloudFormation, а вместо этого говорите о более общем APIтогда самый приятный интерфейс, который я нашел, это AWS 'собственный aws-sdk ruby ​​gem В отличие от других SDK, которые они публикуют и которые довольно хорошо сделаны, но довольно грубы, делают make-client / make-request / get-response / look-at-result, ruby ​​SDK оборачивает более подходящую модель доменаtop, так что вы взаимодействуете с коллекциями на более высоком абстрактном уровне .

. Он также имеет довольно приятные функции производительности в том смысле, что вы можете кэшировать ответы, чтобы сэкономить в цикле, если вы не знаетенужны свежие ответы.

...