AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 686526
Accepted
c4urself
c4urself
Asked: 2015-04-30 09:17:52 +0800 CST2015-04-30 09:17:52 +0800 CST 2015-04-30 09:17:52 +0800 CST

您如何标记和命名由 EC2 Spot 请求启动的 EC2 实例?

  • 772

我有几个 EC2 Spot 请求会在价格合适时启动 EC2 实例。我希望生成的实例用 aName和Role标签标记,以便我的配置管理工具知道它是什么类型的机器。

更新:

我采纳了 Hyper Anthony 的建议并实施了它——因为轮询容易出错且占用大量资源,所以我在我的 AMI 中添加了一个启动脚本,它会在实例启动时更新标签,这些是我采取的步骤:

确保 Boto 安装在您使用的任何 AMI 上

pip install boto

将 IAM 角色分配给 EC2 实例

您要启动的实例必须有某种方式来访问有关 Spot 请求的信息。使用 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)
amazon-ec2
  • 3 3 个回答
  • 6945 Views

3 个回答

  • Voted
  1. Best Answer
    Anthony Neace
    2015-04-30T13:52:39+08:002015-04-30T13:52:39+08:00

    Spot 实例请求是一种 EC2 资源。AWS 文档指出,这种类型的资源可以被标记,但生成的标签不会转移到实际实例中:

    您为 Spot 实例请求创建的标签仅适用于请求。这些标签不会自动添加到 Spot 服务启动以满足请求的 Spot 实例。您必须在创建 Spot 实例请求时或在 Spot 实例启动后自行为 Spot 实例添加标签。

    因此,您需要在实例启动后添加标签。您在这里有一些选择:

    • 已创建实例上的用户数据脚本:编写使用命令行工具和EC2 元数据服务的用户数据脚本,以允许实例发现其实例 ID 并为自己创建标签。您可以使用 AWS CLI创建标签来标记您的任何 EC2 资源。或者,您可以将其作为您打算使用的任何操作系统的启动脚本烘焙到 AMI 中。在任何一种情况下,实例都必须具有足够的权限才能为自己创建 EC2 标签。
    • 监控您的 Spot 请求的外部实用程序:您可以使用其中一个 AWS 开发工具包来监控您的 Spot 请求并在创建实例后对其进行标记。AWS在“如何标记您的 Spot 请求和实例”标题下有一个关于这个主题的教程。无需太冗长,这仅涉及轮询Describe Spot Instance Requests直到创建的 Instance Id 可用,然后调用Create Tags。
    • 11
  2. rjh
    2017-08-23T04:25:22+08:002017-08-23T04:25:22+08:00

    现在,您可以在创建现场队列请求时向 SpotFleetLaunchSpecification 提供标签,这些标签将自动应用于该队列中的新实例。

    http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_SpotFleetLaunchSpecification.html

    • 5
  3. efreedom
    2015-08-31T17:06:30+08:002015-08-31T17:06:30+08:00

    另一种可能性是使用 Ansible 作为您的配置管理工具。在 ec2 模块中,您可以启动现货和正常生命周期实例,您可以添加“instance_tags”属性来创建标签。一个简单的剧本是:


      - name: Provision Spot Instance
        hosts: localhost
        connection: local
        gather_facts: False
        tasks:
          - name: Launch the new Spot Instance
            local_action:
              module: ec2
              spot_price: 0.02
              group: testSG
              instance_type: m3.medium
              image: ami-12345
              wait: true
              instance_tags:
                Name: TagValueForName
                Foo: TagValueForFoo
              region: us-east-1
              keypair: mykeypair
    

    有趣的是,我的抱怨是它只标记实例而不标记现场请求,这与您的问题相反。

    • 1

相关问题

  • 权限被拒绝(公钥)。从本地 Ubuntu 到 Amazon EC2 服务器的 SSH

  • 管理员如何管理他们的 EC2 EBS 和快照?

  • 云有多大?[关闭]

  • EC2 映像启动

  • 如何将安全组添加到正在运行的 EC2 实例?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve