亚马逊ec2用户数据,它是如何工作的?

我们正在启动实例,并访问我们放置的用户数据。 但有没有人了解这个行动的内部(从亚马逊方面)? 当我们传递用户数据时,传输给VM的数据是什么时候(这是一个Xen特性),存储在哪里?

我首先想到,它被设置为USER_DATA env var,但是我们也可以将它作为文件传递。 那个文件在哪里存储? 所有实例是通用还是取决于AMI?

这本身不是问题,只是想知道亚马逊如何做到这一点。

用户数据截图: http : //d.pr/GZlY

用户数据可以通过此URL的简单HTTP请求提供给实例:

http://169.254.169.254/latest/user-data 

Amazon EC2不直接将此用户数据放在实例上,尽pipe许多AMI都有指示实例自动下载和处理用户数据的代码。

也可以看看:

AWS userdata是您可以在启动时提供给实例的一组命令/数据。 例如,如果您正在启动一个ec2实例并希望在新启动的ec2上安装docker,则可以在aws ec2 config页面的userdata字段中提供一组bash命令。

用例

  • 自动部署

  • 编排新启动的实例

  • 与厨师一起启动新推出的实例

  • AWS Autoscaling

这里有一个很好的解释AWS用户数据video教程的例子

每个人都能理解的简单例子:如果您想在机器启动时创build文件/tmp/testfile.txt ,您可以简单地在User data字段中添加这两行。

 #!/bin/bash touch /tmp/testfile.txt 

记得在你的命令之前把#!/bin/bash放在最上面。

运行实例(Linux AMI)时,可以在/var/lib/cloud/instance/user-data.txt看到User data字段内容