python-3.x - 使用 Python 将 JSON 数据插入 DynamoDB 时出错
问题描述
HI,
I am trying to put the json data into AWS dynamodb table using AWS Lambda , however i am getting an error like below. My json file is uploaded to S3 bucket.
Parameter validation failed:
Invalid type for parameter Item, value:
{
"IPList": [
"10.1.0.36",
"10.1.0.27"
],
"TimeStamp": "2020-04-22 11:43:13",
"IPCount": 2,
"LoadBalancerName": "internal-ALB-1447121364.us-west-2.elb.amazonaws.com"
}
, type: <class 'str'>, valid types: <class 'dict'>: ParamValidationError
Below i my python script:-
import boto3
import json
s3_client = boto3.client('s3')
dynamodb = boto3.resource('dynamodb')
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
json_file_name = event['Records'][0]['s3']['object']['key']
json_object = s3_client.get_object(Bucket=bucket,Key=json_file_name)
jsonFileReader = json_object['Body'].read()
jsonDict = json.loads(jsonFileReader)
table = dynamodb.Table('test')
table.put_item(Item=jsonDict)
return 'Hello'
下面是我的json内容
"{\"IPList\": [\"10.1.0.36\", \"10.1.0.27\"], \"TimeStamp\": \"2020-04-22 11:43:13\", \"IPCount \": 2, \"LoadBalancerName\": \"internal-ALB-1447121364.us-west-2.elb.amazonaws.com\"}"
有人可以帮助我,如何将数据插入 dynamodb。
解决方案
json.loads(jsonFileReader)
返回string
,但table.put_item()
期望dict
。改为使用json.load()
。
推荐阅读
- azure-data-factory - Azure 数据工厂根据大小从文件夹中抓取文件
- javascript - 通过动态 Key、Value 格式化 JSON 数据
- javascript - ReactJS 组件中的简单 javascript 不起作用
- android - Android BillingClient:在 onBillingSetupFinished 之前处理 onBillingServiceDisconnected
- c# - 如何将文本文件插入二叉搜索树?
- javascript - Javascript排序数组而不更改索引
- python - Sklearn方法来预测集群的数量?
- swift - swiftui 视图不会更新,直到我最小化应用程序并再次打开它,即使我注入了模型
- html - 在css伪类中单击时不改变边框颜色
- c# - Console.ReadKey(); 正在抛出异常