Tôi có một vài Yêu cầu tại chỗ EC2 khởi chạy EC2 Instances khi giá cả phù hợp. Tôi muốn các trường hợp kết quả được gắn thẻ a Name
và Role
tag để công cụ quản lý cấu hình của tôi biết loại máy đó là gì.
CẬP NHẬT :
Tôi đã lấy lời khuyên của Hyper Anthony và thực hiện nó - vì việc bỏ phiếu sẽ dễ bị lỗi và tốn nhiều tài nguyên. Tôi đã thêm một tập lệnh khởi động vào AMI của mình để cập nhật các thẻ khi một phiên bản khởi chạy, đây là những bước tôi đã thực hiện:
Đảm bảo Boto được cài đặt trên bất kỳ AMI nào bạn đang sử dụng
pip install boto
Gán vai trò IAM cho trường hợp EC2
Ví dụ bạn khởi chạy phải có một số cách để truy cập thông tin về yêu cầu tại chỗ. Sử dụng vai trò IAM hoặc thay thế làm cho các khóa truy cập có sẵn cho cá thể của bạn. Chính sách mà tôi đã gắn với vai trò IAM mà tôi đã sử dụng là:
{
"Statement": [
{
"Action": [
"ec2:CreateTags",
"ec2:DescribeTags",
"ec2:DescribeInstances"
],
"Effect": "Allow",
"Resource": [
"*"
],
"Sid": "Stmt1432737176000"
}
],
"Version": "2012-10-17"
}
Chạy một kịch bản khi khởi động để cập nhật các thẻ
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)