Lambda函数无法找到DynamoDB表的问题排查求助
问题排查:Lambda调用DynamoDB时出现ResourceNotFoundException
问题描述
按照AWS官方教程完成权限角色创建、Lambda函数创建、API Gateway配置、DynamoDB表创建后,在API Gateway控制台测试POST方法(路径/dynamodbmanager)时,收到状态码200但响应返回ResourceNotFoundException,提示找不到请求资源,尽管已创建对应DynamoDB表。
错误响应详情:
{ "errorType": "ResourceNotFoundException", "errorMessage": "Requested resource not found", "trace": [ "ResourceNotFoundException: Requested resource not found", " at deserializeAws_json1_0ResourceNotFoundExceptionResponse (/var/runtime/node_modules/@aws-sdk/client-dynamodb/dist-cjs/protocols/Aws_json1_0.js:3090:23)", " at deserializeAws_json1_0PutItemCommandError (/var/runtime/node_modules/@aws-sdk/client-dynamodb/dist-cjs/protocols/Aws_json1_0.js:2088:25)", " at process.processTicksAndRejections (node:internal/process/task_queues:95:5)", " at async /var/runtime/node_modules/@aws-sdk/middleware-serde/dist-cjs/deserializerMiddleware.js:7:24)", " at async /var/runtime/node_modules/@aws-sdk/lib-dynamodb/dist-cjs/baseCommand/DynamoDBDocumentClientCommand.js:18:34)", " at async /var/runtime/node_modules/@aws-sdk/middleware-signing/dist-cjs/middleware.js:13:20)", " at async StandardRetryStrategy.retry (/var/runtime/node_modules/@aws-sdk/middleware-retry/dist-cjs/StandardRetryStrategy.js:51:46)", " at async /var/runtime/node_modules/@aws-sdk/middleware-logger/dist-cjs/loggerMiddleware.js:6:22)", " at async Runtime.handler (file:///var/task/index.mjs:33:16)" ] }
排查步骤
- 核对Lambda代码中的表名:确保代码里指定的DynamoDB表名与控制台创建的表名完全一致(包括大小写、拼写、特殊字符),DynamoDB SDK会严格匹配表名字符串。
- 确认区域一致性:检查Lambda函数和DynamoDB表是否在同一AWS区域。若不在同一区域,需在Lambda的DynamoDB客户端配置中显式指定表所在区域,否则SDK会默认使用Lambda所在区域发起请求,导致找不到跨区域的表。
- 验证IAM角色权限:检查Lambda关联的IAM角色权限策略,确认包含
dynamodb:PutItem(及其他所需操作)权限,且资源目标为正确的DynamoDB表ARN(格式为arn:aws:dynamodb:[区域]:[账号ID]:table/[表名]),避免使用错误的通配符或ARN。 - 检查表状态:登录DynamoDB控制台,确认目标表状态为
Active,排除表处于创建中、已删除或异常状态的情况。
内容的提问来源于stack exchange,提问作者alienCred
相关产品推荐
相关产品推荐

