伙计们,我正在编写一个脚本,将运行实例的标签作为环境variables导出。 自动缩放组的问题在于这些标签对实例不可用。
如何通过api / aws cli命令知道实例属于哪个自动缩放组? 我需要在脚本中使用实例标签,但是它们不可用。 build议?
谢谢!
如何通过api / aws cli命令知道实例属于哪个自动缩放组?
您可以将autoscaling describe-auto-scaling-instances命令与选项--instance-ids一起使用,如下所示:
aws autoscaling describe-auto-scaling-instances --instance-ids="i-zzxxccvv"
自动缩放组的问题在于这些标签对实例不可用。 […]我需要在脚本中使用实例标签,但是它们不可用。 build议?
我正在解释这个,因为你想获得实例所属的自动缩放组的标签? 使用从上面显示的命令返回的AutoScalingGroupName ,可以使用以下命令:
aws autoscaling describe-tags --filters Name=auto-scaling-group,Values=name-of-the-auto-scaling-group-here
查找实例的自动缩放组最简单的方法是检查标签。 自动调节组中的任何实例都将有一个名为aws:autoscaling:groupName的标签,其中包含组名。 您可以使用以下命令检索该标签:
aws ec2 describe-tags --filters "Name=resource-id,Values=${INSTANCE}" "Name=key,Values=aws:autoscaling:groupName"
然后你可以像Bazze所描述的那样抓取标签。
另一个解决scheme是将标签从自动调节组传播到实例。
如果您正在使用cloudformation创buildASG,请为要传播的每个标记设置"PropagateAtLaunch": "true" (请参阅Aws Cloud Formation Docs )。
如果要手动创build组,请确保选中每个标记的“标记新实例”框。
一旦你完成了这些,标签将被复制到实例中,你可以使用describe tags命令简单地检查实例的标签:
aws ec2 describe-tags --filters "Name=resource-id,Values=${INSTANCE}"
我发现jq有助于处理aws cli工具的输出。 例如,以下命令从JSON生成一个key=value列表:
aws ec2 describe-tags --filters "Name=resource-id,Values=${INSTANCE}" | jq -r '.Tags[] | @text "\(.Key)=\(.Value)"'