[英]Error when creating items AWS Lambda to DynamoDB with python
我试图在我的表中创建一个新项目,并且每次运行以下代码时:
from __future__ import print_function
from decimal import *
import boto3
import json
def my_handler(event, context):
marker = event['m']
latitude = Decimal(event['lat'])
longitude = Decimal(event['lon'])
tableminfo = 'minfo'
client = boto3.client('dynamodb')
client.put_item(
TableName = tableminfo, Item = {
'marker':{'N' : marker},
'latitude':{'N' : latitude},
'longitude':{'N' : longitude},
}
)
success = "Success"
return {'success' : success}
在 Lambda 中使用以下测试参数
{
"m": 1,
"lat": 52.489505,
"lon": 13.389687
}
我在以下几行收到错误:17, "my_handler", "'longitude':{'N' : longitude},"
您必须将值更新为字符串:
client.put_item(
TableName = tableminfo, Item = {
'marker':{'N' : str(marker)},
'latitude':{'N' : str(latitude)},
'longitude':{'N' : str(longitude)},
}
)
您还可以使用 boto3 为 DynamoDB 提供的更高级别的资源接口。 它为您处理了许多低级细节。 这是使用资源层的代码版本。
假设您的事件如下所示:
{
"m": 1,
"lat": 52.489505,
"lon": 13.389687
}
此代码会将数据保存到 DynamoDB
import boto3
client = boto3.resource('dynamodb')
table = client.Table('minfo')
def my_handler(event, context):
item = {
'marker': event['m'],
'latitude': event['lat'],
'longitude': event['lon']}
table.put_item(Item=item)
return {'success' : "Success"}
在模块级别创建客户端和表更有效,因为这样您就不会在每次调用 Lambda 函数时都为创建它们付出代价。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.