我正在考虑使用亚马逊云服务(EC2,S3等)进行托管。我一直在查看可以指定配置各种实例的JSON元数据,而且我关注的是复杂性。是否存在将生成有效JSON元数据的dsl,更重要的是验证条目?
答案 0 :(得分:3)
不幸的是,我最近在搜索之后画了一个空白。我正在使用Amazon Web Services CloudFormation(您正在谈论的是JSON元数据吗?)。
CloudFormation JSON文件存在一些问题:
所以我一直在使用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请求模板正文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/