Tengo un par de solicitudes de EC2 Spot que lanzan instancias de EC2 cuando el precio es correcto. Me gustaría que las instancias resultantes se etiqueten con una Name
y una Role
etiqueta para que mi herramienta de administración de configuración sepa qué tipo de máquina es.
ACTUALIZACIÓN :
Tomé el consejo de Hyper Anthony y lo implementé, porque la encuesta iba a ser propensa a errores y requeriría muchos recursos. Agregué un script de inicio a mi AMI que actualiza las etiquetas cuando se inicia una instancia, estos son los pasos que tomé:
Asegúrese de que Boto esté instalado en cualquier AMI que esté utilizando
pip install boto
Asigne un rol de IAM a la instancia EC2
La instancia que está iniciando debe tener alguna forma de acceder a la información sobre la solicitud puntual. Use un rol de IAM o, alternativamente, haga que las claves de acceso estén disponibles para su instancia. La política que adjunté al rol de IAM que utilicé es:
{
"Statement": [
{
"Action": [
"ec2:CreateTags",
"ec2:DescribeTags",
"ec2:DescribeInstances"
],
"Effect": "Allow",
"Resource": [
"*"
],
"Sid": "Stmt1432737176000"
}
],
"Version": "2012-10-17"
}
Ejecute un script en el inicio para actualizar las etiquetas
def get_tags_from_spot_request():
instance_id = boto.utils.get_instance_identity()['document']['instanceId']
region = boto.utils.get_instance_identity()['document']['region']
conn = boto.ec2.connect_to_region(region)
inst = boto.ec2.instance.Instance(connection=conn)
inst.id = instance_id
inst.update()
spot_id = inst.spot_instance_request_id
tags = conn.get_all_tags(filters={'resource-type': 'spot-instances-request', 'resource-id': spot_id})
for tag in tags:
inst.add_tag(tag.name, tag.value)