[英]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.