我希望在通过PHP进行点请求时能够包含一个标记。当创建按需实例时,您可以创建实例,然后使用它的实例发出以下命令:
$ec2->create_tags($instance_id, array(
array('Key' => 'Name', 'Value' => 'MyTestMachine'),
));
然而,当发布现货出价时,实例不会立即启动,因此您必须创建一个观察者标签来处理此问题。。。除非您可以在请求阶段添加标记。我还没有找到任何文件来显示这会是什么样子,它存在吗?
答案是,在实际创建实例之前,不能分配标记。为了对此进行标记,我使用了一个监听器守护进程来监视新实例,并在它们启动后对其进行标记。
对于未来的人们来说,寻找一个没有监听器的解决方案:
您还可以在创建实例标记后,通过在用户数据中包含对CLI的标记请求,使实例标记本身。这在EC2实例上作为许多EC2默认AMI(默认情况下也安装了CLI)的启动脚本执行。
要做到这一点(使用库存图像):
- 创建一个IAM角色,该角色具有在EC2上创建标记的权限
- 在您的spot实例请求中,指定角色
-
在您的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网络控制台可以为您做到这一点。
就是这样!