XML-файл будет помещен в корзину AWS S3, и я хотел бы проанализировать его и переместить данные в таблицу DynamoDB или RDS из функции Lambda, написанной на Python.
Пока у меня есть толькомоя функция захватывает файл XML, анализирует его и распечатывает данные.Я только уверен, что получение корзины и имени файла работает правильно.
Содержимое XML-файла выглядит следующим образом:
<Locations>
<Location>
<d_num>034567</d_num>
<CID>333</CID>
<Tool>
<t_num>JM12345</t_num>
<qua>1</qua>
</Tool>
<Tool>
<t_num>YT98234</t_num>
<qua>1</qua>
</Tool>
</Location>
</Locations>
И моя лямбда-функция выглядит следующим образом:
import boto3
from xml.dom import minidom
s3 = boto3.client('s3')
def lambda_handler(event, context):
# retrieve bucket name and file_key from the S3 event
bucket_name = event['Records'][0]['s3']['bucket']['name']
file_key = event['Records'][0]['s3']['object']['key']
# get the object
#obj = s3.get_object(Bucket=bucket_name, Key=file_key)
obj = s3.Object(bucket_name, file_key) #<- and ^: neither seem
# to work
#get data from s3 event object
file_data = obj['Body'].read()
#parse through xml file
xmldoc = minidom.parse(file_data)
itemlist = xmldoc.getElementsByTagName('Location')
print(len(itemlist))
for i in itemlist:
print(itemlist[i].attributes['d_num'].value)
print(itemlist[i].attributes['CID'].value)
tList = itemlist[i].getElementsByTagName('Tools')
for s in tList:
print(s.attributes['t_num'].value)
print(s.attributes['qua'].value)
print("Ran all commands")
Конечной целью является получение данных в реляционномбаза данных.Пока мне просто нужно знать, как анализировать и хранить данные XML.Тогда беспокойтесь о получении этого в базу данных.Любая помощь будет оценена!