使用 python 创建项目 AWS Lambda 到 DynamoDB 时出错
Error when creating items AWS Lambda to DynamoDB with python
我正在尝试在我的 table 中创建一个新项目,每次我 运行 以下代码:
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' : 经度},"
您必须将值更新为字符串:
client.put_item(
TableName = tableminfo, Item = {
'marker':{'N' : str(marker)},
'latitude':{'N' : str(latitude)},
'longitude':{'N' : str(longitude)},
}
)
您也可以使用boto3为DynamoDB提供的higher-level资源接口。它为您处理许多 low-level 细节。这是使用资源层的代码版本。
假设您的活动如下所示:
{
"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"}
在模块级别创建客户端和 Table 效率更高,因为这样您就不必在每次调用 Lambda 函数时都创建它们。
我正在尝试在我的 table 中创建一个新项目,每次我 运行 以下代码:
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' : 经度},"
您必须将值更新为字符串:
client.put_item(
TableName = tableminfo, Item = {
'marker':{'N' : str(marker)},
'latitude':{'N' : str(latitude)},
'longitude':{'N' : str(longitude)},
}
)
您也可以使用boto3为DynamoDB提供的higher-level资源接口。它为您处理许多 low-level 细节。这是使用资源层的代码版本。
假设您的活动如下所示:
{
"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"}
在模块级别创建客户端和 Table 效率更高,因为这样您就不必在每次调用 Lambda 函数时都创建它们。