Ho un paio di richieste Spot EC2 che avviano istanze EC2 quando il prezzo è giusto. Vorrei che le istanze risultanti fossero taggate con un Name
e Role
tag in modo che il mio strumento di gestione della configurazione sappia che tipo di macchina è.
AGGIORNAMENTO :
Ho seguito il consiglio di Hyper Anthony e l'ho implementato: poiché il polling sarebbe stato soggetto a errori e dispendioso in termini di risorse, ho aggiunto uno script di avvio alla mia AMI che aggiorna i tag all'avvio di un'istanza, questi sono i passaggi che ho intrapreso:
Assicurati che Boto sia installato su qualsiasi AMI che stai utilizzando
pip install boto
Assegnare un ruolo IAM all'istanza EC2
L'istanza che stai avviando deve avere un modo per accedere alle informazioni sulla richiesta spot. Utilizzare un ruolo IAM o in alternativa rendere disponibili le chiavi di accesso all'istanza. La politica che ho allegato al ruolo IAM che ho usato è:
{
"Statement": [
{
"Action": [
"ec2:CreateTags",
"ec2:DescribeTags",
"ec2:DescribeInstances"
],
"Effect": "Allow",
"Resource": [
"*"
],
"Sid": "Stmt1432737176000"
}
],
"Version": "2012-10-17"
}
Esegui uno script all'avvio per aggiornare i tag
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)