将列表发送到DynamoDB时,ParameterVailidation失败

emp*_*ace 2 python json amazon-web-services amazon-dynamodb aws-lambda

我在AWS Lambda上有一个简单的Python函数,该函数只是将一些数据放入DynamoDB表中,据我所知,我遵循的是Bot3文档中put_item()函数的正确格式。我收到以下似乎无法调试的错误:

"errorMessage": 
"Parameter validation failed:\nInvalid type for parameter 
Item.GSRResults.L[0], value: 3.8, type: <class 'float'>, valid types: <class 'dict'>
\nInvalid type for parameter Item.GSRResults.L[1], value: 3.4, type: <class 'float'>, valid types: <class 'dict'>\... snip...
\nInvalid type for parameter Item.GSRResults.L[9], value: 3.3, type: <class 'float'>, valid types: <class 'dict'>",
  "errorType": "ParamValidationError",
  "stackTrace": [
    [
      "/var/task/index.py",
      39,
      "upload_test",
      "Item=item"
    ], 
Run Code Online (Sandbox Code Playgroud)

这是Python函数:

def upload_test(event, context):
    if event['httpMethod'] == 'POST':
        info = event['body']
        item = info['Item']
        return respond(None, dynamo.put_item(
            TableName="TestResults",
            Item=item))
Run Code Online (Sandbox Code Playgroud)

这是我发送的JSON:

{
  "body": {
    "Item": {
      "UID": {
        "S": "U999999"
      },
      "PID": {
        "S": "P444444"
      },
      "GSRResults": { "L": [3.8,3.4,3.3,2.8,1.3,3.2,4.3,2.1,3.2,3.3] }
    }
  },
  "httpMethod": "POST"
}
Run Code Online (Sandbox Code Playgroud)

jar*_*mod 5

我可以使用Client.put_item进行以下操作

import boto3
client = boto3.client('dynamodb')

item = {
  "id": {
    "S": "1",
  },
  "name": {
    "S": "Testing"
  },
  "age": {
    "N": "22"
  },
  "grades": {
    "L": [ {"N": "3.50"}, {"N": "2.75"}, {"N": "3.80"}, {"N": "3.1415926"} ]
  }
}

client.put_item(TableName='test', Item=item);
Run Code Online (Sandbox Code Playgroud)

而且我可以使用Table.put_item进行以下操作

import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('test')

item2 = {
  "id": "2",
  "name": "Testing2",
  "age": 22,
  "grades": [ decimal.Decimal('3.50'), decimal.Decimal('3.1415926') ]
}

table.put_item(Item=item2)
Run Code Online (Sandbox Code Playgroud)

有关何时使用boto3 客户端资源的相关讨论