Configure Cognito User Pool in Serverless
이제 ‘serverless.yml’을 통해 Cognito 사용자 풀을 설정하는 방법을 살펴 보겠습니다. 이것은 Cognito 사용자 풀 만들기 챕터에서 직접 작성한 것과 매우 유사해야합니다.
리소스 만들기
resources/cognito-user-pool.yml
에 아래 내용을 추가합니다.
Resources:
CognitoUserPool:
Type: AWS::Cognito::UserPool
Properties:
# Generate a name based on the stage
UserPoolName: ${self:custom.stage}-user-pool
# Set email as an alias
UsernameAttributes:
- email
AutoVerifiedAttributes:
- email
CognitoUserPoolClient:
Type: AWS::Cognito::UserPoolClient
Properties:
# Generate an app client name based on the stage
ClientName: ${self:custom.stage}-user-pool-client
UserPoolId:
Ref: CognitoUserPool
ExplicitAuthFlows:
- ADMIN_NO_SRP_AUTH
GenerateSecret: false
# Print out the Id of the User Pool that is created
Outputs:
UserPoolId:
Value:
Ref: CognitoUserPool
UserPoolClientId:
Value:
Ref: CognitoUserPoolClient
여기서 뭘하고 있는지 빨리 알아 보겠습니다.
-
사용자 정의 변수
${self: custom.stage}
를 사용하여 stage를 기반으로 사용자 풀(및 사용자 풀 앱 클라이언트)의 이름을 지정합니다. -
UsernameAttributes
를 이메일로 설정하고 있습니다. 이것은 사용자가 사용자 이름으로 이메일을 사용하여 로그인할 수 있도록 사용자 풀에 알려줍니다. -
S3 버킷과 마찬가지로 CloudFormation에서 사용자 풀 ID와 생성된 사용자 풀 클라이언트 ID를 전달해야합니다. 끝 부분의
Outputs:
블럭에서 이 작업을 수행합니다.
리소스 추가
serverless.yml
에서 자원을 참조합니다. resources:
블럭을 다음으로 대체하십시오.
# Create our resources with separate CloudFormation templates
resources:
# API Gateway Errors
- ${file(resources/api-gateway-errors.yml)}
# DynamoDB
- ${file(resources/dynamodb-table.yml)}
# S3
- ${file(resources/s3-bucket.yml)}
# Cognito
- ${file(resources/cognito-user-pool.yml)}
코드 커밋
지금까지 변경 내용을 커밋합니다.
$ git add .
$ git commit -m "Adding our Cognito User Pool resource"
다음으로 Cognito Identity Pool을 구성하여 이 모든 것을 하나로 묶겠습니다.
For help and discussion
Comments on this chapter