Amazon web services 为Terraform aws_autoscaling_group模块的每个实例设置唯一标记

Amazon web services 为Terraform aws_autoscaling_group模块的每个实例设置唯一标记,amazon-web-services,terraform,Amazon Web Services,Terraform,可以为Terraform的aws_autoscaling_group模块创建的每个EC2实例分配不同的标记值。例如,对于4个实例的ASG,节点1、节点2、节点3和节点4 谢谢。AWS中的自动缩放组只能(可选)将ASG的标记传播到它创建的实例。它不能基于ASG中的实例数进行任何动态标记 如果您真的需要这样做,那么您必须让实例的用户数据执行一些步骤,计算名称标记应该是什么,然后重新标记自身(当然,实例必须具有相应的IAM权限) 对于一个实例,要计算出它在ASG中的数字可能很棘手(请考虑您的自动缩放操

可以为Terraform的aws_autoscaling_group模块创建的每个EC2实例分配不同的标记值。例如,对于4个实例的ASG,节点1、节点2、节点3和节点4


谢谢。

AWS中的自动缩放组只能(可选)将ASG的标记传播到它创建的实例。它不能基于ASG中的实例数进行任何动态标记

如果您真的需要这样做,那么您必须让实例的用户数据执行一些步骤,计算名称标记应该是什么,然后重新标记自身(当然,实例必须具有相应的IAM权限)

对于一个实例,要计算出它在ASG中的数字可能很棘手(请考虑您的自动缩放操作是否同时添加了多个实例,或者添加的速度是否足够快,以至于在创建另一个实例之前,某些实例可能没有重新标记自己)但您可以更容易地让它找到自己的实例Id,并使用该Id创建一个唯一的标记名称(如果您更想要的话)

在这种情况下,类似这样的内容可能很有用:

ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)
CURRENT_NAME=$(aws ec2 describe-tags --filters Name=resource-id,Values=${ID} Name=key,Values=Name --query Tags[].Value --output text
NEW_NAME=${CURRENT_NAME}-${ID}

aws ec2 create-tags --resources ${ID} --tags Key=Name,Value=${NEW_NAME}

感谢ydaetskcoR,我已经用类似的方法解决了这个问题:
I=1,例如$(aws autoscaling描述自动缩放实例--查询'AutoScalingInstances[*].[InstanceId]--输出文本)aws ec2是否创建标记--资源$实例--标记键=Name,Value=“{machine.Name}”$I=$(I+1))完成
这两项都是很好的解决方案。