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

Raj*_*dar 4 amazon-ec2 autoscaling

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

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

#!/bin/bash
cd
touch configure
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*sek 5

你所遵循的方向是正确的。问题出在您的用户数据脚本上。

问题一:

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

问题2:

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

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


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

#!/bin/bash
cd /root
touch configure
Run Code Online (Sandbox Code Playgroud)

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

希望能帮助到你!