LoginSignup
12
9

More than 5 years have passed since last update.

LambdaにAPI Gatewayを経由してCognito Idを渡す

Last updated at Posted at 2016-12-08

みなさんこんにちはsekitakaです。
API GatewayからCognito Identity IdをLambdaに渡す方法について紹介します。

シチュエーション

以下のようなシチュエーションの場合に、この方法が使えます。

モバイルアプリでCognitoを使っていて、API Gatewayの認証をIAM認証にしている場合があるとします。
つまり正しいCognito Identity Id(以下Cognito Id)を持っているユーザー以外はAPIを実行できない状態です。
この状態でAPIのバックエンドのLambdaでCognito Idを使用したいことがあると思います。
例えば、Cognito IdをプライマリキーにしてDynamoDBにユーザーごとのデータを作成したり、S3にプロフィール画像のファイルを作成したりする場合です。

手順

  • APIの任意のメソッドのメソッドリクエスト→認証を「AWS_IAM」に設定します。
  • 統合リクエスト→本文マッピングテンプレート を以下のように指定します。

    {
      "cognito_id": "$context.identity.cognitoIdentityId"
    }
    

"$context.identity.cognitoIdentityId"を指定することで、Lambdaにcognito_idというプロパティで、Cognito Idを渡すことができます。

  • Lambdaでは以下のように使用できます。

    def lambda_handler(event, context):
      cognito_id = event.get('cognito_id')
    
    

まとめ

いかがでしたでしょうか。今回はAPI Gatewayを経由してLambdaにCognito Identity Idを渡す方法をご紹介しました。
AWSを利用したサーバーレスなモバイルアプリを作る場合に必要な知識の1つだと思います。

12
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
9