AWS EC2 Spot Instance PHP在发出Spot请求时添加标记


AWS EC2 Spot Instance PHP add tag when making spot request

我希望在通过PHP进行点请求时能够包含一个标记。当创建按需实例时,您可以创建实例,然后使用它的实例发出以下命令:

$ec2->create_tags($instance_id, array(
      array('Key' => 'Name', 'Value' => 'MyTestMachine'),
    ));

然而,当发布现货出价时,实例不会立即启动,因此您必须创建一个观察者标签来处理此问题。。。除非您可以在请求阶段添加标记。我还没有找到任何文件来显示这会是什么样子,它存在吗?

答案是,在实际创建实例之前,不能分配标记。为了对此进行标记,我使用了一个监听器守护进程来监视新实例,并在它们启动后对其进行标记。

对于未来的人们来说,寻找一个没有监听器的解决方案:

您还可以在创建实例标记后,通过在用户数据中包含对CLI的标记请求,使实例标记本身。这在EC2实例上作为许多EC2默认AMI(默认情况下也安装了CLI)的启动脚本执行。

要做到这一点(使用库存图像):

  1. 创建一个IAM角色,该角色具有在EC2上创建标记的权限
  2. 在您的spot实例请求中,指定角色
  3. 在您的spot实例请求用户数据中,包括create tags CLI命令(对于Linux,如果您使用的是windows,您也可以使用powershell执行等效操作)。您将看到有一个内联命令从EC2元数据服务获取实例ID:

    #!/bin/bash
    aws ec2 create-tags --resources `wget -q -O - http://169.254.169.254/latest/meta-data/instance-id` --tags Key=somekey1,Value=somevalue1 Key=somekey2,Value=somevalue2
    

如果您使用CLI或SDK进行spot请求,则可能需要将上面的用户数据编码为base64。AWS网络控制台可以为您做到这一点。

就是这样!