Open2

[Next.js+ApiGateway+lambda+cognito]Next.jsのでのCognito認証トークン取得,lambdaでの認証情報取得

minminminmin
import { fetchAuthSession } from 'aws-amplify/auth';

//省略
  const fetchAccessToken = async () => {
    
    const session = await fetchAuthSession();
    const token = session?.tokens?.idToken?.toString();
    if (token) {
        setAccessToken(token);
    }
  };

こんな感じで取得できる。
認証トークンは特にfetchを使ってAPIGatewayに送信する場合は設定の必要あり

        const response = await fetch(target_url, {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json',
            "Authorization": access_token
          },
          body: JSON.stringify(obj),
        });
minminminmin

一方でlambda側はapigatewayでproxy統合を使用していれば、eventから自然に認証情報を取得できる

    const auth_user = event.requestContext.authorizer;
    const auth_user_id:string = auth_user!.claims.sub ?? null;

プロキシ統合時の詳しいデータ構造は以下のドキュメントにあるが、以下のドキュメントでは値がnullになっているclaimsにユーザー情報が入っている
https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html