有没有办法获取一个未知的JSON,大概来自前端的用户输入,并调用lambda aws函数来填充dynamodb表?



我是编码新手,并尝试使用boto3,python 2.7,dynamodb和aws lambda创建一个可修改的数据库。我不清楚如何表征某些预期的 JSON(可能是字典(输入的事件参数。您是否需要在另一个区域创建某种密钥。我能够对一些数据进行硬编码并将信息传递给dynamodb,但对于通用类型的update_item/put_item,并没有成功。

import json
import boto3
# Get service resource
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('MyTable')
def lambda_handler(event,context):

response = table.put_item(

Item={
json.dumps(event)
}
)
return{
'statusCode': 200,
'body': {}
}
}

错误是:

ParamValidationError: Parameter validation failed:
Invalid type for parameter Item, value: set(['{"key3": "value3", "key2": "value2", "key1": "value1"}']), type: <type 'set'>, valid types: <type 'dict'>

检索event的内容并将其直接发送到 DynamoDB 的代码:

json.dumps(event)

您似乎已在 AWS Lambda 控制台中单击测试。这使用通过"配置测试事件"下拉菜单配置的测试事件。默认测试事件为:

{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}

此默认测试与您的 DynamoDB 表的架构不匹配,因此会生成错误。

您应该:

  • 更新测试事件以包含正确格式的数据,然后再次测试它,或者
  • 从您的预期代码调用 Lambda 函数,希望传递正确的数据(也就是说,"真实"执行您要做的任何事情,而不是使用"测试"(

如果您只是希望存储"提供的任何数据",则至少需要将supplier_namesupplier_id作为传入 JSON 的一部分,因为它们是表中的主键。

相关内容

  • 没有找到相关文章

最新更新