目前很多服務都有提供API Webhook的功能,當事件發生時,就可以把事件的資訊送到我們指定的目的地 。
例如:我們可指定Git在commit時,通知CICD工具做自動測試 / 部署,以及LineBot在收到聊天訊息時,把訊息內容送到我們指定的API Endpoint (也就是API的網址),做進一步的程式處理。
而當測試這些Webhook功能,或者拿來開發最小功能產品(MVP)時,雲端Serverless服務是一個方便快速的方式 ,例如AWS Lambda。
AWS Lambda
需注意的是,剛開始接觸AWS服務架構時,點進去的架構圖有一個”Add Trigger”的選項,容易讓人誤以為API Gateway和Lambda這兩個服務是綁在一起的:
Function URL
但其實Lambda自身就有提供Function URL的功能, 不必加上API Gateway這個trigger,也能供外部以API Calling的方式,來把需要的資訊讓Lambda Function接收到。
API Gateway的限制
相較於Function URL API Gateway在被外界存取時,一定要透過IAM(AWS的身份驗證),較不利於專案初期的測試,例如只是想簡單的測試Linbot發出的Webhooke Event
要讓Lambda function用非IAM驗證 / 無驗證的方式開放給外界使用時,可以設定Function URL來快速的測試Webhook。
設定Lambda Function
- 點擊Configuration 分頁, 在左側欄的Function URL設定
測試
在Line developer platform 點擊Verify去驗證API
使用API Gateway Endpoint測試Linebot webhook
會出現403 Forbidden
使用Lambda Function
如上圖,使用Lambda Function產生的URL就可以成功被Verify了。