是否有适用于AWS EC2的dsl?

时间:2012-01-19 01:42:15

标签: dsl cloud-hosting

我正在考虑使用亚马逊云服务(EC2,S3等)进行托管。我一直在查看可以指定配置各种实例的JSON元数据,而且我关注的是复杂性。是否存在将生成有效JSON元数据的dsl,更重要的是验证条目?

4 个答案:

答案 0 :(得分:3)

不幸的是,我最近在搜索之后画了一个空白。我正在使用Amazon Web Services CloudFormation(您正在谈论的是JSON元数据吗?)。

CloudFormation JSON文件存在一些问题:

  1. 我已经超过1,500行,而且无法阅读,
  2. 您无法表达API为您提供的所有内容,尤其是虚拟私有云领域,
  3. 有很多错误需要很长时间才能修复,例如Elastic Load Balancers会丢失HTTPS信息。
  4. 所以我一直在使用Java API在Scala中使用直接API调用。这真的很不错。

    Java API有一种“setter”,从with开始返回this,因此可以链接它们。在Scala中,你可以使用它们来扮演穷人的DSL。所以你可以做像

    这样的事情
    val updateRequest = new UpdateAutoScalingGroupRequest()
                        .withAutoScalingGroupName(group.getAutoScalingGroupName)
                        .withAvailabilityZones(subnetAZsOfOurVPC)
                        .withVPCZoneIdentifier(subnetNamesOfOurVPC)
    
    as.updateAutoScalingGroup(updateRequest)
    

    使用Java API在Scala中很容易做到其他事情。例如,按地图中的VPC对所有子网进行分组,只需执行

    即可
    val subnetsByVPC = ec2.describeSubnets(new DescribeSubnetsRequest).getSubnets.groupBy(_.getVpcId)
    

答案 1 :(得分:2)

如果有人还在寻找AWS CloudFormation DSL,我们一直在使用Ruby DSL for CloudFormation

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

  • 这个整洁的项目提供了一个工具,可以将现有的CloudFormation模板转换为Ruby DSL
  • 它将生成有效的JSON输出
  • 验证Ruby模板条目类似于验证常规CloudFormation模板(请参阅 cfn-validate-template
  • 您的模板成为Ruby代码,因此很容易拥有可重复使用的模块(DRY)
  • 您可以定义局部变量
  • 您可以在DSL模板中添加评论
  • 极大地提高了可读性
  • 大大减少了DSL模板尺寸

CloudFormation请求模板正文size limits很烦人 - 我们必须将大型CloudFormation模板上传到S3,然后使用他们的S3网址创建/更新堆栈。

答案 2 :(得分:0)

现在,虽然我还没有使用它:Coffin一个用于CloudFormation的CoffeeScript DSL。

如果你不是在谈论CloudFormation,而是更一般的API谈话,那么我找到的最好的界面是AWS' own aws-sdk ruby gem。与他们发布的其他SDK完全不同,这些SDK是非常完美但粗略的make-client / make-request / get-response / look-at-result事务,ruby SDK wraps a nicer domain-model over the top, so you interact via collections at a higher abstract level

它还具有非常好的性能功能,如果您知道不需要新的响应,则可以缓存响应以节省往返次数。

答案 3 :(得分:0)

我有超过3000行的CloudFormation模板。我发现在JSON中添加注释有很大帮助!你只需要在使用之前将其剥离。有一个验证器可以验证模板并删除注释:http://cloudformation-validation.com/