歡迎來到第5天的12天DigitalOcean!昨天,您設置了您的生日提醒服務以在DigitalOcean Functions上運行,這意味著它現在是無伺服器且雲端就緒的。🎉 今天,您將進一步將其自動化以按其自己的計劃運行—無需手動輸入。
通過本指南的最後,您的服務(或任何其他您正在工作的功能)將每天在設定的時間自動運行。這意味著不再需要記住自己觸發它—它就可以運行。
為什麼自動化?
將您的功能部署到雲端昨天是一大勝利,但手動運行它違背了自動化的目的。今天的重點是將服務安排自動運行—如時鐘般精準—這樣您就可以設定它並忘記它。DigitalOcean Functions具有內建的觸發器的排程,用於此確切目的,您有兩種設置它的方式。
🚀 你將學到什麼
在今天結束前,你將知道如何:
- 設置每日觸發器自動運行你的函數。
- 學習兩種方法來實現這一點——通過 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 Functions 部署生日通知。它可能看起來像這樣: -
在你的功能配置中添加一個
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,設定cron表達式為
28 9 * * *
,這樣該功能將在UTC上午9:28運行。注意:不確定如何將本地時間轉換為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