微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过向 Lambda 函数发送 API 请求来安排在特定时间启动 EC2 实例?

如何解决如何通过向 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 函数的关键点:-

  1. 假设您在下午 5 点调用 lambda 以启动实例,并在下午 6 点再次调用 lambda 以停止实例
  2. 因为它的单个 lambda 函数使用来自 python 的日期时间模块,如果它的下午 5 点然后开始实例使用条件逻辑,如果它的下午 6 点使用停止实例逻辑

注意:-evenbridge 以格林威治标准时间触发事件,印度标准时间比格林威治标准时间早 5 小时 30 分钟,只是为了让您知道。

此外,当您想要安排函数事件桥接器时,您可以以固定速率(例如每 2 小时)进行安排,或者如果您想要细粒度,请使用玉米表达式。这是我用来验证我的玉米表达式的网站 crontab.guru

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。