如何解决使用无服务器 Python 模板的 DynamoDB 为 body
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
为什么“body”给我一个关键错误?我该如何解决?该模板直接来自www.severless.com,并且基于在线教程,人们使用了完全相同的代码,albie 具有不同的值,成功了吗?
我尝试更改变量名称和值无济于事。
sls deploy
确实成功创建了表,但我无法向其中输入任何数据。 编辑 1:对于那些不熟悉 AWS 的 Lambda 测试功能的人,使用 Postman 输入相同的数据会导致 502 网关错误。
解决方法
假设这是正确的 event
对象:
{
"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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。