如何解决如何通过向 Lambda 函数发送 API 请求来安排在特定时间启动 EC2 实例?
我想通过向 AWS Lambda 函数发送 API 请求来安排在特定时间启动/停止 EC2 实例。我看了看自己,发现了 this 篇文章。虽然它解释了我们如何使用 cloudformation 实例调度程序模板使用 Lambda 定期调度 EC2 实例,但这不是我想做的。
我想创建一个 python 脚本,它会发送一个 API 请求来触发一个 lambda 函数。 API 请求将包含 EC2 实例 ID、我希望实例启动/停止的特定日期和时间等参数。Lambda 函数应记录请求并在特定时间自动启动/停止该 EC2 实例请求中提到。
在 AWS 中有没有办法做到这一点?
解决方法
您必须为此创建自定义解决方案。此解决方案的一部分可以是EventBridge (EB) 的一次性 cron 规则,例如
0 2 16 6 ? 2021
上述 EB 规则仅在 Wed,16 Jun 2021 02:00:00 GMT
上触发一次。
因此,您的 lambda 函数必须为其想要在特定时间停止/启动的每个实例创建这样的规则。该规则在 触发 时会调用其他 lambda 函数来执行实际的停止/启动操作。 lambda 还必须删除规则以清理您的 EB。规则是一次性的,触发后应该“自毁”。
,python 脚本,它将发送 API 请求以触发 lambda 函数。
你不必这样做。相反,只需专注于编写一个 lambda 函数,它将启动或停止您的实例。
您可以使用 cloudwatch events 或更新的服务 AWS EventBridge。官方docs on eventbridge 我写了一篇关于使用 eventbridge 调度 lambda 的博客,you can refer that
这应该是 lambda 函数的关键点:-
- 假设您在下午 5 点调用 lambda 以启动实例,并在下午 6 点再次调用 lambda 以停止实例
- 因为它的单个 lambda 函数使用来自 python 的日期时间模块,如果它的下午 5 点然后开始实例使用条件逻辑,如果它的下午 6 点使用停止实例逻辑
注意:-evenbridge 以格林威治标准时间触发事件,印度标准时间比格林威治标准时间早 5 小时 30 分钟,只是为了让您知道。
此外,当您想要安排函数事件桥接器时,您可以以固定速率(例如每 2 小时)进行安排,或者如果您想要细粒度,请使用玉米表达式。这是我用来验证我的玉米表达式的网站 crontab.guru
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。