You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Node.js编写Lambda配合SAM查询DynamoDB判断用户名是否存在

Node.js Lambda 校验DynamoDB用户存在性修改方案

以下是修改后的可用代码,可直接适配你给出的event.json结构实现动态查询:

const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient();

// 改造为接收用户名入参,动态生成查询参数
async function getUser(username){
  const params = {
    TableName : 'Users',
    Key: {
      Username: username
    }
  }
  try {
    return await docClient.get(params).promise()
  } catch (err) {
    throw err
  }
}

exports.handler = async (event, context) => {
  try {
    // 从SAM传入的事件中读取要查询的用户名
    const targetUser = event.Username;
    const queryResult = await getUser(targetUser);
    // 根据返回结果判断用户是否存在
    const responseText = queryResult.Item ? "User exists" : "User does not exist";
    return {
      statusCode: 200,
      body: JSON.stringify(responseText)
    }
  } catch (err) {
    return {
      statusCode: 500,
      error: err.message
    }
  }
}

核心修改说明

  • 移除了全局硬编码的查询参数,把查询方法改造为可接收用户名入参的通用方法,每次查询动态生成DynamoDB请求参数
  • 直接从Lambda的event入参读取你在event.json中定义的Username字段,实现不同查询需求复用同一段代码
  • 新增存在性判断逻辑:DynamoDB的get接口如果没有匹配到对应分区键的数据,返回结果不会包含Item属性,直接判断该属性是否存在即可得到用户是否存在的结果

注意事项

  • 确保你的Lambda执行角色(SAM模板中定义的函数角色)绑定了允许dynamodb:GetItem操作的权限策略,资源指向你的Users表,否则会触发权限报错
  • 本地SAM测试如果访问线上DynamoDB,需要提前在本地环境配置好有权限的AWS凭证;如果使用本地DynamoDB实例,需要在初始化DocumentClient时指定本地端点:
const docClient = new AWS.DynamoDB.DocumentClient({
  endpoint: 'http://localhost:8000'
});

内容的提问来源于stack exchange,提问作者newbie342

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:06:04