AWS EC2竞价型实例PHP在发出现场请求时添加标记

时间:2012-03-30 15:43:40

标签: php amazon-web-services tags amazon-ec2

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

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

但是,在发布现货出价时,实例不会立即启动,因此您必须创建一个观察者标记来处理此问题...除非您可以在请求阶段添加标记。我还没有找到任何文件来说明这种情况会是什么样子,或者它是什么样的,是否存在?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

对于未来没有听众寻求解决方案的人来说:

通过在用户数据中向CLI添加标记请求,您也可以在创建实例标记后使用它。这在EC2实例上作为许多EC2默认AMI(默认情况下安装了CLI)的引导脚本执行。

为此(使用股票图像):

  1. 创建具有在EC2上创建标记的权限的IAM 角色
  2. 在您的竞价型实例请求中,指定角色。
  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
    
  4. 如果您使用CLI或SDK发出现场请求,则可能需要将上述用户数据作为base64进行输入。 AWS Web控制台可以为您执行此操作。

    那就是它!