Serverless FrameworkでAPI GatewayにCustom Authorizationを付与する
はじめに
Serverless Frameworkを使用してAPI GatewayにCustom Authorization(カスタム認証)を追加してみました。
マネージメントコンソールからCustom Authorizationを行う手順についてはAmazon API Gateway で Custom Authorization を使ってクライアントの認可を行うに詳しいのですが、今回行なってみたところ、マネージメントコンソールの画面が変わっていたところもありました。
以下に、今回行なった手順と、変わっていた画面について書きたいと思います。
手順について
Custom Authorizationを行うためのLambda関数は予め作成済みであるものとします。今回はAmazon API Gateway で Custom Authorization を使ってクライアントの認可を行うで紹介されている関数をそのまま使用しました。
またCustom Authorizationを行うためのAPI GatewayもServerless Frameworkで作成済みであるものとします。
serverless.yml
serverless.yml内のCustom Authorizationを付与したいAPIに定義を追加します。以下のようになります。
functions: hello: handler: handler.hello events: - http: method: get path: hello authorizer: # 以下Custom Authorizationのために追加 arn: arn:aws:lambda:ap-northeast-1:0000000000:function:YourFunctionName # Custom Authorizationを行うLambda関数のarn identitySource: method.request.header.Authorization # Custom Authorizationを行うLambda関数に渡すヘッダー名。この行を記述しないとデフォルトで「Authorization」となる。 type: request
上記を記述した後、$ serverless deploy などでデプロイします。
実行結果の画面
デプロイできるとAPI Gatewayの画面が以下のようになっているかと思います。
リソース
オーソライザ
2つ目のキャプチャの、Lambda イベントペイロードがリクエストになっているところが以前から違っている箇所となります(というより以前と画面全体が変わっています。)
ここが「リクエスト」となっているのは、serverless.ymlの一番下の「type」で選択しているためとなります。
まとめ
以上でServerless Frameworkを使用してAPI GatewayにCustom Authorizationを付与することができました。当然ですが、Custom Authorizationを実行するLambda関数もServerless Frameworkでデプロイし、その関数をAPI Gatewayに付与させることもできるようです。(詳細が下記のドキュメントを参考にしてください)