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

基于boto3的Lambda函数测试HTTP API报Internal server error排查

问题根因

返回的Internal server error是代码语法错误导致,和权限配置、json与boto3混用规范无关。
你的返回字典存在两个明确语法问题:

  • 'statusCode': 200 行末尾缺少逗号,Python无法正确解析字典结构
  • body作为字典键没有加字符串引号,会被Python识别为未定义变量,直接抛出NameError

另外代码里用input作为变量名属于不良实践,input是Python内置函数,重名会覆盖内置能力,容易触发隐性bug。

修正后的可运行代码:

import boto3
import json

def lambda_handler(event, context):
    client = boto3.resource('dynamodb')
    table = client.Table('Visit_Count')

    visit_data = {'Visits': 1}
    table.put_item(Item=visit_data)
    
    return {
        'statusCode': 200,
        'body': json.dumps("Hello, World!"),
        'headers': {
            'Content-Type': 'application/json'
        }
    }
json与boto3同文件编写规范
  • 调用boto3所有API方法时,直接传入Python原生字典、列表类型参数即可,boto3内部会自动完成序列化处理,不需要手动用json.dumps()把参数转成字符串,传字符串反而会触发参数格式错误。
  • 只有在需要给API Gateway返回字符串格式响应、或者需要把结构化数据转成JSON字符串输出的场景,才需要调用json.dumps()处理对应内容。
  • Python字典的语法要求是通用规则:字符串类型的键必须用引号包裹,键值对之间必须用逗号分隔,和是否同时使用json、boto3没有关联。
后续排查提示

如果修正语法后仍然报错,再检查Lambda执行角色的权限配置,确保角色拥有目标DynamoDB表的dynamodb:PutItem操作权限即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:36:14