使用clojure获取instance-id的最佳方法

时间:2015-05-10 16:46:52

标签: amazon-web-services amazon-ec2 clojure

我正在使用clojure客户端amazonica来尝试clojure并编写一些脚本来帮助管理aws ec2实例。

我正在尝试使用此代码段获取实例ID:

(def instances ((describe-instances) :reservations))
(def an_instance ((first instances) :instances))
(def instance_id ((first an_instance) :instance-id))

寻找一种更好的方法,所以我可以将它用于任何其他json输出。

编辑:尝试从实例中获取实例ID,安全组和标记名称。

除了上面的问题,当我使用使用aws java sdk版本1.9.33的amazonica客户端时,我在控制台上得到了这个:

May 10, 2015 1:31:57 PM com.amazonaws.http.AmazonHttpClient logRequestId
INFO: x-amzn-RequestId: not available

我该怎么做才能解决这个问题?

编辑:为了澄清,我正在尝试从VPC或实例外部获取此信息。

1 个答案:

答案 0 :(得分:2)

如果要从实例本身中找到instance-id:

(slurp "http://169.254.169.254/latest/meta-data/instance-id")

(有关详细信息,请参阅Instance Metadata and User Data。)

要查找所有实例的选定属性:

(map #(select-keys % [:instance-id :tags :security-groups])
     (flatten
      (map :instances
           (:reservations
            (amazonica.aws.ec2/describe-instances)))))