AWS EC2 实例上的触发事件 stop/terminate
Trigger event on AWS EC2 instance stop/terminate
当 EC2 实例 stopped/terminated 时,是否有某种方法可以触发事件(例如 运行 将一些日志推送到 S3 的脚本)?
我研究过使用 /usr/lib/systemd/system 中的服务触发脚本,但我还没有成功。我听说实例上的网络功能可以在触发服务之前关闭,如果为真,这可能就是脚本未正确执行的原因。
您可以使用 CloudWatch 触发事件,例如将特定事件的日志推送到 S3...在此处了解更多信息:https://aws.amazon.com/cloudwatch/
所以答案并不是真正特定于 AWS,但它现在对我有用(在 EC2 实例停止和终止时测试)。
- 我创建了一个 system.d 服务文件:
/usr/lib/systemd/system/my_shutdown.服务
[Unit]
Description=my_shutdown Service
Before=shutdown.target reboot.target halt.target
Requires=network-online.target network.target
[Service]
KillMode=none
ExecStart=/bin/true
ExecStop=/path/to/my_script.sh
RemainAfterExit=yes
Type=oneshot
[Install]
WantedBy=multi-user.target
- 已将此服务添加到 multi-user.target:
systemctl enable my_shutdown.service
或者您可以手动创建符号链接:
ln -s /usr/lib/systemd/system/my_shutdown.service /etc/systemd/system/multi-user.target.wants/my_shutdown.service
- 启动服务并由 stopping/terminating 实例测试。
systemctl start my_shutdown.service
我的理解:
- 描述:对我们服务的描述。
- 之前:我们希望我们的服务在这些目标启动之前停止。
- 要求:我们的服务要求网络功能可用。在我们的服务 starts/stops 之前,不得停止这些目标。
- 杀戮模式:none;不要杀死我们的进程。
- 执行开始:/bin/true;一个除了 returns 之外什么都不做的命令成功了。 运行服务什么时候开始。
- ExecStop:运行 的脚本。 运行服务什么时候停止。
- RemainAfterExit:认为我们的服务处于活动状态,即使它的所有进程都已退出。
- 类型:oneshot;预计进程必须在 systemd 启动后续单元之前退出。
- WantedBy:我们要添加服务的目标。
参考文献:
当 EC2 实例 stopped/terminated 时,是否有某种方法可以触发事件(例如 运行 将一些日志推送到 S3 的脚本)?
我研究过使用 /usr/lib/systemd/system 中的服务触发脚本,但我还没有成功。我听说实例上的网络功能可以在触发服务之前关闭,如果为真,这可能就是脚本未正确执行的原因。
您可以使用 CloudWatch 触发事件,例如将特定事件的日志推送到 S3...在此处了解更多信息:https://aws.amazon.com/cloudwatch/
所以答案并不是真正特定于 AWS,但它现在对我有用(在 EC2 实例停止和终止时测试)。
- 我创建了一个 system.d 服务文件:
/usr/lib/systemd/system/my_shutdown.服务
[Unit]
Description=my_shutdown Service
Before=shutdown.target reboot.target halt.target
Requires=network-online.target network.target
[Service]
KillMode=none
ExecStart=/bin/true
ExecStop=/path/to/my_script.sh
RemainAfterExit=yes
Type=oneshot
[Install]
WantedBy=multi-user.target
- 已将此服务添加到 multi-user.target:
systemctl enable my_shutdown.service
或者您可以手动创建符号链接:
ln -s /usr/lib/systemd/system/my_shutdown.service /etc/systemd/system/multi-user.target.wants/my_shutdown.service
- 启动服务并由 stopping/terminating 实例测试。
systemctl start my_shutdown.service
我的理解:
- 描述:对我们服务的描述。
- 之前:我们希望我们的服务在这些目标启动之前停止。
- 要求:我们的服务要求网络功能可用。在我们的服务 starts/stops 之前,不得停止这些目标。
- 杀戮模式:none;不要杀死我们的进程。
- 执行开始:/bin/true;一个除了 returns 之外什么都不做的命令成功了。 运行服务什么时候开始。
- ExecStop:运行 的脚本。 运行服务什么时候停止。
- RemainAfterExit:认为我们的服务处于活动状态,即使它的所有进程都已退出。
- 类型:oneshot;预计进程必须在 systemd 启动后续单元之前退出。
- WantedBy:我们要添加服务的目标。
参考文献: