Node.js18.x Lambda用AWS SDK V3调用Cognito遇导入错误求助
解决Node.js 18.x Lambda中AWS SDK v3的Cognito导入问题
问题原因
Node.js 18.x版本的Lambda运行时默认预装AWS SDK v3,而你使用的是SDK v2的aws-sdk包导入方式——这个包在v3环境中不存在,因此触发Cannot find package 'aws-sdk'错误。
正确实现方式(保留.mjs模块语法)
AWS SDK v3采用模块化设计,需要单独导入对应服务的客户端类和命令类,以下是适配listUserPoolClients方法的完整代码:
import { CognitoIdentityServiceProviderClient, ListUserPoolClientsCommand } from "@aws-sdk/client-cognito-identity-provider"; // 初始化Cognito客户端(替换为你的AWS区域) const cognitoClient = new CognitoIdentityServiceProviderClient({ region: "us-east-1" }); // Lambda处理函数 export const handler = async () => { try { // 构造请求参数(必填UserPoolId,可添加MaxResults等可选参数) const command = new ListUserPoolClientsCommand({ UserPoolId: "你的UserPoolID", MaxResults: 10 }); // 发送请求并获取结果 const response = await cognitoClient.send(command); console.log("AppClient列表:", response.UserPoolClients); return response.UserPoolClients; } catch (err) { console.error("获取AppClient失败:", err); throw err; } };
关键注意事项
- 无需手动安装
@aws-sdk/client-cognito-identity-provider包:Node.js 18+的Lambda运行时已预装所有AWS SDK v3的客户端模块,直接导入即可使用。 - 确保替换代码中的
region和UserPoolId为你实际的AWS区域和Cognito用户池ID。
内容的提问来源于stack exchange,提问作者robynico
相关产品推荐
相关产品推荐

