Amazon web services 使用cloud init时,是否可以同时指定启动脚本和可从实例内部查询的数据blob?

Amazon web services 使用cloud init时,是否可以同时指定启动脚本和可从实例内部查询的数据blob?,amazon-web-services,amazon-ec2,user-data,cloud-init,Amazon Web Services,Amazon Ec2,User Data,Cloud Init,我有一些当前实例通过用户数据字符串传递json blob来获取一些数据。我还想通过用户数据传递一个在启动时运行的脚本。有没有办法做到这两件事?我看过云配置,但设置任意值似乎不是选项之一。好吧,cloudinit。考虑到这一点,您可以将引导脚本作为一个部分,然后是自定义mime部分。请注意,您需要编写一个python处理程序,告诉cloudinit如何处理该部分(很可能将其移动到应用程序需要的任何位置)。此处理程序代码在handlers目录中的结尾为。您正确地知道,在EC2上,只能指定一个“用户数

我有一些当前实例通过用户数据字符串传递json blob来获取一些数据。我还想通过用户数据传递一个在启动时运行的脚本。有没有办法做到这两件事?我看过云配置,但设置任意值似乎不是选项之一。

好吧,
cloudinit
。考虑到这一点,您可以将引导脚本作为一个部分,然后是自定义mime部分。请注意,您需要编写一个python处理程序,告诉
cloudinit
如何处理该部分(很可能将其移动到应用程序需要的任何位置)。此处理程序代码在handlers目录中的结尾为。

您正确地知道,在EC2上,只能指定一个“用户数据”blob。Cloud init通过允许blob成为某种“归档”格式来解决这一限制

  • 云配置档案
不幸的是,现在还没有记录云配置归档,但中有一个例子。它应该是yaml,并以“#云配置档案”开始。请注意,yaml是json的严格超集,因此任何可以转储json的东西都可以用来生成此yaml


这两种格式都需要对所有使用者进行更改,以“共享”用户数据的共享资源。cloud init将忽略它不理解的mime类型,并处理它理解的mime类型。您必须修改生成和使用用户数据的另一个应用程序才能执行相同的操作。

UserData是按顺序执行的,执行一个和另一个有问题吗?您可以从S3加载脚本,或者直接在UserData中指定它。似乎没有一种方法可以传递多个用户数据字符串。您能更具体地说明您的建议吗?您现在正在使用cloud init传递json数据吗?