У меня есть пара спотовых запросов EC2, которые запускают инстансы EC2, когда цена правильная. Я хотел бы, чтобы полученные экземпляры были помечены тегами a Name
и, Role
чтобы мой инструмент управления конфигурацией знал, какой это тип машины.
ОБНОВЛЕНИЕ :
Я воспользовался советом Hyper Anthony и реализовал его - поскольку опрос собирался быть подверженным ошибкам и ресурсоемким, я добавил в AMI сценарий запуска, который обновляет теги при запуске экземпляра. Вот шаги, которые я предпринял:
Убедитесь, что Boto установлен на любой AMI, который вы используете
pip install boto
Назначьте роль IAM для экземпляра EC2
Запускаемый вами экземпляр должен иметь какой-то способ доступа к информации о спотовом запросе. Используйте роль IAM или альтернативно сделайте ключи доступа доступными для вашего экземпляра. Политика, которую я прикрепил к роли IAM, которую я использовал:
{
"Statement": [
{
"Action": [
"ec2:CreateTags",
"ec2:DescribeTags",
"ec2:DescribeInstances"
],
"Effect": "Allow",
"Resource": [
"*"
],
"Sid": "Stmt1432737176000"
}
],
"Version": "2012-10-17"
}
Запустите скрипт при запуске, чтобы обновить теги
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)