Я создаю тело письма, используя AWS lambda_function в Python. Я создал шаблон html, который представлен ниже. Я звоню в базу данных MySQL, чтобы получить данные, используя python. Мне нужно передать данные в шаблон, чтобы заполнить их в теле письма, повторяя этот список в таблице. Как я могу передать его из Python Lambda_function, чтобы я мог отображать, как показано ниже.
QA: Я новичок в интеграции Python и AWS Lambda_function. Не могли бы вы показать мне, как передавать запись в sendemail и динамически заполнять данные в html строках таблицы. Ищете решение на уровне кода, было бы здорово, если бы вы могли помочь. Не стесняйтесь изменять шаблон HTML и код Python по мере необходимости. Спасибо.
Это то, что мне нужно построить -
Вот мой HTML Шаблон для таблицы
<tr>
<td style="padding:35px 70px 30px;" class="em_padd" valign="top" align="center" bgcolor="#f6f7f8">
<table width="100%%" cellspacing="0" cellpadding="10" border="1" align="center">
<tbody>
<tr style="font-weight: bold">
<td>Ticker</td>
<td>Order Type</td>
<td>Creation Units</td>
<td>Authorized Participant</td>
<td>Payment Type</td>
<td>Settlement Date</td>
<td>Restricted Securities</td>
</tr>
<% var value; for value in list{ %>
<tr>
<td>%(value.ticker)s</td>
<td>%(value.orderType)s</td>
<td>%(value.creationUnits)d</td>
<td>%(value.ap)s</td>
<td>%(value.paymentType)s</td>
<td>%(value.settlementDate)s</td>
<td>%(value.rs)s</td>
</tr>
}%>
</tbody>
</table>
</td>
</tr>
Вот lambda_function.py
import json
import fund_contacts
import client_agreement_contacts
import boto3
import os
import mysql.connector
from mysql.connector import Error
import json
from datetime import datetime
def sendemail(template_name, toAddr, subject, data):
sns_client = boto3.client(
'sns',
region_name=os.environ['REGION'],
aws_access_key_id=os.environ['ACCESS_KEY_ID'],
aws_secret_access_key=os.environ['SECRET_ACCESS_KEY'],
)
message = {
"tmpl_id": template_name,
"to_email": toAddr,
"subject": subject,
"data": data
}
# Send Event
sns_client.publish(
TargetArn=os.environ['EMAIL_ARN'], Message=json.dumps(message))
def getOrderSummary():
try:
mySQLConnection = mysql.connector.connect(host='asbc.ueue.rds.amazonaws.com',
database='QA',
user='abcd',
password='random@1')
cursor = mySQLConnection.cursor(buffered=True)
sql_select_query = """SELECT ord.ticker AS 'Ticker',
ord.transaction_type AS 'Order Type',
ord.unit_quantity AS 'Creation Units',
apf.legal_name AS 'Authorized Participant',
ord.payment_method AS 'Payment Type',
ord.settlement 'Settlement Date',
'No' AS 'Restricted Securities'
FROM ETP_QA.order ord
LEFT JOIN ETP_QA.apfirm apf
ON ord.apfirm = apf.id
WHERE order_time > Curdate() - INTERVAL 1 DAY """
cursor.execute(sql_select_query)
record = cursor.fetchall()
#my_json_string = json.dumps(record)
# print(my_json_string)
return record
except mysql.connector.Error as error:
print("Failed to get record from MySQL table: {}".format(error))
finally:
if (mySQLConnection.is_connected()):
cursor.close()
mySQLConnection.close()
print("MySQL connection is closed")
def lambda_handler(event, context):
if 'Records' in event:
message = json.loads(event['Records'][0]['Sns']['Message'])
else:
message = event
records = getOrderSummary()
if not records:
templateName = 'ORDER_SUMMARY_NO_DATA'
else:
templateName = 'ORDER_SUMMARY_DATA'
for row in records:
print("Ticker = ", row[0], )
print("Order Type = ", row[1])
print("Creation Units = ", row[2])
print("Authorized Participant = ", row[3])
print("Settlement Date = ", row[4], )
print("Restricted Securities = ", row[5], "\n")
recipient_list = 'SomeEmail@gmail.com'
current_time = datetime.now()
subject = 'ABC Investment Series Trust Trade Recap -' + current_time.strftime('%m/%d/%Y')
# How to set the message so I can itegrate them as per Email Template?
# message = records
sendemail(templateName, recipient_list, subject, message)
Вот как выглядит набор данных, который я получаю из базы данных -
Ticker = BTAL
Order Type = Create
Creation Units = 1
Authorized Participant = Hamlin AP Firm
Settlement Date = Cash
Restricted Securities = T+1
Ticker = CFA
Order Type = Create
Creation Units = 1
Authorized Participant = Hamlin AP Firm
Settlement Date = Cash
Restricted Securities = T+1
Ticker = SSUS
Order Type = Create
Creation Units = 1
Authorized Participant = Hamlin AP Firm
Settlement Date = Cash
Restricted Securities = T+1
Ticker = TPHDE
Order Type = Create
Creation Units = 2
Authorized Participant = Hamlin AP Firm
Settlement Date = Inkind
Restricted Securities = T+1