簡體   English   中英

如何從 AWS 中的實例獲取實例名稱?

[英]How to get the instance Name from the instance in AWS?

我正在嘗試設置一種在創建實例時自動在 route53 中注冊實例的方法,使用 salt 和本文

文章使用ec2-metadata來獲取實例 ID 和主機名。 我想知道是否有辦法在實例中使用 bash 來獲取實例名稱。 ec2-metadata似乎只顯示實例 ID。 提前致謝。

首先,您需要獲取instance-id

AWS_INSTANCE_ID=`curl -s http://169.254.169.254/latest/meta-data/instance-id`

您可以使用以下命令獲取ec2 instance name

EC2_NAME=$(aws ec2 describe-tags --region $REGION --filters "Name=resource-id,Values=$AWS_INSTANCE_ID" "Name=key,Values=Name" --output text | cut -f5)

請確保您已安裝AWS Cli

我希望這有幫助。 謝謝!

首先, Amazon EC2 Instance Metadata Service還提供了一些除了instance-id之外的其他名稱,如果這些可能是您正在尋找的 - 請參閱實例元數據類別

  • hostname -實例的私有主機名。 在存在多個網絡接口的情況下,這是指 eth0 設備(設備編號為 0 的設備)。
  • local-hostname -實例的私有 DNS 主機名。 在存在多個網絡接口的情況下,這是指 eth0 設備(設備編號為 0 的設備)。
  • public-hostname -實例的公共 DNS。 如果實例在 VPC 中,則僅當 enableDnsHostnames 屬性設置為 true 時才返回此類別。

但是,如果您要查找在AWS 管理控制台中公開的名稱,則確實需要使用Amazon Web Services 工具之一來檢索它 - 該名稱實際上只是一個帶有鍵名稱的常規標簽(請參閱標記您的 Amazon EC2 資源),它恰好用於大多數 AWS 服務,用於明顯的目的。

例如,以下是使用AWS 命令​​行界面獲取它的方法(跳過區域和憑證):

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

不確定使用 bash 會是什么樣子,但如果您可以獲得實例 ID,則可以使用實例本身的 SDK。 您將查詢 ec2 資源並傳入 ec2 實例 ID。 使用 ruby​​ sdk 它看起來像:

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

使用此命令顯示哪些元數據可用

TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/

您可以鏈接以下任一文件/文件夾以顯示所需信息

ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
events/
hostname
iam/
identity-credentials/
instance-action
instance-id
instance-life-cycle
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-keys/
reservation-id

例如。 instance-type可以將其鏈接到上述命令,如下所示:

TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/instance-type

來自 AWS 的參考

發現描述標簽在我的配置中不起作用,因“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/config 。 如果需要使用其他用戶的區域/密鑰(可以在 AWS 控制台的 IAM 儀表板中找到),您可以將它們添加到該文件的另一個部分,例如 [user2] 並在命令中使用,如下所示:

aws --profile user2 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM