AWS Lambda中DynamoDB FilterExpression失效问题求助
问题排查与解决步骤
1. 先捕获并返回具体异常信息
当前代码的except块仅返回通用错误提示,无法定位具体异常原因。先修改代码,把异常详情返回(调试完成后可移除该信息):
except Exception as e: return { "statusCode": 500, "body": json.dumps({"error": "Failed to retrieve event logs.", "details": str(e)}) }
调用接口后就能看到具体错误,比如依赖缺失、资源初始化错误等关键信息。
2. 检查Attr类是否正确导入
如果报错提示NameError: name 'Attr' is not defined,说明未导入DynamoDB条件表达式类,需在代码顶部添加:
from boto3.dynamodb.conditions import Attr
3. 验证DynamoDB资源初始化是否正确
确保dynamodb_resource已正确初始化,且指定的区域与你的DynamoDB表所在区域完全一致:
import boto3 dynamodb_resource = boto3.resource('dynamodb', region_name='你的表所在区域,如us-east-1')
区域不匹配会导致无法连接目标表,触发异常。
4. 检查表名拼写是否完全一致
确认代码中customer-event-logs的大小写、连字符与DynamoDB控制台中的表名完全一致——DynamoDB表名是大小写敏感的。
5. 验证权限配置的有效性
虽然你提到已配置全权限,但可再次确认Lambda的IAM角色策略中,是否包含针对customer-event-logs表的dynamodb:Scan权限,且资源ARN是否正确:
{ "Effect": "Allow", "Action": "dynamodb:Scan", "Resource": "arn:aws:dynamodb:你的区域:你的账号ID:table/customer-event-logs" }
内容的提问来源于stack exchange,提问作者A. Arslan
相关产品推荐
相关产品推荐

