AWS 启动配置未获取用户数据

AWS Launch Configuration not picking up user data

我们正在尝试在 AWS 中构建一个配置有弹性负载均衡器(假设为 ELB)的自动缩放组(假设为 AS)。自动缩放组本身配置有启动配置(比如说 LC)。据我从 AWS 文档中了解到,在启动配置的用户数据部分按原样粘贴脚本将 运行 每个实例的脚本都启动到与该自动缩放关联的自动缩放组中组.

例如,将此粘贴到用户数据中会在 t2 micro ubuntu 图像的主文件夹中提供一个名为 configure 的文件:

#!/bin/bash
cd
touch configure

我们的最终目标是: 增加 Auto Scaling 组中的实例,它们使用我们的启动脚本启动,并且这个新实例被添加到标记有 Auto Scaling 组的负载均衡器后面。但是脚本没有在实例启动时执行。我的问题是: 1.我在这里遗漏了什么吗? 2. 在 Auto Scaling 组中启动任何新实例时,我应该如何处理 运行 我们的启动脚本? 3. 有什么方法可以验证用户数据是否真的被发布时获取了?

你的方向是对的。你的用户数据脚本有问题。

问题一:

您必须记住,用户数据将作为用户 root 而不是 ubuntu 执行。因此,如果您的脚本运行良好,您会在 /root/configure 中找到您的文件,而不是在 /home/ubuntu/configure.

问题二:

您的脚本实际上正在执行,但它不正确并且在 cd 命令中失败,因此未创建文件。

cd 没有给定任何目录的内置命令将尝试执行 cd $HOME,但是 $HOME 在 cloud-init 运行 期间未设置,因此您必须在这里明确。


将您的脚本更改为以下,它会起作用:

#!/bin/bash
cd /root
touch configure

您还可以通过检查 /var/log/cloud-init.log 日志文件来调试用户数据脚本的问题,特别是检查其中的错误:grep -i error /var/log/cloud-init.log

希望对您有所帮助!