2017-05-11 266 views
2

我想创建一些EC2实例,但是在它开始之前,使用为此实例生成的实例ID做一些事情。在aws ec2 run-instances或另一个aws ec2命令中是否有任何选项创建AWS EC2实例而不启动它?解决方法是生成UUID以标记此实例并关联此UUID而不是实例ID,或者在运行实例后立即停止,但我更喜欢某种更智能的解决方案。无需启动创建EC2实例

+0

你是什么意思由“做一些东西”?在实例完全运行之前采取行动的正确方式是为实例提供一些[userdata](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)。如果你真的希望你的实例保持关闭状态,并开始使用正确的数据,你可以在另一个实例上准备一个'EBS'卷,并将它连接到一个引导,但我不会建议,userdatas是要走的路。 – iMil

+0

@iMil通过“做一些事情”我的意思是创建一些将由实例使用的资源。如果它们不存在于/ etc/rc.local中,我可以设置它们,但是这会产生更多条件代码。我知道用户数据是如何工作的,但我无法看到它如何帮助我在实例启动现有事件但在其开始工作之前对其执行一些操作。我希望能够重置实例并不再次创建资源。 – pt12lol

+0

实际上你要做的就是userdatas的用途,它们在'rc.local'之前执行,事实上在你的Linux系统进入多用户阶段之前。另一种选择是创建一个AMI(例如使用[packer](https://www.packer.io/)),以设置实例创建时需要的内容。顺便说一下,打包机开始一个实例,以建立AMI :) – iMil

回答

3

所以,这正是userdata是 - 当你创建一个实例它会自动将未决移动到运行状态

文档。

亚马逊的文档:

当您在Amazon EC2上启动一个实例,你有用户数据传递到可以使用的实例后执行常见自动配置任务,甚至可以运行的脚本实例的选项开始。您可以将两种类型的用户数据传递给Amazon EC2:shell脚本和cloud-init指令。您还可以将这些数据作为纯文本,文件(这对于通过命令行工具启动实例很有用)或base64编码文本(用于API调用)传递到启动向导中。

用户DATAS可以传递到实例在创建时,例如使用--user-data国旗在aws CLI或在AWS控制台中使用用户数据文本框。

+0

这是最适用于该问题的解决方案。 _ – kosa