[AWS]Serverless API(四)
Published in
Aug 22, 2023
Cognito註冊連動lambda function
這次記錄一下Cognito連動lambda的步驟,這個當初是想要達成使用cognito註冊結束後順帶在後端資料庫中建立使用者資訊,這樣之後需要使用者資訊時可以直接從資料庫讀取
Lambda
這邊新增一個新的function,專門給Cognito串接,程式碼範例如下
import boto3
tableName = "user"
userdb = boto3.resource('dynamodb').Table(tableName)
def lambda_handler(event, context):
user = event.get('request').get('userAttributes')
req = {
'id': user.get('sub'),
'name': user.get('name'),
'email': user.get('email')
}
userdb.put_item(Item=req)
return event
註冊資訊可以從event裡拿到,因為之前只有用email和姓名所以才只有這2個資訊
Cognito
在Lambda觸發條件裡新增觸發,選擇在註冊確認後觸發就可以在註冊完成時觸發對應的lambda function
不過後來在設計整體架構時這段被拔掉了,主要原因是api gateway那段的授權找不到方式區分階段接不同的Cognito,導致所有階段的api gateway都要接相同的Cognito(如果有人知道這部分要怎麼設定的麻煩跟我說一下),如果讓Cognito直接連接到lambda建立對應使用者資訊就會有無法分辨環境的問題(如果照之前文章使用DynamoDB也可以讓所有環境共用一個Table),但如果是要記錄登入時間之類的,就可以在這邊加入觸發,所以還是在這邊簡單記錄一下