Я новичок в AWS и обучения.У меня есть файл JSON с информацией о сотрудниках в папке S3.Написал лямбда-функцию с PYTHON 3.6 для загрузки таблицы DynamoDB XXXXX-YYYY-ZZZZ-Employees, когда файл JSON загружен на S3.Все настройки были сделаны с политикой и ролями для доступа к CloudwatchLog, S3 и DynamoDB.Файл журнала дает ошибку ниже.Похоже, что проблема в том, что файл представляет собой словарь в формате, подобном [], и put_item ожидает строку ... не уверен.
(empid - это первичный ключ)
Проверен код и исследована проблема вфорумы google и AWS
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()
#print(jsonFileReader)
jsonDict = json.loads(jsonFileReader)
#print(jsonDict)
table = dynamodb.Table('XXXXXX-YYYYY-ZZZZZZ-Employees')
table.put_item(Item=jsonDict)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
Ожидаемый результат: таблица DynamoDB загружена с данными файла JSON Фактический результат: получена ошибка в cloudwatchlog:
Недопустимый тип для параметра Item, значение: [{'empid': 10004, «электронная почта»: «test1@email.com», «имя»: «John5», «фамилия»: «Smith5», «местоположение»: «ABCD-B207», «мобильный»: «123-456-7890 ',' work ':' 098-765-4321 ',' site ':' ABCD '}, {' empid ': 10005,' email ':' test1@email.com ',' firstname ':' John6 ', ................. '}], тип:, допустимые типы: