Serverless FrameworkでCognito User Poolsの認証付きAPIを作る
Cognito User Poolsを会員基盤としている場合、APIの認証をかなり簡単に作ることができます。そう、Serverless Frameworkなら。 serverless.yml こんな感じで書きましょう。 […]
広告ここから
広告ここまで
目次
Cognito User Poolsを会員基盤としている場合、APIの認証をかなり簡単に作ることができます。そう、Serverless Frameworkなら。
$ sls -v
1.23.0
serverless.yml
こんな感じで書きましょう。
service:
name: cognito-apis
provider:
name: aws
runtime: nodejs8.10
iamRoleStatements:
- Effect: "Allow"
Action:
- "*"
Resource:
- "arn:aws:cognito-idp:us-east-1:*:userpool/us-east-1_XXXXXX"
functions:
hello:
handler: index.handler
events:
- http:
path: hello
method: get
cors: true
integration: lambda
authorizer:
name: authorizer
arn: arn:aws:cognito-idp:us-east-1:999999999999:userpool/us-east-1_XXXXXX
authorizerにarn: COGNITO_USER_POOL_ARN
を設定することで、Cognito User Poolsを使った認証が簡単にできます。
ユーザー名をAPI側で使いたい場合
adminGetUser
とかしたくなった場合、authorizer
を以下のように変更しましょう。
authorizer:
name: authorizer
arn: arn:aws:cognito-idp:us-east-1:999999999999:userpool/us-east-1_XXXXXX
claims:
- 'cognito:username'
claimsを設定することで、event.cognitoPoolClaims
に値が入ってきます。ちなみにここはcustom:hoge
のようなカスタム属性も設定できます。
尤も
CloudFormationのラッパーということを考えれば、SAMでも十分簡単にできるとは思うんですけどね。手に馴染んでる方優先しました。