Данные не передаются в DynamodB из S3. Похоже, я что-то упустил. Пожалуйста, помогите мне, если кто-то работал над этим требованием.
Я уже написал код, который не выдает никакой ошибки. Хотя в то же время данные не передаются в DynamodB. Похоже, я что-то упустил. Я уже настроил таблицу DynamodB с первичным ключом как CN. В текстовом файле первая строка - это заголовок, а остальные строки содержат данные. Но данные не загружаются в DynamodB.
import boto3
s3 = boto3.client('s3')
dynamodb = boto3.resource('dynamodb','ap-southeast-1')
table=dynamodb.Table('TF')
txtFileReader={};
def txt_reader(event,context):
bucket_path = event['Records'][0]['s3']['bucket']['name'];
key_path = event['Records'][0]['s3']['object']['key'];
#value is getting printed for the below 2-prints
print(bucket_path)
print(key_path)
txt_obj = s3.get_object(Bucket=bucket_path,Key=key_path)
txtFileReader = txt_obj['Body'].read().decode('utf-8').split('\n')
#for below print, data is good
print(txtFileReader)
#looks like the issue is after defining the batch_write
def batch_write(table_name,txtFileReader):
table=dynamodb.Table('TF')
print(table)
with table.batch_writer() as batch:
for row in txtFileReader:
print(txtFileReader)
batch.put_item(Item = {
'CN':row.split('|')[0],
'SN':row.split('|')[1],
'WF':row.split('|')[2],
'SEPM':row.split('|')[3],
'Conf':row.split('|')[4],
'Last-Check-In':row.split('|')[5]
})
Вот пример файла, который я использую
CN|SN|WF|sepm|Conf|Last-Check-In
PCOT|HQL||1|G01|9/3/2018 07:01
PR2|CND||1|G02|8/29/2018 19:01
M7|F9M||1|G03|9/3/2018 10:10
MA|8CG4||1|G04|8/27/2018 15:00