가격이 적당 할 때 EC2 인스턴스를 시작하는 몇 가지 EC2 스팟 요청이 있습니다. 결과 인스턴스에 Name
및 Role
태그가 지정되어 구성 관리 도구가 어떤 유형의 머신인지 알 수 있기 를 원합니다 .
업데이트 :
Hyper Anthony의 조언을 받아 구현했습니다. 폴링은 오류가 발생하기 쉽고 리소스를 많이 사용하기 때문에 인스턴스가 시작될 때 태그를 업데이트하는 시작 스크립트를 AMI에 추가했습니다.
사용중인 AMI에 Boto가 설치되어 있는지 확인
pip install boto
EC2 인스턴스에 IAM 역할 할당
시작하는 인스턴스는 스팟 요청에 대한 정보에 액세스 할 수있는 방법이 있어야합니다. 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)