【发布时间】:2021-08-28 00:06:53
【问题描述】:
以下是在将 csv 文件上传到 Amazon S3 存储桶并将数据写入 Amazon DynamoDB 表时触发 lambda 函数的代码。我收到错误“预期的 str、字节或 os.PathLike 对象,而不是 dict”。
能否请您指出我犯的错误在哪里。
import boto3
import csv
s3_client = boto3.client('s3')
dynamodb = boto3.resource('dynamodb')
#table = dynamodb.Table('batch_data')
def csv_write(table_name, rows):
table = dynamodb.Table(table_name)
with table.csv_write() as batch:
for row in rows:
batch.put_item(Item=row)
return True
def read_csv(csv_file, list):
rows = csv.DictReader(open(csv_file))
for row in rows:
list.append(row)
def lambda_handler(event, context):
try:
bucket = event['Records'][0]['s3']['bucket']['name']
csv_file_name = event['Records'][0]['s3']['object']['key']
response = s3_client.get_object(Bucket=bucket, Key= csv_file_name)
table_name = 'batch_data'
items = []
read_csv(response, items)
status = csv_write(table_name, items)
if(status):
print('Data saved')
else:
print('Error in saving data...')
except Exception as err:
print (err)
```
【问题讨论】:
-
错误究竟来自哪里?
-
我认为您正在关注 youtube 教程,mka 一定要检查您的 csv 文件的数据类型
标签: python amazon-web-services amazon-s3 aws-lambda amazon-dynamodb