【发布时间】:2022-01-13 23:09:58
【问题描述】:
作为我的 CloudFormation 模板的一部分,我利用 UserData 运行一系列命令来安装我的应用程序。我想知道是否有办法在运行 UserData 时响应退出错误,以便 EC2 实例终止并且不会添加到我的 Auto Scaling 组中。
我研究了cfn-init 和cfn-signal,我认为它们可以提供此功能,但通过示例我只看到它们与元数据configSets 结合使用。
这就是我的AWS::AutoScaling::LaunchConfiguration 下的UserData 的样子:
"WebServerLaunchConfig": {
"Type": "AWS::AutoScaling::LaunchConfiguration",
"Metadata": ...,
"Properties": {
...
"UserData": {"Fn::Base64": {
"Fn::Join": [
"\n",
[
"#!/bin/bash -xe",
"\n",
"cd /var/www"
"git clone myrepo html",
"cd /var/www/html",
"/usr/bin/aws s3 cp s3://my-bucket/env.development .env",
... // several more commands, etc.
]
]}
}
}
}
概括地说,我的 CF 结构如下所示:
Load Balancer -> Auto Scaling Group for EC2 instances (desired 1, min 1, max 3)
我的 ASG 中有动态扩展策略,可根据负载进行扩展和缩减。因此,假设触发了扩大规模政策。将创建一个新的 EC2 实例并将其放入池中。如果由于某种原因我的堆栈的UserData 部分出现故障,EC2 实例仍将成功创建。如果UserData 的退出代码错误,我希望触发某种警报,以便可以终止实例并通知我。
这可能吗?
【问题讨论】:
标签: amazon-web-services amazon-ec2 amazon-cloudformation