欢迎来到第五天的数字海洋的12天活动!昨天,您设置了生日提醒服务以在数字海洋函数上运行,这意味着它现在是无服务器和云就绪的。🎉 今天,您将更进一步,通过自动化使其按照自己的计划运行——无需手动输入。
在本指南结束时,您的服务(或任何其他您正在处理的功能)将每天在设定的时间自动运行。这意味着不再需要记得自己触发——它只需正常工作。
为什么要自动化?
将功能部署到云端是昨天的一大胜利,但手动运行它却违背了自动化的目的。今天的重点是调度服务自动运行——像钟表一样——这样您就可以设置它并忘记它。数字海洋函数内置了使用触发器的调度功能,正是为了这个目的,您有两种方式进行设置。
🚀 你将学到的内容
到今天结束时,你将知道如何:
- 设置一个每日触发器,自动运行你的函数。
- 学习两种方法来实现这一点——通过 DigitalOcean 控制面板或使用
doctl
CLI 和project.yml
。 - 测试设置以确保它正常工作。
🛠 你需要的工具
在开始之前,请确保你拥有以下内容:
- 已经在 DigitalOcean 部署的函数(例如,来自 第 4 天:构建生日提醒服务 的生日提醒服务),以便通过触发器进行自动化。
- 如果使用
doctl
CLI,您需要您的函数的project.yml
文件。您可以查看 第4天 的说明,了解如何安装和设置doctl
CLI,以及创建project.yml
文件。
🧑🍳 第5天食谱:使用触发器自动化函数
步骤1:为您的函数设置触发器
DigitalOcean 为您提供 两种选择 来设置触发器:
- 选项1: 使用控制面板进行快速简便的设置。
- 选项2: 使用
doctl
CLI 进行更强大和程序化的控制。
警告: 请记住,如果您使用 CLI 重新部署功能,在 控制面板 中创建的触发器将会丢失。如果您经常需要重新部署,请使用 选项 2 将触发器直接添加到 project.yml
文件中。
选项 1:使用控制面板创建触发器
通过 DigitalOcean 控制面板设置触发器是最简单的方法。这很快,不需要任何设置,适合简单的一次性配置。
- 在 DigitalOcean 控制面板上导航至 主函数页面。
- 找到您的函数(例如,
reminders/birthdays
)并点击 触发器 选项卡。
- 点击 创建触发器,为您的触发器添加一个 名称。这个名称可以是任何描述性的,例如
daily-birthday-trigger
。名称只能包含字母数字字符、短横线和句点。 - 添加一个 cron 表达式 来设置调度。例如,
0 9 * * *
意味着该功能将在每天上午 9:00 运行。
注意: 如果您不确定 cron 是如何工作的?查看 crontab.guru 获取便捷指南。
- 保存 触发器。
一旦您创建了触发器,测试一下以确保一切按预期工作是个好主意。请跳转到下面的 测试自动化 部分了解如何操作。
警告: 虽然仪表板简单且有效,但如果您使用CLI重新部署该功能,这里创建的任何触发器将会被 覆盖或删除。对于频繁更新或程序化部署,请跳到 选项2。
选项2:使用 doctl
CLI 与 project.yml
您还可以通过直接将触发器添加到您的 project.yml 文件来创建触发器。这种方法对于频繁的重新部署更可靠,因为它确保您的触发器始终包含在功能的配置中。与之前描述的控制面板选项不同,这种方法可以防止触发器在重新部署期间被覆盖或丢失。
以下是您可以设置它的步骤:
-
打开你的
project.yml
文件,来自 第4天:使用 DigitalOcean 函数部署生日通知。它可能看起来像这样: -
在你的函数配置中添加一个
triggers
部分以定义计划: -
最终更新的
project.yml
文件:这告诉 DigitalOcean 每天上午 9:00 运行
birthdays
函数。-
triggers
部分: 定义触发器的名称、类型和时间表。您可以为触发器命名为任何描述性的名称,例如daily-birthday-trigger
。 -
cron
: 指定函数每天在 UTC 时间运行的时间。例如,cron 表达式0 9 * * *
会将函数安排在每天上午 9:00 运行。
-
-
保存文件并通过从包含
my-birthday-reminder-service
文件夹的目录运行以下命令来部署它:重要提示: 确保从父目录运行命令,而不是在
my-birthday-reminder-service
文件夹内。错误的位置运行可能会导致类似以下的错误: -
一旦部署成功,您将看到类似于以下的确认消息:
-
前往您的仪表板,验证触发器是否已在函数部分创建。
专业提示:要测试您的触发器,请暂时将 cron 表达式设置为几分钟后(例如,如果现在是上午 9:25,则设置为28 9 * * *
)。确认其有效后,将其更新回您计划的时间表并重新部署。
步骤 2:测试自动化
让我们测试您的触发器,以确保它们正常工作。您可以暂时将它们设置为在几分钟后运行,而不是等待它们按常规时间触发。以下是操作方法:
-
将您的触发器的 cron 表达式设置为当前时间(以UTC为准)之后的几分钟。例如,如果现在是 UTC 时间 9:25 AM,请将 cron 表达式设置为
28 9 * * *
,这样函数将在 UTC 时间 9:28 AM 运行。注意:不确定如何将您的当地时间转换为 UTC?像时区转换器这样的工具可以提供帮助。
-
保存更新后的触发器(如果使用控制面板)或重新部署您更新后的
project.yml
文件(如果使用 CLI): -
等待触发器执行,然后检查 激活 日志以确认函数成功运行:
注意:激活日志记录了关于您的功能何时执行的详细信息,包括是否成功运行或遇到错误。它们是验证触发器是否在计划时间触发的一个有用方法。
此命令将返回您功能最近一次激活的详细信息。例如,您可能会看到类似这样的内容:
这确认了触发器已触发,功能已成功激活!🎉
注意:一旦您确认一切正常,请将cron表达式更新为您所需的计划(例如,0 9 * * *
表示每天UTC时间9:00)并保存或重新部署。
关于日志的简要说明
虽然激活日志
命令是检查最近执行的一个好方法,但有时您需要更详细的日志来调试或调查功能问题。DigitalOcean还提供将这些日志转发到外部日志服务的选项,使您随着时间的推移更容易监控和排除应用程序故障。
在第六天,你将学习如何直接查看日志,有效解释它们,并设置将日志转发到外部服务,如Logtail或Papertrail。这些工具将帮助你轻松掌握你功能的性能。
🎁 总结
今天你完成了以下内容:
- 你自动化了你的生日提醒服务(或其他任何功能),使其每天运行。
- 你学习了两种设置触发器的方法——通过控制面板和使用
doctl
CLI。 - 你测试了你的设置,以确保其按预期工作。
以下是本系列的前几个教程:
接下来: 现在您的服务独立运行,下一步是有效地监控它。在下一个教程中,您将学习如何查看函数日志并将其转发到外部服务,以简化跟踪和故障排除。到时见!
Source:
https://www.digitalocean.com/community/tutorials/automating-birthday-reminders-with-triggers