c4u*_*elf 9 amazon-ec2 amazon-web-services
我有几个 EC2 Spot 请求,它们在价格合适时启动 EC2 实例。我希望生成的实例使用 aName和Roletag 进行标记,以便我的配置管理工具知道它是什么类型的机器。
更新:
我采纳了 Hyper Anthony 的建议并实施了它——因为轮询容易出错且占用大量资源,我向我的 AMI 添加了一个启动脚本,它会在实例启动时更新标签,这些是我采取的步骤:
pip install boto
您正在启动的实例必须有某种方式来访问有关 Spot 请求的信息。使用 IAM 角色或将访问密钥提供给您的实例。我附加到我使用的 IAM 角色的策略是:
{
"Statement": [
{
"Action": [
"ec2:CreateTags",
"ec2:DescribeTags",
"ec2:DescribeInstances"
],
"Effect": "Allow",
"Resource": [
"*"
],
"Sid": "Stmt1432737176000"
}
],
"Version": "2012-10-17"
}
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
Ant*_*ace 11
Spot 实例请求是一种 EC2 资源。AWS 文档指出,这种类型的资源可以被标记,但生成的标记不会转移到实际实例中:
您为 Spot 实例请求创建的标签仅适用于请求。这些标签不会自动添加到 Spot 服务为满足请求而启动的 Spot 实例。您必须在创建 Spot 实例请求时或在 Spot 实例启动后自行将标签添加到 Spot 实例。
因此,您需要在实例启动后添加标签。您在这里有一些选择:
小智 5
您现在可以在创建 Spot 队列请求时向 SpotFleetLaunchSpecification 提供标签,这些标签将自动应用于该队列中的新实例。
http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_SpotFleetLaunchSpecification.html
| 归档时间: |
|
| 查看次数: |
6528 次 |
| 最近记录: |