みなさんこんにちは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つだと思います。