iT邦幫忙

2025 iThome 鐵人賽

DAY 7
0
Build on AWS

亞馬遜熱帶雨林生存日記系列 第 7

Day 7: 設定 AWS SQS 為 Lambda 的 trigger

  • 分享至 

  • xImage
  •  

當我們使用 AWS 設計 serverless 架構時,可以使用 AWS SQS 搭配 Lambda ,確保 message 被保存在 queue 裡面,確實被程式執行,在執行失敗後也能夠被 retry ,接下來會介紹如何在 Lambda 設定 SQS 當 trigger 。

設定 Lambda 權限

要使用 SQS 當 trigger ,綁在 Lambda 上的 role 必須要有執行 SQS message 的權限,所以在 PermissionsExecution role 找到 role 之後,就可以進入 role 的權限設定頁面加權限。

加上 AWSLambdaSQSQueueExecutionRole 這個 policy ,就可以加上 SQS 當 trigger 和取得 SQS 的 message 。

如何在Lambda加上SQS?

點進其中一個 Lambda 之後,可以看到 Add trigger ,按下去就可以開始新增 trigger 。

進到加 trigger 頁面,選擇使用 SQS 當 trigger ,並指定要當 trigger 的 queue 。

Batch size & Batch window

設定 trigger 的時候,可以設定 Batch size 和 Batch window , Batch size 是指 Lambda 最多一次可以處理多少個 SQS 的 message , Batch window 是指 Lambda 最多可以等待多久,再一次處理該時間區間內的 message 。

以下面這張圖為例,共有 40 個 message ,被切分為 5 個 batch ,每個 batch 的 message 數量,不能超過上面圖片設定的 20 ,每個 batch 涵蓋的時間區段,不能超過 20 秒,這些 message 被處理的情形大概會像下面這張圖。

實際上用 SQS 的 API 送 40 個 message ,並在 lambda 印出 log ,可以看到每次 batch 處理的 message 數量都不同,但都沒有超過設定的 Batch size ,時間也沒有超過 20 秒。

Reference

How Lambda processes records from stream and queue-based event sources


上一篇
Day 6: AWS EventBridge Scheduler
下一篇
Day 8: AWS DynamoDB 主要功能與常見使用情境
系列文
亞馬遜熱帶雨林生存日記9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言