Amazon web services DynamoDB使用无服务器的Python模板为body提供KeyError

Amazon web services DynamoDB使用无服务器的Python模板为body提供KeyError,amazon-web-services,amazon-dynamodb,aws-serverless,Amazon Web Services,Amazon Dynamodb,Aws Serverless,lambda函数的代码如下所示: import json import logging import os import time import uuid import boto3 dynamodb = boto3.resource('dynamodb') def create(event, context): data = json.loads(event['body']) if 'text' not in data: logging.error("

lambda函数的代码如下所示:

import json
import logging
import os
import time
import uuid

import boto3
dynamodb = boto3.resource('dynamodb')

def create(event, context):
    data = json.loads(event['body'])
    if 'text' not in data:
        logging.error("Validation Failed")
        raise Exception("Couldn't create the todo item.")
    
    timestamp = str(time.time())

    table = dynamodb.Table(os.environ['DYNAMODB_TABLE'])

    item = {
        'id': str(uuid.uuid1()),
        'name': data['text'],
        'description': data['text'],
        'price': data['text'],
        
        'createdAt': timestamp,
        'updatedAt': timestamp,
    }

    # write the todo to the database
    table.put_item(Item=item)

    # create a response
    response = {
        "statusCode": 200,
        "body": json.dumps(item)
    }

    return response
使用AWS Lambda测试功能的测试为:

{
  "name": "Masks",
  "description": "A box of 50 disposable masks",
  "price": "$10"
}
日志输出为:

START RequestId: 5cf1c00a-dba5-4ef6-b5e7-b692d8235ffe Version: $LATEST
[ERROR] KeyError: 'body'
Traceback (most recent call last):
  File "/var/task/todos/create.py", line 12, in create
    data = json.loads(event['body'])END RequestId: 5cf1c00a-dba5-4ef6-b5e7-b692d8235ffe
为什么“身体”给了我一个关键错误?我该如何解决这个问题?该模板直接来自在线教程,基于在线教程,人们成功地使用了完全相同的代码,不同值的albie

我尝试过更改变量名和值,但没有效果

sls deploy
已成功创建表,但我无法向其中输入任何数据。
编辑1:对于不熟悉AWS Lambda测试功能的用户,使用邮递员输入相同的数据会导致502网关错误。

假设这是正确的
事件
对象:

{
  "name": "Masks",
  "description": "A box of 50 disposable masks",
  "price": "$10"
}
与此事件匹配的代码应为:

import json
import logging
import os
import time
import uuid

import boto3

dynamodb = boto3.resource('dynamodb')

def create(event, context):
   
    timestamp = str(time.time())

    table = dynamodb.Table(os.environ['DYNAMODB_TABLE'])

    item = {
        'id': str(uuid.uuid1()),
        'name': event['name'],
        'description': event['description'],
        'price': event['price'],        
        'createdAt': timestamp,
        'updatedAt': timestamp,
    }

    # write the todo to the database
    table.put_item(Item=item)

    # create a response
    response = {
        "statusCode": 200,
        "body": json.dumps(item)
    }

    return response

“使用AWS CloudWatch进行测试”是什么意思?AWS CloudWatch允许您使用测试用例测试Lambda函数。请检查更新的问题。如果您提供的是您的测试
事件
,那么它显然没有任何
正文
。但您正试图在
事件['body']
中访问它。同样,它没有任何
文本
,但您尝试访问它的
数据['text']
。因此,不清楚你想要实现什么。基于什么?您确信这是您的正确活动吗:
{“名称”:“面具”、“说明”:“一盒50个一次性面具”、“价格”:“$10”}
。因为它与您的代码完全不匹配。我添加了答案。你可以看一看,谢谢!这正是我要找的。如何触发此函数并使用表单传递颤振应用程序中的三个字符串?我在任何地方都找不到它的相关文档。