คุณต้องการรับสรุปข่าวสารล่าสุดจากฟีด RSS หรือ Atom หรือไม่? คุณต้องการดูในรูปแบบ Markdown ในเอกสาร Microsoft Word หรือบนอุปกรณ์ e-ink หรือไม่ นี่คือเครื่องมือสำหรับคุณ
แอปพลิเคชันนี้ปรับใช้เป็นฟังก์ชัน AWS Lambda ฟังก์ชันนี้จะดาวน์โหลดรายการล่าสุดจากฟีด RSS หรือ Atom ดาวน์โหลดเนื้อหาที่เชื่อมโยง แยกข้อความ และสร้างข้อมูลสรุป เอาต์พุตเขียนในรูปแบบ JSON ในบัคเก็ต S3 ออบเจ็กต์ S3 อนุญาตให้อ่านแบบสาธารณะเพื่อให้สามารถดาวน์โหลดบนอุปกรณ์ภายนอกได้อย่างง่ายดาย
ดูคำแนะนำในส่วนท้ายเกี่ยวกับวิธีการเรียกใช้และทดสอบฟังก์ชัน Lambda ภายในเครื่อง
ต่อไปนี้เป็นตัวอย่างโครงสร้างของไฟล์ JSON:
{
"title" : " Recent Announcements " ,
"entries" : [
{
"title" : " Amazon SageMaker Model Registry announces support for private model repositories " ,
"link" : " https://... " ,
"summary" : " Amazon SageMaker Model Registry now supports... "
},
{
"title" : " Announcing memory optimized Amazon EC2 R7a bare metal instances " ,
"link" : " https://... " ,
"summary" : " Amazon announces general availability... "
},
...
]
}
ตามค่าเริ่มต้น ฟังก์ชัน Lambda ได้รับการกำหนดให้ทำงานในช่วงเช้าของวัน ตั้งแต่วันจันทร์ถึงวันศุกร์ เพื่ออัปเดตข่าวสาร
URL ของฟีด RSS, กำหนดการ cron เพื่อรันฟังก์ชัน และคำแนะนำพิเศษที่สามารถเพิ่มลงในพร้อมท์การสรุปสามารถแก้ไขได้ในไฟล์เทมเพลต AWS SAM ( template.yaml
)
ขั้นแรก แก้ไขไฟล์เทมเพลต SAM ( template.yaml
):
RSS_LINK
เริ่มต้นชี้ไปที่ประกาศ AWS ล่าสุดRSS_LINK
ในเทมเพลตเท่านั้นScheduleExpression
ระหว่างวงเล็บSPECIAL_INSTRUCTIONS
ที่เพิ่มไปยังพร้อมท์ที่ส่งไปยังโมเดลได้ คุณสามารถใช้คำแนะนำพิเศษเหล่านี้เพื่อปรับแต่งการสรุปให้ตรงกับความต้องการของคุณได้ จากนั้นในไดเร็กทอรี sam-get-news
ให้สร้างและปรับใช้แอปพลิเคชันโดยใช้คำสั่งนี้:
sam build && sam deploy
ยืนยันการปรับใช้งานเมื่อถูกถาม
รับ URL ข่าวสารจากเอาต์พุตของคำสั่ง sam deploy
คุณสามารถดาวน์โหลดเอกสาร JSON ได้โดยใช้ curl
หรือ wget
บน News URL ตัวอย่างเช่น:
curl https://BUCKET-NAME.s3.REGION.amazonaws.com/news.json
ในไดเร็กทอรี Markdown
ให้อัปเดต NEWS_URL
ในไฟล์ markdown_news.py
เป็นเอาต์พุตของคำสั่ง sam deploy
จากนั้นรันสคริปต์ run.sh
เพื่อสร้างข่าวสารในหลายรูปแบบ
สคริปต์ run.sh
ใช้ Pandoc เพื่อแปลงเอาต์พุต Markdown ของสคริปต์ markdown_news.py
เป็น HTML, Microsoft Word และ PDF ทำตามคำแนะนำบนไซต์ Pandoc เพื่อติดตั้งเครื่องมือ
เอาต์พุต PDF จะถูกใส่เครื่องหมายความคิดเห็นตามค่าเริ่มต้นใน run.sh
เนื่องจากจำเป็นต้องติดตั้งเครื่องมือ PDF เพิ่มเติม
รหัส MicroPython ส่วนใหญ่ในโฟลเดอร์ RaspberryPiPico
เป็นรหัสเฉพาะสำหรับรุ่นจอแสดงผล e-ink สามารถดูข้อมูลเพิ่มเติมเกี่ยวกับจอแสดงผล e-ink ได้ที่นี่
หากต้องการปรับใช้สคริปต์กับไมโครคอนโทรลเลอร์ ให้ดาวน์โหลด Thonny Python IDE โอเพ่นซอร์สสำหรับผู้เริ่มต้นสำหรับระบบปฏิบัติการของคุณ
หากต้องการอนุญาตให้ไมโครคอนโทรลเลอร์ดาวน์โหลดไฟล์ JSON จากบัคเก็ต S3 คุณต้องทำให้ไฟล์นั้นเป็นแบบสาธารณะ หากต้องการดำเนินการดังกล่าว คุณต้องอัปเดตไฟล์ `template.yaml``
ขั้นแรก ให้เพิ่มคุณสมบัติต่อไปนี้ลงในทรัพยากร `NewsBucket`` (บัญชี AWS ของคุณอาจไม่อนุญาตการกำหนดค่านี้):
Properties :
PublicAccessBlockConfiguration :
BlockPublicPolicy : false
RestrictPublicBuckets : false
จากนั้น เพิ่มนโยบายทรัพยากรต่อไปนี้ (ชื่อและเส้นทางของไฟล์ควรเหมือนกับในตัวแปรสภาพแวดล้อม OUTPUT_FILE
):
NewsBucketPolicy :
Type : AWS::S3::BucketPolicy
Properties :
Bucket : !Ref NewsBucket
PolicyDocument :
Statement :
- Effect : Allow
Principal : ' * '
Action : s3:GetObject
Resource : !Sub 'arn:aws:s3:::${NewsBucket}/news.json'
เชื่อมต่อ Raspberry Pi Pico ผ่าน USB เข้ากับแล็ปท็อป จากนั้นใช้โปรแกรมแก้ไข Thonny เพื่อคัดลอกและเรียกใช้สคริปต์ display_news.py
MycroPython บนอุปกรณ์ ในสคริปต์ ให้อัปเดต URL ของไฟล์ news.json
และชื่อและรหัสผ่านของเครือข่าย WiFi ที่ Raspberry Pi Pico W จะเชื่อมต่อเพื่อดาวน์โหลดไฟล์
นี่คือโฟลว์สถาปัตยกรรมโดยรวมของเครื่องมือนี้:
โค้ดของฟังก์ชัน Lambda สามารถเรียกใช้จากบรรทัดคำสั่งได้ เพื่อลดความซับซ้อนของการทดสอบในเครื่อง หากต้องการเรียกใช้ฟังก์ชัน Lambda ภายในเครื่อง คุณต้องสร้างสภาพแวดล้อมเสมือน ( venv
) และติดตั้งการอ้างอิงสองสามรายการ
ในไดเร็กทอรีหลักของโปรเจ็กต์ ให้สร้างสภาพแวดล้อมเสมือน:
python3 -m venv .venv
จากนั้น เปิดใช้งานสภาพแวดล้อมเสมือนจริง:
source .venv/bin/activate
ในไดเร็กทอรี Lambda/sam-get-news/get-news
ให้ติดตั้งการอ้างอิงทั้งหมด:
pip install -r requirements.txt
กำหนดตัวแปรสภาพแวดล้อมที่ใช้โดยฟังก์ชัน Lambda:
export RSS_LINK=https://aws.amazon.com/about-aws/whats-new/recent/feed/
export OUTPUT_BUCKET= < YOUR_BUCKET >
export OUTPUT_FILE=news.txt
ตอนนี้คุณสามารถเรียกใช้ฟังก์ชันในเครื่องได้:
python app.py
เมื่อฟังก์ชันหยุดทำงาน คุณจะเห็นเอาต์พุตในบัคเก็ต S3 โดยใช้ AWS CLI:
aws s3 cp s3:// ${OUTPUT_BUCKET} / ${OUTPUT_FILE} - | more