AWS CloudFormation删除堆栈时运行脚本

3
在AWS CloudFormation中,我知道可以在我的EC2::Instance中使用UserData来运行一些代码。是否有类似于UserData的功能,但是在DeleteStack时运行?我找到了DeletionPolicy,但更像是“在删除时保留或实际删除该做什么”,而不是一个更开放的脚本空间。
我唯一看到可能可行的是cfn-hup,但我不知道是否值得进一步探索。

你是否正在使用自动扩展组?那么请看一下自动扩展钩子。 - undefined
@SudharsanSivasankaran 还没有开始使用自动扩展组,目前还在稳定早期的部分,然后再转向更大的架构。现在只是一个小型堆栈,暂时没有时间/需要进行自动扩展(至少目前是这样)。 - undefined
1
好的,据我所知,目前没有这样的设施。但在Linux中,你可以简单地将你的脚本放置在/usr/lib/systemd/system-shutdown/目录下,当实例关闭时它会被触发。 https://www.freedesktop.org/software/systemd/man/systemd-halt.service.html - undefined
1个回答

0
我最近遇到了这个问题,正如之前的评论中提到的,云形成中没有支持,将脚本放在/usr/lib/systemd/system-shutdown/中,如Sudharsan Sivasankaran建议的那样对我没有起作用,但我找到了解决办法,涉及创建一个Linux服务,以下是步骤:
这是一个解决方法,对我来说完全有效: 让我们将在关机之前运行的脚本称为the_script.sh
  1. 将脚本移动到/usr/lib/systemd/system-shutdown/(这不是必需的,您可以将脚本放在任何地方)
  2. 使脚本可执行:chmod +x /usr/lib/systemd/system-shutdown/the_script.sh
  3. 在这里创建一个服务:/etc/systemd/system/before-shutdown.service
[Unit]
Description=Execute delete awake user script

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/usr/lib/systemd/system-shutdown/the_script.sh

[Install]
WantedBy=multi-user.target

重新加载systemctl以使服务生效:systemctl daemon-reload
启用服务:systemctl enable before-shutdown.service 启动服务:systemctl start before-shutdown.service 您可以将上述步骤添加到用户数据中,以便自动运行,并且您的脚本the_scrip.sh可以成为源代码的一部分,before-shutdown.service文件也可以。
以下资源对我有所帮助:Link1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接