2012-03-30 95 views
3

我希望在通过PHP发出请求时能够包含标签。当创建点播情况下,您可以创建实例,然后使用它的实例发出以下内容:AWS EC2竞价型实例PHP在添加标签请求时添加标签

​​

然而,发出即期竞价时,该实例不会马上开始,所以你必须创建一个观察者标签来处理这个......除非您可以在请求阶段添加标签。我还没有找到任何文件来显示它会如何或看起来像它是否存在?

回答

3

答案是,只有实际创建实例后才能分配标记。为了标记这一点,我使用了一个监听器守护进程来观察新实例并在启动后标记它们。

+0

你是如何创建侦听器守护进程的? – 2013-08-02 23:59:29

1

对于未来的人们寻找一个解决这个没有听众:

你也可以拥有实例标签本身一旦其创建的,通过在用户数据的标签请求CLI。这在EC2实例上作为启动时的脚本在许多EC2默认AMI上执行(默认情况下也安装了CLI)。

要做到这一点(使用股票图像):

  1. 创建权限在EC2上创建标签的IAM 作用
  2. 在您的现场实例请求中,指定角色。
  3. 在你的现场实例请求用户数据中,包含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 
    

您可能需要的eNode上述用户数据为base64,如果你使用的CLI或SDK进行现场请求。 AWS Web控制台可以为您完成此操作,否则您可以按如下方式传递用户数据:

user="$(cat /scripts/userdata.sh | base64 -w 0)" 

aws ec2 request-spot-instances \"UserData\": \"$user\",\"InstanceType\": \"m1.small\"}" 

就是这样!