2012-01-19 25 views
3

我正在尋找使用亞馬遜雲服務(EC2,S3等)進行託管。我一直在尋找可以指定的JSON元數據來配置各種實例,而我所關心的複雜性。是否有一個dsl會生成有效的JSON元數據,更重要的是驗證條目?是否有AWS EC2的dsl?

+0

有一些適用於AWS和S3的Grails插件可能是相關的http://grails.org/plugin/aws http://grails.org/插件/亞馬遜-s3 –

+0

我已經使用了amazon-s3插件,並且它工作的很棒。 – mlathe

回答

3

不幸的是,我畫了一個空白的最近搜索此之後。我正在使用亞馬遜網絡服務CloudFormation(是你談論的JSON元數據?)。

有幾個問題與CloudFormation JSON文件:

  1. 我在超過1500線,這是不可能的閱讀,
  2. 你不能表達的一切API給你,尤其是在虛擬私有云領域,
  3. 有許多被花費很長的時間來修復錯誤的,彈性負載平衡器失去HTTPS信息,例如。

所以我一直在使用Java API的Scala中使用直接的API調用。其實真的很不錯。

Java API有一個「設置者」的味道,從with開始,返回this,以便它們可以鏈接。在斯卡拉,你可以使用它們來扮演一個窮人的DSL。所以,你可以做這樣的事情

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

as.updateAutoScalingGroup(updateRequest) 

其他的事情很容易在斯卡拉做與Java API。例如,組中的所有子網的VPC在地圖上根本就

val subnetsByVPC = ec2.describeSubnets(new DescribeSubnetsRequest).getSubnets.groupBy(_.getVpcId) 
+0

我已經完成了本質上的工作,我已經使用Java AWS API構建了一些groovy腳本。我已經添加了一些元編程來簡化API並添加一些缺失的選項。工作很好。 –

+0

我日常工作的需求阻礙了我爲亞馬遜Web服務Java API編寫全面的Scala DSL。這一定非常棒。坦率地說,比CloudFormation好很多,因爲某些原因,它在亞馬遜似乎沒有得到很多關注。這是相當多的錯誤。 –

0

現在有,雖然我還沒有使用它:Coffin一個CoffeeScript的DSL的CloudFormation。

如果你不是在談論CloudFormation,而是談論更通用的API,那麼我發現的最好的界面是AWS' own aws-sdk ruby gem。與他們發佈的其他SDK相比,它們做得非常好 - 但粗糙的make-client/make-request/get-response/look-at-result-affairs,ruby SDK wraps a nicer domain-model over the top, so you interact via collections at a higher abstract level

它還具有相當不錯的性能特點,因爲如果您知道不需要新的響應,您可以緩存響應以節省往返時間。

1

如果有人還在尋找AWS CloudFormation DSL - 我們一直在使用Ruby DSL for CloudFormation

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

  • 這家整潔的項目提供了一個工具來轉換現有的CloudFormation模板(S)到Ruby DSL
  • 它將生成有效的JSON輸出
  • 驗證Ruby模板條目與驗證常規CloudFormation模板類似(請參閱CFN-驗證模板
  • 你的模板成爲Ruby代碼,所以很容易有可重用的模塊(DRY)
  • 您可以定義局部變量
  • 你可以在你的DSL模板評論
  • 大大提高可讀性
  • 大大降低了DSL模板尺寸

的CloudFormation請求模板體size limits是惱人的 - 我們必須上傳我們的大CloudFormati將模板添加到S3,然後使用他們的S3 URL創建/更新堆棧。

0

我有CloudFormation模板3000行以上。我發現在JSON中發表評論非常有幫助!在使用它之前,你只需剝去它。有一個驗證器可以驗證模板並刪除評論:http://cloudformation-validation.com/

+1

您幾乎可以在CloudFormation模板的任何位置添加「元數據」部分,並且它們可能包含任意數據,因此我使用這些數據進行評論。這有一個好處,那就是註釋保留在模板中,任何遇到模板但不知道源代碼的人都可以使用。 –