2013-08-20 235 views

回答

0

不确定bash会是什么样子,但如果可以获取实例ID,则可以使用实例本身的SDK。您将查询ec2追索权并传入ec2实例ID。使用Ruby SDK它会是什么样子:

i = ec2.instances["i-12345678"] 
puts i.dns_name 
10

首先,在Amazon EC2实例元数据服务也提供了相当长的一段其他名称除了instance-id,如果这些可能是你在找什么 - 看Instance Metadata Categories

  • hostname - 实例的专用主机名。在存在多个网络接口的情况下,这指的是eth0设备(设备号为0的设备)。
  • local-hostname - 实例的私有DNS主机名。在存在多个网络接口的情况下,这指的是eth0设备(设备号为0的设备)。
  • public-hostname - 该实例的公共DNS。如果实例位于VPC中,则只有在enableDnsHostnames属性设置为true时才会返回此类别。

如果您正在寻找名称如暴露在AWS Management Console不过,你的确会需要诉诸使用Tools for Amazon Web Services的一个检索它 - 这名称其实只是一个普通的标签使用密钥名称(请参阅Tagging Your Amazon EC2 Resources),它恰好在大多数AWS服务中用于显而易见的目的。

下面是如何与AWS Command Line Interface得到它例如(跳过区和证书):

aws ec2 describe-tags \ 
--filters Name=resource-id,Values=i-abcd1234 Name=key,Values=Name \ 
--query Tags[].Value --output text 
+3

你还可以使用--query命令行参数和--output直接输出实例名称,例如:'aws ec2 describe-tags --filters Name = resource-id,Values = i-abcd1234 Name = key,Values = Name --query Tags []。Value --output text' –

+1

@CarlosP - 我已经用你提出的确实更简单的方法更新了答案('--query'选项在AWS CLI中不可用得到去),谢谢你指出这一点! –

-2

发现describe-tags不能在我的配置文件中工作,失败并显示'UnauthorizedOperation'错误。得到这个与描述-情况下工作:使用区域和访问键

aws ec2 describe-instances --filters Name=instance-id,Values=$(wget -qO- http://instance-data/latest/meta-data/instance-id) --query Reservations[].Instances[].Tags[].Value --output text 

命令从当前用户的AWS配置文件的[default]部分:〜/ .aws /配置。如果(可以在AWS控制台的IAM仪表板中找到)需要使用其他用户的区域/按键,你可以像这样把它们添加到该文件中的另一个部分,例如[用户2]并使用命令:

​​3210