CMag Asked: 2014-12-26 20:43:26 +0800 CST2014-12-26 20:43:26 +0800 CST 2014-12-26 20:43:26 +0800 CST 在 AWS 中获取自动缩放组名称 772 伙计们,我正在编写一个脚本,它将运行实例的标签导出为环境变量。自动缩放组的问题是这些标签对实例不可用。 如何通过 api/aws cli 命令知道实例属于哪个自动缩放组?我需要在脚本中使用实例标签,但是它们不可用。建议? 谢谢! amazon-web-services 4 个回答 Voted Best Answer Bazze 2014-12-27T06:37:09+08:002014-12-27T06:37:09+08:00 如何通过 api/aws cli 命令知道实例属于哪个自动缩放组? 您可以将autoscaling describe-auto-scaling-instancescommand 与 option 一起使用 --instance-ids,如下所示: aws autoscaling describe-auto-scaling-instances --instance-ids="i-zzxxccvv" 自动缩放组的问题是这些标签对实例不可用。[...] 我需要在脚本中使用实例标签,但是它们不可用。建议? 我将其解释为您想获取实例所属的自动缩放组的标签?使用AutoScalingGroupName上面显示的命令返回的内容,您可以使用以下命令: aws autoscaling describe-tags --filters Name=auto-scaling-group,Values=name-of-the-auto-scaling-group-here sihil 2015-05-31T05:50:52+08:002015-05-31T05:50:52+08:00 查找实例的自动缩放组的最简单方法是检查标签。自动缩放组中的任何实例都将具有一个aws:autoscaling:groupName包含组名称的标签。您可以使用以下命令检索该标签: aws ec2 describe-tags --filters "Name=resource-id,Values=${INSTANCE}" "Name=key,Values=aws:autoscaling:groupName" 然后,您可以按照 Bazze 的描述获取标签。 对此的替代解决方案是将标签从自动缩放组传播到实例。 如果您使用 cloudformation 创建 ASG,"PropagateAtLaunch": "true"则为要传播的每个标签进行设置(请参阅Aws Cloud Formation 文档)。 如果您手动创建组,请确保选中每个标签的“标记新实例”框。 完成此操作后,标签将被复制到实例中,您可以使用 describe tags 命令简单地检查实例的标签: aws ec2 describe-tags --filters "Name=resource-id,Values=${INSTANCE}" 我发现jq对处理 aws cli 工具的输出很有帮助。例如,以下命令key=value从 JSON 生成一个列表: aws ec2 describe-tags --filters "Name=resource-id,Values=${INSTANCE}" | jq -r '.Tags[] | @text "\(.Key)=\(.Value)"' ErnieAndBert 2019-08-17T07:11:31+08:002019-08-17T07:11:31+08:00 把它们放在一起: INSTANCE_ID=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id` ASG_NAME=`aws ec2 describe-tags --filters "Name=resource-id,Values=$INSTANCE_ID" --region us-east-2 | jq '.Tags[] | select(.["Key"] | contains("aws:autoscaling:groupName")) | .Value'` ASG_NAME=`echo $ASG_NAME | tr -d '"'` 做一个echo $ASG_NAME,你应该看到它。 AstroTom 2021-05-07T06:21:33+08:002021-05-07T06:21:33+08:00 最简单的获取自动缩放组名称如下: aws autoscaling describe-auto-scaling-instances --query=AutoScalingInstances[].AutoScalingGroupName --instance-ids=$(curl -s http://169.254.169.254/latest/meta-data/instance-id) --output text
您可以将
autoscaling describe-auto-scaling-instances
command 与 option 一起使用--instance-ids
,如下所示:我将其解释为您想获取实例所属的自动缩放组的标签?使用
AutoScalingGroupName
上面显示的命令返回的内容,您可以使用以下命令:查找实例的自动缩放组的最简单方法是检查标签。自动缩放组中的任何实例都将具有一个
aws:autoscaling:groupName
包含组名称的标签。您可以使用以下命令检索该标签:然后,您可以按照 Bazze 的描述获取标签。
对此的替代解决方案是将标签从自动缩放组传播到实例。
如果您使用 cloudformation 创建 ASG,
"PropagateAtLaunch": "true"
则为要传播的每个标签进行设置(请参阅Aws Cloud Formation 文档)。如果您手动创建组,请确保选中每个标签的“标记新实例”框。
完成此操作后,标签将被复制到实例中,您可以使用 describe tags 命令简单地检查实例的标签:
我发现
jq
对处理 aws cli 工具的输出很有帮助。例如,以下命令key=value
从 JSON 生成一个列表:把它们放在一起:
做一个
echo $ASG_NAME
,你应该看到它。最简单的获取自动缩放组名称如下: