Amazon web services 如何获取Lightsail实例的实例名称

Amazon web services 如何获取Lightsail实例的实例名称,amazon-web-services,amazon-lightsail,Amazon Web Services,Amazon Lightsail,如何找到“此”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 ec

如何找到“此”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 

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

aws lightsail get-instances --query instances[].name
在我的例子中,这是我通过Lightsail管理控制台启动实例时自动分配的名称。我看不到在发布期间更改名称的方法

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

更新:

在评论中进行讨论后,我得出了以下结论:

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

建议实例元数据应可用。如果
curl会发生什么http://169.254.169.254/latest/meta-data/
在命令行上?InstanceId不会打印出来。无法打印的是实例名称-只是空输出。该命令提供我所在区域中所有Lightsail实例的名称。我正在寻找一个单一的名称—aws命令正在发出的实例的名称。就像我得到实例的InstanceId一样,我使用了curl命令。哦!在这种情况下,我看不到一个简单的方法来做这件事。您可以使用
curlhttp://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“现在,我需要弄清楚如何在jqThanks中进行选择(.supportCode包含instanceId),根据您的建议发布了我的解决方案。您知道supportCode是否始终采用“1234567/i-abdcefg”格式吗?添加了一个解决方案。