使用 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 函数时都创建它们。