Tenho algumas solicitações spot EC2 que iniciam instâncias EC2 quando o preço é justo. Gostaria que as instâncias resultantes fossem etiquetadas com as tags Name
e, Role
para que minha ferramenta de gerenciamento de configuração saiba que tipo de máquina é.
ATUALIZAÇÃO :
Peguei o conselho do Hyper Anthony e o implementei - porque a pesquisa seria propensa a erros e consumia muitos recursos. Adicionei um script de inicialização à minha AMI que atualiza as tags quando uma instância é iniciada, estas são as etapas que eu executei:
Verifique se o Boto está instalado em qualquer AMI que você estiver usando
pip install boto
Atribuir uma função do IAM à instância do EC2
A instância que você está iniciando deve ter alguma maneira de acessar informações sobre a solicitação de spot. Use uma função IAM ou, alternativamente, disponibilize as chaves de acesso à sua instância. A política que anexei à função do IAM que usei é:
{
"Statement": [
{
"Action": [
"ec2:CreateTags",
"ec2:DescribeTags",
"ec2:DescribeInstances"
],
"Effect": "Allow",
"Resource": [
"*"
],
"Sid": "Stmt1432737176000"
}
],
"Version": "2012-10-17"
}
Execute um script na inicialização para atualizar as tags
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)
fonte