如何获取 Lightsail 实例的实例名称

Posted

技术标签:

【中文标题】如何获取 Lightsail 实例的实例名称【英文标题】:How do I get the instance name of a Lightsail instance 【发布时间】:2019-07-08 21:21:23 【问题描述】:

如何找到“此”Lightsail 实例的名称。 “This”是正在执行 aws 命令的实例。我的下面的脚本不起作用,因为我认为 Lightsail 只是另一个 EC2 实例。

#!/bin/bash
InstanceId=`curl -s http://169.254.169.254/latest/meta-data/instance-id`
echo $InstanceId

Region=`aws configure get region`
echo $Region

InstanceName=$(aws ec2 describe-tags --region $Region --filters "Name=resource-id,Values=$InstanceId" "Name=key,Values=Name" --output text | cut -f5)
echo $InstanceName 

【问题讨论】:

What is difference between Lightsail and EC2? 建议实例元数据应该可用。如果你在命令行上curl http://169.254.169.254/latest/meta-data/ 会发生什么? InstanceId 会打印出来。这是无法打印的实例名称 - 只是空输出。 【参考方案1】:

可以通过以下方式获取 Lightsail 实例的名称:

aws lightsail get-instances --query instances[].name

就我而言,这是我通过 Lightsail 管理控制台启动实例时自动分配的名称。我看不到在启动期间更改名称的方法。

有趣的是,我找不到使用 AWS CLI 列出与 Lightsail 实例关联的标签的方法。例如,我无法检索手动添加到实例中的 Name 标记,该标记显示在 Lightsail 控制台中。

更新:

在 cmets 讨论后,我得到了这个工作:

aws lightsail get-instances --query "instances[?contains(supportCode,'`curl -s http://169.254.169.254/latest/meta-data/instance-id`')].name" --output text

【讨论】:

该命令为我提供了我所在地区的所有 Lightsail 实例的名称。我正在寻找一个名称 - 正在发出 aws 命令的实例的名称。就像我得到了使用 curl 命令的实例的 InstanceId 一样。 哦!在那种情况下,我看不到一个简单的方法来做到这一点。您可以使用 curl http://169.254.169.254/latest/meta-data/instance-id 获取 EC2 实例 ID。但是,aws lightsail get-instances 仅将 ID 显示为 supportCode 的一部分,因此需要一些技巧来匹配它。 这实际上很有帮助,现在我只需要弄清楚如何匹配 jq 中的子字符串,因为 supportCode 中的 instanceName 带有一些数字(不知道它们代表什么)。这对我有用:aws lightsail get-instances | jq'.[] |地图(选择(.supportCode ==“1234567890/i-0abcdefgh”))| .[].name' 现在,我需要弄清楚如何在 jq 中执行 select(.supportCode contains instanceId) 谢谢,根据您的建议发布了我的解决方案。你知道supportCode是否总是格式“1234567/i-abdcefg”吗? 添加了解决方案。

以上是关于如何获取 Lightsail 实例的实例名称的主要内容,如果未能解决你的问题,请参考以下文章

如何从 EC2 快照创建 AWS Lightsail 实例?

如何从我的 Mac 连接到新的 Amazon Lightsail 实例?

如何从 ec2 实例获取电子邮件信息?

有没有办法每3个月自动安排一次Lightsail实例的启动?

有关如何为一个 amazon lightsail 实例配置多个/2 域的任何文档

Lightsail Wordpress 实例重启 Apache