AWS Cognito에 서명한 사용자를 Lambda를 통해 DynamoDB에 로그인
개요
AWS Cognito에 서명(등록)하려는 사용자를 DB(DynamoDB)에 등록하는 경우가 비교적 많다.
※ 전제로 코그니토는 사용자 메인스테이션으로 사용하지 말고 DB를 별도로 보관하는 것이 좋습니다.
그래서 이번에는 AWS Cognito에 서명한 사용자를 Lambda를 통해 DynamoDB에 로그인할 수 있도록 최소 구성을 만들었습니다.
실현 방법으로 화면 측면에서 CognitoSDK를 호출한 후에 DynamoDB Insert를 제거하는 방법도 고려할 수 있지만 화면 측면 처리에 의존하는 것을 원하지 않기 때문에 백엔드 측에서 Cognito의 트리거 기능을 사용하고 E-mail 등 인증이 완성될 때 Lambda를 호출할 수 있다.사용자 정보를 DB(DynamoDB)와 공동 작업합니다.
프로비저닝
이번에 실시된 것은 다음과 같은 최소 구성이다.
실제로 코그니토의 E-mail 인증 전 로그인 화면, 인증 후 추가 회원 정보 로그인 화면 등을 만들어 필요한 회원 정보를 등록하도록 하는 것이 좋다.
전제 조건
또 이 람바다 트리거는 회원 가입 때 이외에도 비밀번호를 잊어버린 것을 확인하는 호출을 받을 수 있기 때문에 이미 회원으로 가입한 경우에는 별도로 고려해야 한다.
구축 방법
lambda 함수 준비
다음 내용의 Lambda 함수를 만듭니다.
처리된 내용은 간단하다
event
cognito측 사용자의 E-mail에서 확인이 완료되었을 때 대상 사용자의 정보를 수신하고 다이나모DBUser
라는 표에 코그니토의 사용자 이름(UID)을 키로 속성 정보와 함께 진행한다putItem
.signup-link-lambda.js
const dynamodb = require("aws-sdk/clients/dynamodb");
const docClient = new dynamodb.DocumentClient();
exports.signupLinkToDBHandler = async (event, context, callback) => {
var params = {
TableName: "User",
Item: {
id: event.userName,
email: event.request.userAttributes.email,
},
};
const result = await docClient.put(params).promise();
console.log(
`cognito user link to dynamodb id=${event.userName} email=${event.request.userAttributes.email} result=${result}`
);
callback(null, event);
};
DynamoDB 액세스 권한 부여
이 처리를 수행하려면 lambda 함수가 DynamoDB에 접근해야 합니다.대상 람바다의 수행역할(IAM 역할)에 대해 다이나모DB의 객체 테이블 Put에 대한 권한을 부여합니다.
DynamoDB에 다양한 조작 권한을 부여할 때
AmazonDynamoDBFullAccess
.(필요한 경우 작은 권한을 설정하십시오.)SAM 템플릿의 정의 예를 미리 기재합니다.(SAM으로 구축할 때 AWS 콘솔에서 등록할 경우 별도의 사용 권한을 설정합니다.)
중점은
Policies
에 대한 설정AmazonDynamoDBFullAccess
이다.template.yaml
AWSTemplateFormatVersion: 2010-09-09
Description: >-
cognito-trigger-sample
Transform:
- AWS::Serverless-2016-10-31
Resources:
signupLinkToDBFunction:
Type: AWS::Serverless::Function
Properties:
Handler: src/handlers/signup-link-lambda.signupLinkToDBHandler
Runtime: nodejs14.x
Architectures:
- x86_64
MemorySize: 128
Timeout: 100
Description: Link cognito users to DB.
Policies:
- AWSLambdaBasicExecutionRole
- AmazonDynamoDBFullAccess
Cognito의 트리거 설정
Cognito 측부터 E-mail을 확인할 때 Lambda 함수를 호출하여 다음과 같이 설정합니다.
Cognito
-ユーザプール
로 대상을 선택한 사용자 수영장.선택
全般設定
-トリガー
.確認後
항목에서 객체의 Lambda 함수를 선택하고 変更の保存
를 눌러 설정을 반영합니다.※ 정상적으로 동작하지 못할 경우 클라우드워치로그에서 로그가 출력되었는지 확인하세요.
Reference
이 문제에 관하여(AWS Cognito에 서명한 사용자를 Lambda를 통해 DynamoDB에 로그인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ttani/articles/aws-cognito-signup-dynamodb-link텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)