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)
我可以使用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)
| 归档时间: |
|
| 查看次数: |
4007 次 |
| 最近记录: |