2

我正在使用amazonica创建一个 ami,然后在它准备好时从 ami 启动一个实例。

我对amazonica 的问题是它的文档(我可以找到)几乎为零,除了自述文件中的内容。准备好的东西很少,涵盖的内容也很少。

我目前可以成功查看正在运行的实例,获取最新/所需的实例,从中创建一个 AMI,等到它准备好,然后启动该实例。

只是,该(run-instance)方法接受了我不知道什么参数。查看java api 文档,我已经通过一些试验和错误找出了大部分参数,但我仍然需要设置更多的东西。

我在哪里可以找到传递给这个函数的参数?

目前,我有:

(run-instances :image-id ami-id
             :min-count 1
             :max-count 1
             :instance-type "t2.small"
             :key-name "api-key-pair"
             :sercurity-groups ["sg-1a2b3c4d"]
             ;:vpc-id "vpc-a1b2c3d4"
             :subnet-id "subnet-a1b2c3d4"
             :monitoring true
             :ebs-optimized false
             :tag [{:value instance-name 
                    :key "Name"}])

这决定了大多数事情。但我不知道如何设置:

  • tag - 我想设置一个标签name: "prod-1.0"
  • 安全组。我已经尝试过上面的那个,这个:

     :security-groups [{:group-id "sg-1a2b3c4d" 
                 :group-name "SG_STRICT"}]
    

但没有用。实例有默认组,或者,我得到一个奇怪的错误,比如

...AmazonServiceException: The specified instance type can only be used in a VPC. A subnet ID or network interface ID is required to carry out the request

或者

....s.AmazonServiceException: The security group '{:group-id "sg-1a2b3c4d", :group-name "SG_STRICT"}' does not exist

我已经浏览了整个文档页面几次,找不到任何其他合理的选项/关键字可以传递。

我也想用 auto-assign-public-ip 选项启动实例。

不幸的是,来源并没有透露太多关于amazonica的信息,因为文档说它大量使用反射并且测试不是很精细。

那么如何为此设置安全组和标签?

4

1 回答 1

2

对于组,自述文件中的示例使用名称:groups而不是安全组,我认为您不需要同时指定 id 和名称,只需名称就足够了。我不这样做是因为在实践中我总是创建一个 ASG 并启动配置,然后将其放入 LB。amazonica 的示例如下所示:

:groups [{:group-name "cx", :group-id "sg-38f45150"}],

在启动配置中指定它时,它看起来像这样:

:security-groups ["Email-prod" "marker.production"]

使用amazonica 的最佳资源是AWS rest API 文档,您在instance create 上找不到参数,因为它在它自己的调用中。首先开始创建实例,然后从该响应中获取实例 ID 后,再次调用以标记实例。

(ec2/create-tags  
     {:resources ["i-cb2AAA3a"]  
      :tags [{:key "hello" 
             :value "world"}]}) 

阅读这些文档的一些提示:

  • unCamelCase 名称改为 un-camel-case
  • 具有迭代数字的参数,例如: &Tag.1.Key=webserver &Tag.1.Value= &Tag.2.Key=stack &Tag.2.Value=Production 可以写成数组
  • (截至今天)AWS Web 界面中存在一个错误,除非您单击“编辑标签”按钮,否则您无法看到新标签,因此除非您仔细检查,否则您的调用可能无法正常工作。AWS 有很多这样的错误。通过 Web 界面信任 API。
于 2015-01-30T21:45:57.827 回答