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

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),
});

一方でlambda側はapigatewayでproxy統合を使用していれば、eventから自然に認証情報を取得できる
const auth_user = event.requestContext.authorizer;
const auth_user_id:string = auth_user!.claims.sub ?? null;
プロキシ統合時の詳しいデータ構造は以下のドキュメントにあるが、以下のドキュメントでは値がnullになっているclaimsにユーザー情報が入っている