価格が適切なときに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)