前置き
LT大会に参加された方ありがとうございました。
いままで、Qiitaには大変お世話になっていたのですが、正しい情報を正しく伝える自信がなく
記事の投稿を躊躇していました。
今回のLT大会を通して少し自分に自身がついたのでこれを皮切りにどんどん記事をあげていこうと思いました。
本題
組み込みメーカーならではのAWS Cognitoの使い方
というタイトルでslideshareに登壇資料をアップしています。
みなさんのAWSの設計のサポートになればと幸いです。
補足
Lamabda拡張のドキュメントについて
資料の中には
のようなイメージがあるのですが。
-
ピンク枠の①の拡張については
https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html -
ピンク枠の②の拡張については
https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html
に記載があります。
SAMでの記載についての注意事項
全てサーバーレスで構築しているため、Serverless Application Model (AWS SAM)で記載できるのですが、ApiGatewayでLambdaオーサーライザーを指定する方法について記載されている記事がなかなかないようなので公開できる範囲で記載します。
Type: AWS::Serverless::Api
の中で
securityDefinitions:
hoge-authorizer:
type: apiKey
# AuthorizationにIDTokenを付加することを想定
name: Authorization
in: header
x-amazon-apigateway-authtype: custom
x-amazon-apigateway-authorizer:
type: request
identitySource: method.request.header.Authorization
authorizerUri:
# Authorizerは認証を行うLambdaを指定
!Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${Authorizer.Arn}/invocations
のようにsecurityDefinitionsにAWSのswaggerの拡張で指定します。
これを
x-amazon-apigateway-integration:
security:
- hoge-authorizer: []
のように指定してカスタムセキュリティを指定します。
もし、需要があるようであればType: AWS::Serverless::Api
とType: AWS::Serverless::Function
でEventを使わないでAPIを定義する方法を記載したいと思います。
記事をご覧になっていただきありがとうございました。