在 AWS 的 API gateway 上就有一個項目(Authorizer
)是支援 Cognito 以及客制認證的方法,好處就是在進我們寫的 API 之前有個可以做身份確認的 Lambda Function 幫我們好前處理,而本篇則會介紹如何在 Serverless framework 上設定 API gateway 的 Authorizer 以及成功讓 API 回應,串接 Cognito 做使用部分就留給之後吧!
擁有 Authorizer 的一個 Serverless 服務會長這樣:
User Request - [Authorizer] - API - Response user
好處除了前言所提到的前處理外,還有如果設定是 Edge
模式 (不是透過 region
從網路層傳) 的話其實在認證完後傳到 API 時速度是很快的。
以下就開始好好的介紹它 😆
如果在這邊設定覺得不知道在哪邊的話可以參考 - 純手動用法官方教學
中文的話左邊名為授權方
,英文則是Authorizer
原始如果串接 python WSGI 的話設定檔應該會長得如下:
functions:
api:
handler: wsgi_handler.handler
events:
- http: ANY /
- http: ANY {proxy+}
設定 Authorizer Lambda function,先在跟 api
同層加上 Authorizer
Lambda,指定 handler 為 handler 資料夾
下的 authorizer.py
的 auth_handler
function,並且設定 cors
為 true,避免呼叫 api 時被 AWS 擋下來無法使用。
接著在把 events
裡的兩個事件加上 authorizer
的 Function,名為 ResourceAuthorizer
,改編過後入下:
functions:
api:
handler: wsgi_handler.handler
events:
- http:
path: /
method: ANY
authorizer: ResourceAuthorizer
- http:
path: /{proxy+}
method: ANY
authorizer: ResourceAuthorizer
ResourceAuthorizer:
handler: handler/authorizer.auth_handler
cors: true
#[object object] #serverless #function